目录
一、中断初始化配置
1.打开 STM32CubeMX 软件,在工具栏中选择 "Pinout & Configuration" 选项卡。
2.选择需要使用的 GPIO 引脚,右键单击选择 "GPIO_EXTI"。在弹出的上下文菜单中选择 "External Interrupt Mode",并选择相应的中断触发方式。
3.在配置选项卡中,在 "Mode" 选项中选择外部中断模式。在 "External Interrupt" 选项中选择对应的 "EXTIx" 中断线。
4.配置 NVIC (Nested Vectored Interrupt Controller),使能中断线,并设置中断优先级。
抢占优先级和响应优先级的联系和区别(重要原则):
(1).高优先级的抢占优先级可以打断正在进行的低抢占优先级中断的;
(2).抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断;
(3).抢占优先级相同的中断,当两个中断同时发生的情况下,哪一个的响应优先级高,哪个先执行;
(4).如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行哪个中断。
二、STM32CubeMX配置
1.打开高速和低速时钟,时钟源选择外部时钟源
将定时器的时钟设为 72M
2.引脚配置
用PB6作为中断输入,配置为GPIO_EXTI,由于PB6引脚通过按键直接接地,所以将引脚拉高也就是Pull-up ,检测他的下降沿,作为中断源输入,PC13设置为GPIO_Output,输出高电平
接着GPIO mode配置下降沿,pull-up 上拉
GPIO mode:
External Interrupt Mode with Rising edge trigger detection//上升沿触发
External Interrupt Mode with Falling edge trigger detection//下降沿触发
External Interrupt Mode with Rising/Falling edge trigger detection//上升沿或下降沿触发
pc13配置高电平
3. 使能外部中断线
4.配置中断优先级
5.生成代码
三、Keil代码配置
1.重写中断回调函数
在 main.c 中的 USER CODE BEGIN 0-4 编程范围内重写外部中断的回调函数:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_6)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
}
}
2.编译后,点击LOAD下载
链接:https://pan.baidu.com/s/1LdbVcM8rZB4f4hNL1ctALw 密码:j9na