任务目标:掌握CubeMX软件配置外部中断的方法
任务内容:采用中断方式检测按键,按键按下后执行:反转指示灯
硬件原理:独立按键有两种设计方式,上拉式按键和下拉式按键;
上拉式按键:按键的一端与地连接,另一端通过上拉电阻与电源VCC连接,当按键按下时, GPIO输入低电平,按键释放时,GPIO输入高电平
下拉式按键:按键的一端与VCC连接,另一端通过下拉电阻与地连接,当按键按下时,输入 高电平,按键释放时,输入低电平
下图为独立按键设置方式和Nucleo开发板的按键电路供参考
本实验设置三个按键进行中断检测分别为PA3 PA4 PA6,LED灯由PA8 PD2控制
![](https://img-blog.csdnimg.cn/img_convert/a445e08005bb690ccb0dbe6cc2033125.png)
![](https://img-blog.csdnimg.cn/img_convert/fdc93fb6a8a6e800b417d3f0c7110a65.png)
参数设置:
在GPIO配置窗口对引脚做如下配置,工作模式:下降沿触发,无上下拉电阻,具体配置如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/f1938c51944a74442fa3962177661899.png)
注意:在本实验中外部电路我已经外接了上拉电阻,因此没有使能引脚的上下拉电阻,如果您的外部电路没有上下拉电阻,需要根据具体的电路连接来使能上下拉,再确定触发方式
使能外部中断,使能这三个引脚的外部中断,如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/b4d662f4803999ad7f3a5a564533112d.png)
设置外部中断优先级,HAL初始化时已经将优先级分组设置为设置为第四组,我们将外部中断线的抢占优先级设置为15,即最低优先级,设置如下所示:
![](https://img-blog.csdnimg.cn/img_convert/8d27dc2fe16033a6b49a32e214b7c179.png)
注意:如果再实际的工程应用中,对于中断源的优先级没有特别要求时,可以不必设置中断优先级,而是使用默认的中断优先级。
程序编写
生成MDK工程后,进行应用程序编写,在/* USER CODE BEGIN 4 */和/* USER CODE END 4 */之间添加外部中断回调函数,如下图所示
![](https://img-blog.csdnimg.cn/img_convert/9a98b9cf6ca74dc85159996dab1db6f6.png)
实验现象
按键1按下灯1亮,按键2按下灯2亮,按键3按下两个灯都亮。