从现象上来说,确实是阻塞了CPU,
延时的目的就是让CPU停住一段时间。
systick嘀嗒定时器在延时的时候,一直判断标志位,用while语句,这样cpu就一直停在这里了,知道标志位置位,再跳出等待,这样就实现精准延时了。
还有问题,欢迎追问。
定时器仍在计数,并会产生中断,
是否中断要看在你现在的中断优先级以及是否关闭了中断响应
如果优先级比Systick中断高或关闭了中断响应,那么你的中断处理程序一定要耗时少,否则会影响Systick中断的执行时机,或产生两次中断了才执行一次
无法做到不适用cpu,但是有方法可以让延时的时候不让cpu原地等待。
举个周期性执行程序但不让CPU等待的例子:
你设置一个足够大变量为clock,初始值为零,把它放在Systick中断函数里面执行clock++;
假设Systick中断周期为1ms,那么你再设置一个变量为clockA,初始值为0,在再主循环使用
if(clock-clockA > 1000)
{
clockA = clock;
……;
}
这样就可以不让CPU等待,但又达到了周期性处理的目的。
只想执行一次的话,就加一个条件判断就好了,这点就自己摸索吧。
以上就是关于在stm32中利用systick来延时,这阻塞了CPU吗 执行到延时程序的时候,CPU就一直停在那里等待时间到达么全部的内容,包括:在stm32中利用systick来延时,这阻塞了CPU吗 执行到延时程序的时候,CPU就一直停在那里等待时间到达么、ucos *** 作系统中的时钟节拍,在进入别的中断时,时钟节拍函数仍在计时吗、怎么实现Systick做一秒钟延时不占用CPU-STM32-F0/F1/F2专区等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)