STM32CubeMX系列03——外部中断

====>>> 文章汇总(有代码汇总) <<<====

1. 所用硬件

正点原子Mini板,主控 STM32F103RCT6.

用到的外设:LED、按键。原理图:
在这里插入图片描述

2. 生成工程

2.1. 创建工程选择主控

在这里插入图片描述

2.2. 系统配置

配置时钟源
在这里插入图片描述
配置debug模式(如果需要ST-Link下载及调试可以勾选)
在这里插入图片描述
配置时钟树(可以直接在HCLK那里输入72,然后敲回车会自动配置)
在这里插入图片描述

2.3. 配置工程目录

在这里插入图片描述
勾选上会单独生成 c文件和头文件
在这里插入图片描述

2.4. 配置用到的外设

PA8:LED0。
在这里插入图片描述
PC5:KEY0,配置中断模式。
在这里插入图片描述
设置按键为上拉模式,下降沿触发。
在这里插入图片描述

2.5. 中断优先级配置

中断优先级简介:
NVIC在 ARM Conrtex-M 内核中,用一个 8 位的寄存器来配置,共有256级中断。但在 STM32 中,只使用该寄存器高 4 位来配置,也就是一共16 级中断。
实际上STM32中将其划分为5个分组。

优先级分组 抢占优先级占的位数 子优先级占的位数
NVIC_PriorityGroup_0 0 bit 4 bit
NVIC_PriorityGroup_1 1 bit 3 bit
NVIC_PriorityGroup_2 2 bit 2 bit
NVIC_PriorityGroup_3 3 bit 1 bit
NVIC_PriorityGroup_4 4 bit 0 bit

比如
设置为 NVIC_PriorityGroup_2 的话

  • 抢占优先级占的位数 就只能设置 0 1 2 3
  • 子优先级占的位数 也只能设置 0 1 2 3

这里比较简单,没必要用子优先级。因此设置分组为 NVIC_PriorityGroup_4,中断随便给个2吧。
在这里插入图片描述

2.6. 生成代码

配置完成之后,点击生成代码。
在这里插入图片描述

3. 目录结构

生成的工程目录如下图:
Core:软件生成的用到的外设的 源文件和头文件,main.c也在这。等价于MDK中的User + Hardware。
Drivers:HAL库驱动文件、芯片启动文件。
MDK-ARM:MDK工程文件。进入MDK-ARM目录,即可打开工程。

4. 运行原理及代码分析

打开工程,在stm32f1xx_it.h中可以看到函数EXTI9_5_IRQHandler,显然,这是中断处理函数,在中断处理函数中又调用了函数HAL_GPIO_EXTI_IRQHandler(KEY0_Pin);
在这里插入图片描述
然后我们去看看函数HAL_GPIO_EXTI_IRQHandler(KEY0_Pin);都干了什么事。在stm32f1xx_hal_gpio.c中可以看到此函数的定义。此函数读取寄存器判断是否发生了中断,然后把中断标志清楚,又调用了函数HAL_GPIO_EXTI_Callback(GPIO_Pin); 这个函数称为EXIT中断的回调函数,用来处理所有发生的EXIT中断事件。
在这里插入图片描述
然后,再去看看这个回调函数HAL_GPIO_EXTI_Callback(GPIO_Pin);是干啥的。还是在这文件中,定义如下。
在这里插入图片描述
可以看到这个函数是个弱函数,用户可以再次定义该函数。也就是说,我们可以重新定义这个函数,并在函数中编写我们处理中断的逻辑。

注释写的也很清楚:
不应修改此函数,当需要回调时,可以在用户文件中实现HAL_GPIO_EXTI_callback

这段放在哪都行。大的工程可以创建一个文件放进去;这里直接放在main.c中了。

/* USER CODE BEGIN PFP */

/* USER CODE BEGIN 2 */

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    
    
	HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
}

/* USER CODE END PFP */

别的地方什么都不用写。

另外,不管是串口、DMA、ADC等 所有和中断相关的分析方法,都是和这里类似的,在stm32f1xx_it.h文件中查看入口,然后一步步往下找。

5. 效果验证

编译、烧录、查看结果。

效果:按下按键LED反转。

实际上,按键都会有个 HAL_delay(20) 用来防止抖动,但是在中断中不能使用这个延时,因为延时的优先级是最低的。因此,这里的按键其实不是很稳定。

猜你喜欢

转载自blog.csdn.net/weixin_46253745/article/details/127805136