写在前面——

        本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板外部中断的使用。

目录

一、硬件平台

二、软件平台

三、外部中断原理图

四、配置过程

五、编写函数

六、总结


 

一、硬件平台

        嵌入式竞赛实训平台(CT117E-M4)是北京国信长天科技有限公司设计、生产的一款“蓝桥杯全国软件与信息技术专业人才大赛–嵌入式设计与开发科目”专用竞赛平台,平台STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提供丰富的实验场景。

CT117E-M4产片图片

二、软件平台

 KEIL5,STM32CubeMX

三、外部中断原理图

        通过查阅STM32G4的数据手册我们可以找到如下引脚对应关系,如果仔细看一下,很有规律,很容易就能记住,现在我们通过CubeMX来配置,这些我们只需要在数据手册当中找到就可以,比赛时官方会提供的。

 

 外部中断引脚对应

四、配置过程

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

 

基本配置步骤:

  1. 点击需要配置的引脚   
  2. 设置MODE为下降沿触发(External lnterrupt Mode with Falling edge trigger detection)       
  3. 上拉、下拉或者不拉视情况而定
  4. 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可以找到,我们该如何寻找这个函数呢?

六、总结

 外部中断的介绍笔记就到这里了~如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐