文章目录
基于STM32CubMX和HAL库的外设开发
第七讲 GPIO作为外部中断
一、外部中断简介
- STM32中含有多个外部中断号(外部中断号的命名与对应引脚的最后一个引脚号保持一致EXTIx),
- 一个外部中断号对应了多个GPIO引脚(所以当使用其中一个引脚产生外部中断的时候,其余的引脚便不可以使用外部中断了)
- 中断号对应的地址叫做中断向量(中断地址),不同的中断号对应不同的中断地址,或者多个中断号对应一个中断地址(一一对应或者是多一对应的关系),
- 不同中断地址的作用就是,在每个中断号对应的代码中编写程序就可以通过指针直接跳到相应的中断地址,从而达到多个控制的作用。
- 抢占优先级:级别高的优先级可以打断级别低的优先级
- 子优先级 :级别高的优先级不可以打断级别低的优先级,但是当中断同时到达时,级别高的优先级优先得到执行(不可以抢)
- STM32中用户可以配置4位优先级,
二、示例一:按键的中断识别
即每按一次按键,led0状态反转,我们还是结合具体实例来了解终端功能的实现
原理图如下,可以结合第二讲 LED灯的点亮来对比理解
分析:
按键触发:1-0-1(可以下降沿也可以上升沿触发函数),然后在中断函数中使引脚的电平取反
1、配置引脚为外部中断模式
2、配置GPIO参数,触发沿,上下拉
**注意注意:**这里因为原理图上显示按键KEY1没法输出高电平
3、到NVIC中使能相应中断(有需要的可以配置优先级)
4、生成代码
5、编写代码
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
}
如果按键容易抖动,为了避免