stm32 SysTick不进中断

在主循环中进行按键扫描时程序卡死,最后发现是卡在delay函数处,程序没有进入SysTick中断处理函数。

uint32_t timingDelay = 0;
void SysTick_Handler(void)
{
  timingDelay--;
}
void Delay_Ms(uint32_t t){
    timingDelay = t;
    while(timingDelay);
}

参考文章STM32串口中断卡死主循环问题分析,检查代码发现在初始化RTC的时候启用了中断,没有编写对应的处理函数,RTC的中断标志位没有清除导致后续的中断请求无法的到响应。
解决办法:

// 编写中断对应的处理函数,并清除中断标志位
void RTC_IRQHandler(){
    if(RTC_GetITStatus(RTC_IT_SEC)){
    }
    RTC_ClearITPendingBit(RTC_IT_SEC);
}

如果中断用不到的话也可以直接将中断关闭,我这边是因为之后要用到所以提前把中断启用了。

你可能感兴趣的:(stm32 SysTick不进中断)