踩坑---中断中调用系统定时器延时卡死
背景
配置外部中断作为按键输入时,调用了系统滴答定时器为基准的延时。然后每次一按按键,单片机就卡死。一开始怀疑时中断没有配置好。反复研究中断配置是否出现错误,最后debug出来,发现卡在了
// 3. 等待计数值变为0,判断CTRL标志位COUNTFLAG是否为1while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG) == 0){}
原因
系统滴答计时器默认的优先级时最低的,外部中断设置的优先级比它高,就会导致滴答计时器卡住。
解决办法
-
不在中断中使用该延时。
-
关闭定时器中断。