当前位置:首页 » 《随便一记》 » 正文

STM32CubeMX笔记(4)--外部中断,使用按键KEY检测_杰尼君的博客

5 人参与  2021年12月30日 17:06  分类 : 《随便一记》  评论

点击全文阅读


外部中断,使用按键KEY检测

  • 1、STM32CubeMX引脚设置和代码生成
  • 2、编写相关中断的C文件
    • 1.相关中断函数:
    • 2.相关中断函数的编写:
    • 3.相关中断的优先级顺序:
  • 3、编译工程文件,使用ST-Link烧录,测试按键的外部中断


1、STM32CubeMX引脚设置和代码生成

1.正点原子mini开发板KEY的电路图,正点原子mimi板的电路:WK_UP–PA0 KEY_0–PC5 KEY_1–PA15。根据电路图可以知道,需要将WK_UP的输入设置为上升沿触发,将KEY_0KEY_0设置为下降沿触发
注:
高电平有效使用上升沿触发,电平由低到高;
低电平有效使用下降沿触发,电平由高到低;

2.在STM32CubeMX软件中,配置相对应的引脚及引脚相关模式GPIO_EXTI*,并在软件右侧对引脚进行详细配置,并在用户标签项User Label中填进WK_UP等标签备注。

(这个标签项有利于帮助我们查看各个引脚的使用情况及相关代码的宏定义,相关的宏定义会在生成的代码main.h中进行定义。)

3.在STM32CubeMX软件右侧,选择System Core项,点击NVIC项,勾选对应的中断总线。

4.在STM32CubeMX软件右上角,点击GEBERATE CODE项,生成代码。

在这里插入图片描述
在这里插入图片描述


2、编写相关中断的C文件

1.相关中断函数:

相关的中断函数在stm32f1xx_it.c文件中可以查看得到。
HAL_GPIO_EXTI_IRQHandler()这个函数中,我们可以看到相关中断函数的处理。
在这里插入图片描述
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)函数的简介:
进入相关的中断处理,先判断该个IO口是否中断,然后清除标志位,再进入IO口的回调函数中HAL_GPIO_EXTI_Callback(GPIO_Pin)

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
  /* EXTI line interrupt detected */
  if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}

2.相关中断函数的编写:

将相关的HAL_GPIO_EXTI_Callback(GPIO_Pin)复制到main.c中的用户代码区进行编写,当然也可以建立相关的exti.hexti.c文件。

中断函数中回调函数的编辑情况如下:

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == WK_UP_Pin)
		led_bling_sum(3,500);		//闪烁3次,间隔500ms
	else if(GPIO_Pin == KEY_0_Pin)
		led_bling_sum(6,500);		//闪烁6次,间隔500ms
	else if(GPIO_Pin == KEY_1_Pin)
		led_bling_sum(6,50);		//闪烁6次,间隔50ms
}

/* USER CODE END 4 */

3.相关中断的优先级顺序:

由于void led_bling_sum(uint32_t sum,uint32_t time)函数中使用了void HAL_Delay(uint32_t Delay)延时函数。在中断中使用延时函数,因此必须要考虑中断的优先级顺序
中断的优先级顺序为:0最高级,1次高级,数字越大优先级越低。
在这里插入图片描述


3、编译工程文件,使用ST-Link烧录,测试按键的外部中断


点击全文阅读


本文链接:http://zhangshiyu.com/post/32420.html

中断  函数  相关  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1