-
主函数和EXTI中断函数中同时调用delay函数,会使得systick被重复使用,从而当中断函数关闭systick时,会导致主函数的delay没有systick引起主函数堵塞。
-
这里提供一个比较简单的解决方法
-
将Delay函数中关闭systick删掉,这样调用完systick后不会关闭,就能保证主函数的delay正常运行。
- 但是可能有潜在的隐患:
-
能耗增加:Systick 定时器以固定频率触发中断,如果不关闭 Systick,系统将持续地执行中断处理程序,增加了系统的能耗消耗。
-
定时不准确:如果 Systick 定时器一直运行,可能会导致定时不准确。例如,如果使用 Systick 进行延时或定时任务,由于中断处理的不确定性,定时器的精度可能会下降。
这可能会是一个更好的解决方案:
STM32在中断里使用SysTick_delay延时引起的一些异常死机bug分析及其解决方案_stm32中断里延时-CSDN博客