Day16:中断配置与使用

中断配置步骤:
使能外设中断 (如定时器更新中断)
配置 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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值