STM32CubeMX教程3 — 外部中断
前期准备: ①:STM32硬件(我的是STM32F103ZET6) ②:STM32CubeMX Keil5
实验目的
通过按键(Key)外部中断的方式控制一个灯的亮灭 (我的Key对应PE4)
思维导图
新建工程
1.设置时钟频率; 2.设置debug; 3.配置PE5为输出,配置GPIO; 4.配置PE4为外部中断:
这是我的设置 5.使能中断,配置优先级 ps: 编号越小,表明它的优先级别越高 抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A) 响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达, 则先处理响应优先级高的中断
6.生成工程
Keil5编程
1.编译一下,无error,无warning; 2.先看外部中断初始化代码: 在stm.f1xx_it.c中找到 HAL_GPIO_EXTI_IRQHandler();找到这个函数定义(F12) 再找到画红线函数的定义 3.编写代码 __weak说明是个虚函数,我们来编写这个函数,我们复制这个函数名到main.c里
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_4)
{
HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);
}
}
4.编译烧录复位,这样按键就会控制LED灯的亮灭。
外部中断例程
|