原文作者:
STM32中文社区网友 三界狗
评测内容
使用外部中断获取按键的状态,并调节LED灯闪烁的频率。
1、STM32L552ZET6Q;
2、板载红色LED(LD3);
3、板载蓝色按键(USER)。
将按键引脚配置成外部中断模式,打开上回创建的STM32CubeMX工程,将芯片的PC13引脚按照步骤配置成下图所示的设置,第五步为设置程序中的引脚别名,可根据自己的需求进行设置
使能外部中断并设置中断优先级,按照下图所示步骤及内容设置,中断优先级可自己根据需要设置
保存工程并生成代码工程。
打开代码工程,发现main.c文件中的GPIO口配置函数多了如下两行设置中山优先级和使能中断的代码
在stm32l5xx_it.c文件中也多了一段中断服务函数的代码
跳转到HAL_GPIO_EXTI_IRQHandler函数的实现,该函数的内容如下
其中的HAL_GPIO_EXTI_Rising_Callback和HAL_GPIO_EXTI_Falling_Callback函数就是外部中断的回调函数,两个函数内分别有如下注释:
意思是这两个函数在用户需要的时候可以在用户文件上实现,实现的内容就是用户需要本次中断执行的内容。
回到main.c文件,添加如下函数的实现
USER_BUTTON为一个全局变量,在文件开头进行定义:_Bool USER_BUTTON = 0;
在主函数的循环中添加如下代码;
一切就绪,重新编译连接并
下载到开发板上,按下按键观察程序运行情况,还是跟上回的一样,实现了使用外部中断检测按键对LED的闪烁频率进行调节。
得益于STM32CubeMX的强大功能以及HAL库的完美包装,外部中断的实现似乎并没有那么难(相比于标准固件库来说真的是简单了不少),只需要自己实现一个回调函数就好了,对快速开发是方便了不少。好了,本次评测就到此结束,感谢您的阅读。