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);
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容