提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本文通过一个按键边沿触发中断实例讲解如何配置CubeMX实现EXIT外部中断,对于STM32的外部中断进行详细的剖析。
提示:过程中会使用到的外部中断回调函数:当外部满足触发条件进入中断后,会调用该函数。
a:STM32CubeMX 6.61
b:IAR集成开发环境(8.32以上版本)
c:STlink烧录工具
d:STM32F103C6T6手工模块板
已KEY1为例,当按键处于未触发状态时按键一端为高电平一端接地,按键按下去时按键两端为低电平,因此当按键按下去是电平会有一个由高到低的变化。电平上升选上升沿,电平下降选下降沿,既有上升又有下降选择边沿。在3.4GPIO配置中会遇到。
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;
点击System Core-SYS-Debug,将默认的no debug改为Serial Wire(串行调试)
配置单片机外部的晶振作为时钟源 System Core-RCC-High Speed Clock 将默认的Disable选项改为Crystal/Ceramic Resonator
选择Clock Configuration时钟树,将默认的HSI改为HSE选项,意思是选择外部的时钟源
将主时钟源改为最大,点击回车确定,系统将自动配置相关外设参数
在GPIO mode中选择外部中断的触发方式,选择下降沿模式,配置内部上拉
在NVIC中打开使能中断,完成后点击生成代码
在main.c中打开GPIO初始化代码
在user code begin后插入中断回调函数,其中变量index++记录触发次数,因此要先定义index变量
定义全局变量index
下载程序后点击go全速运行,打开在线变量查看窗口live watch,将index拖入窗口
如果按下KEY1按键,index值发生变化则代表函数调用成功。实际操作按下按键后可以发现index值变为1.
本文通过一个按键边沿触发中断实例讲解如何配置CubeMX实现EXIT外部中断,包括上升沿,下降沿,边沿的介绍以及什么是外部中断的回调函数。