中断配置步骤:
使能外设中断 (如定时器更新中断)
配置 NVIC:设置优先级、使能中断
编写中断服务函数
外设中断使能:(以定时器为例)
TIM2->DIER |= 1<<0; // 使能定时器更新中断
NVIC 配置:
NVIC_SetPriority(TIM2_IRQn, 2); // 设置优先级(0-15,数值越小优先级越高)
NVIC_EnableIRQ(TIM2_IRQn); // 使能中断
中断服务函数编写规则:
函数名固定 (如void TIM2_IRQHandler(void))
内部需检查中断标志并清除
代码应简洁高效,避免耗时操作
示例:按键中断 (外部中断 0)
// 1. 配置GPIO为输入并使能外部中断
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; // 下降沿触发
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 2. 配置NVIC
NVIC_SetPriority(EXTI0_IRQn, 1);
NVIC_EnableIRQ(EXTI0_IRQn);
// 3. 中断服务函数
void EXTI0_IRQHandler(void){
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); // 处理中断并清除标志
}
// 4. 回调函数(可选)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
if(GPIO_Pin == GPIO_PIN_0)
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1); // 按键按下时翻转LED
}





2351

被折叠的 条评论
为什么被折叠?



