c - 非阻塞延迟与阻塞延迟
问题描述
我目前正在为我没有编写的 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 转动之间是否应该有暂停?谢谢你。
解决方案
推荐阅读
- angular - 对打字稿范围感到困惑
- java - Java屏幕如何使输入行始终在下方
- reactjs - Setting first char uppercase when setting state in react
- c++ - 仅在提供的差异内将警告变为错误
- omnet++ - omnet++ 聚合器模块中的消息接收错误
- android - Jenkins Android build fails - can't build libwebviewchromium.so
- sql - Count(*) 不返回“1”,尽管我的 &inputs 是正确的?
- google-sheets - 将行插入使用 IMPORTRANGE 导入的数据中
- sql - 根据过去 12 个月的活动分配 Y/N 标志
- sql - 尝试创建一个页面以将 CSV 文件读入 DataTable 然后插入到 SQL