以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、前言
  • 二、准备事项
    • 2.1:板载资料
    • 2.2:软硬件准备
    • 2.3:电路分析
    • 2.4:代码调用
  • 三、CUBE MX配置
    • 3.1:SYS配置
    • 3.2:RCC配置
    • 3.3:Clock Configuration配置
    • 3.4:GPIO配置
  • 四、库函数的使用
  • 五、下载程序验证代码
  • 总结

一、前言

本文通过一个按键边沿触发中断实例讲解如何配置CubeMX实现EXIT外部中断,对于STM32的外部中断进行详细的剖析。
提示:过程中会使用到的外部中断回调函数:当外部满足触发条件进入中断后,会调用该函数。

二、准备事项

2.1:板载资料

以stm32F103C6T6为核心的手工模块板
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第1张图片

2.2:软硬件准备

a:STM32CubeMX 6.61
b:IAR集成开发环境(8.32以上版本)
c:STlink烧录工具
d:STM32F103C6T6手工模块板

2.3:电路分析

以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第2张图片
已KEY1为例,当按键处于未触发状态时按键一端为高电平一端接地,按键按下去时按键两端为低电平,因此当按键按下去是电平会有一个由高到低的变化。电平上升选上升沿,电平下降选下降沿,既有上升又有下降选择边沿。在3.4GPIO配置中会遇到。

2.4:代码调用

  GPIO_InitStruct.Pin = GPIO_PIN_3; //外部中断PIN号
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; //外部中断下降沿触发
  GPIO_InitStruct.Pull = GPIO_PULLUP; //开启上拉
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);//设置中断优先级
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);//使能中断
//外部中断回调函数:当外部满足触发条件进入中断,会调用本函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin==GPIO_PIN_3)
    {
        index++;
    }
}
//定义全局变量
uint32_t index=0;

三、CUBE MX配置

3.1:SYS配置

点击System Core-SYS-Debug,将默认的no debug改为Serial Wire(串行调试)
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第3张图片

3.2:RCC配置

配置单片机外部的晶振作为时钟源 System Core-RCC-High Speed Clock 将默认的Disable选项改为Crystal/Ceramic Resonator
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第4张图片

3.3:Clock Configuration配置

选择Clock Configuration时钟树,将默认的HSI改为HSE选项,意思是选择外部的时钟源
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第5张图片

将主时钟源改为最大,点击回车确定,系统将自动配置相关外设参数
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第6张图片

3.4:GPIO配置

在管脚配置中选择GPIO_EXTI3,并命名为KEY1
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第7张图片

在GPIO mode中选择外部中断的触发方式,选择下降沿模式,配置内部上拉
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第8张图片
在NVIC中打开使能中断,完成后点击生成代码
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第9张图片

四、库函数的使用

在main.c中打开GPIO初始化代码
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第10张图片
在user code begin后插入中断回调函数,其中变量index++记录触发次数,因此要先定义index变量
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第11张图片
定义全局变量index
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第12张图片

五、下载程序验证代码

下载程序后点击go全速运行,打开在线变量查看窗口live watch,将index拖入窗口
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第13张图片
如果按下KEY1按键,index值发生变化则代表函数调用成功。实际操作按下按键后可以发现index值变为1.
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断_第14张图片

总结

本文通过一个按键边沿触发中断实例讲解如何配置CubeMX实现EXIT外部中断,包括上升沿,下降沿,边沿的介绍以及什么是外部中断的回调函数。

你可能感兴趣的:(stm32,单片机,arm)