HAL库+CubeMX 按键的外部中断
- 1、内容
- 2、按键原理图
- 3、按键软件消抖
- 4、外部中断
- 5、程序学习
-
- 5.1、外部中断在cubeMX中的配置
- 5.2、HAL_GPIO_ReadPin函数
- 5.3、中断回调函数介绍
- 5.4、程序中的前后台
- 6、按键中断实现三色LED灯切换程序
- Copy From 大疆学习文档
1、内容
2、按键原理图
4、外部中断
外部中断通常是GPIO的电平跳变引起的中断。在stm32中,每一个GPIO都可以作为外部中断的触发源,外部中断一共有16条线,对应着GPIO的0-15引脚,每一条外部中断都可以与任意一组的对应引脚相连,但不能重复使用。例如外部中断Line0可以和PA0,PB0,PC0等任意一条0 引脚相连,但如果已经和PA0相连,就不能同时和PB0,PC0其他引脚相连。
外部中断支持GPIO的三种电平跳变模式,如下所示:
5、程序学习
5.1、外部中断在cubeMX中的配置
STM32的GPIO提供外部中断功能,当GPIO检测到电压跳变时,就会发出中断触发信 给STM32,使程序进入外部中断服务函数。
将PA0 引脚设置为按键的输入引脚,将其设置为外部中断模式。
接着点开GPIO标签页,对引脚进行如下设置,将GPIO模式设置为升降沿触发的外部中断,上下拉电阻设置为上拉电阻,最后设置用户标签为KEY。
外部中断一共有三种触发方式:上升沿触发,下降沿触发和上下沿均触发,其异同可见下表:
5.3、中断回调函数介绍
每当产生外部中断时,程序首先会进入外部中断服务函数。在stm32f4xx_it.c中,可以找到函数EXTI0_IRQHandler,它通过调用函数HAL_GPIO_EXTI_IRQHandler对中断类型进行判断,并对涉及中断的寄存器进行处理,在处理完成后,它将调用中断回调函数HAL_GPIO_EXTI_Callback,在中断回调函数中编写在此次中断中需要执行的功能。
5.4、程序中的前后台
在单片机中,中断就是前台,而循环就是后台,中断只在中断源产生时才会进行相应的处理,而循环则一直保持工作,只有被中断打断时才会暂停。前后台程序的异同可以参见下表:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!