非阻塞延迟与阻塞延迟

时间:2018-10-09 17:24:47

标签: c delay stm32

我目前正在为我未编写的STM32F3 MCU的某些代码添加一些内容。产品将做的部分工作是在测试期间以1Hz的频率闪烁LED,直到MCU确定测试是通过还是失败。

此代码的先前编写者实现了两个延迟;一个是基于时钟速率的for循环,另一个是定时器中断。第一个延迟被称为

MsDelay(1000); //Provides approx a one second delay via a for loop 

另一个像这样

Wait(x,y); //x indicates the timer channel, y is delay in milliseconds

“ wait(x,y)”函数经过时钟滴答检查,并进行一些递增以实现此延迟。

我遇到的问题是前面提到的LED闪烁。要测试此功能,请在ISR中进行测试

Set_Led(1,1); //Turns LED1 ON
Wait(1,1000); //Wait one second 
Set_Led(2,1); //Turns LED2 ON

但是,LED点亮之间没有一秒钟的延迟。但是,如果我打电话,

Set_Led(1,1); //Turns LED1 ON
MsDelay(1000); //Wait one second 
Set_Led(2,1); //Turns LED2 ON

有一秒的延迟。我对阻塞与非阻塞延迟的区别不是很熟悉,除了阻塞会使所有外设的处理能力丧失。使用非阻塞延迟时,LED转动之间是否应该有停顿?谢谢。

0 个答案:

没有答案