踩坑---中断中调用系统定时器延时卡死

踩坑---中断中调用系统定时器延时卡死

背景

​ 配置外部中断作为按键输入时,调用了系统滴答定时器为基准的延时。然后每次一按按键,单片机就卡死。一开始怀疑时中断没有配置好。反复研究中断配置是否出现错误,最后debug出来,发现卡在了

	// 3. 等待计数值变为0,判断CTRL标志位COUNTFLAG是否为1
	while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG) == 0)
	{}

image-20250208235331847

原因

系统滴答计时器默认的优先级时最低的,外部中断设置的优先级比它高,就会导致滴答计时器卡住。

解决办法

  1. 不在中断中使用该延时。

  2. 关闭定时器中断。

    image-20250209001210607

posted @ 2025-02-09 00:14  Arsun  阅读(295)  评论(0)    收藏  举报