④【蓝桥杯】STM32G4嵌入式竞赛实训平台(CT117E-M4)学习——中断
本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板外部中断的使用。
写在前面——
本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板外部中断的使用。
目录
一、硬件平台
嵌入式竞赛实训平台(CT117E-M4)是北京国信长天科技有限公司设计、生产的一款“蓝桥杯全国软件与信息技术专业人才大赛–嵌入式设计与开发科目”专用竞赛平台,平台STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提供丰富的实验场景。

CT117E-M4产片图片
二、软件平台
KEIL5,STM32CubeMX
三、外部中断原理图
通过查阅STM32G4的数据手册我们可以找到如下引脚对应关系,如果仔细看一下,很有规律,很容易就能记住,现在我们通过CubeMX来配置,这些我们只需要在数据手册当中找到就可以,比赛时官方会提供的。

外部中断引脚对应
四、配置过程
在这里我们就把硬件平台上的按键B1(与PB0连接),当B1被按下时PB0会接地,即它的电平会被拉低,我们就以此为根据进行中断的配置:



基本配置步骤:
- 点击需要配置的引脚
- 设置MODE为下降沿触发(External lnterrupt Mode with Falling edge trigger detection)
- 上拉、下拉或者不拉视情况而定
- NVIC Settings 一栏使能接收中断
五、编写函数
编写中断回调函数:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(GPIO_Pin);
/* NOTE: This function should not be modified, when the callback is needed,
the HAL_GPIO_EXTI_Callback could be implemented in the user file
*/
if(GPIO_Pin == GPIO_PIN_0 ) //按键B1被按下
{
HAL_Delay(20);//延时消抖
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == 0 )
{
led_status_off(0x42);
HAL_Delay(100);
led_status_on(0x42);
HAL_Delay(100);
led_status_off(0x42);
HAL_Delay(100);
led_status_on(0x42);
HAL_Delay(100);
}
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
}
}
编写基本步骤:
- 在以下 if 函数内编写一个中断的的内容,以为使用多个中断做好铺垫
if(GPIO_Pin == GPIO_PIN_x ){ }
- 在退出中断之前调用以下函数以清除标志位
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
NOTE:这里简要介绍一下清楚标志位所用的函数,这个函数其实是一个宏定义,就是用来清楚标志位的
#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__))
在stm32g4xx_hal_gpio.h可以找到,我们该如何寻找这个函数呢?

六、总结
外部中断的介绍笔记就到这里了~如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)