osDelay() 等待时间不够

Posted

技术标签:

【中文标题】osDelay() 等待时间不够【英文标题】:osDelay() do not wait enough 【发布时间】:2021-10-11 19:51:59 【问题描述】:

我为 stm32l433 编写了一个程序,并在无滴答 IDLE 模式下使用 freeRTOS,我将其更改为进入 STOP 模式而不是默认的 SLEEP 模式。 当我从 SLEEP 修改为 STOP 时,osDelay() 函数工作异常。例如,当它的参数是 100 和 1000 时,没有区别,它会产生相同的延迟。为什么会这样?

最好的。

【问题讨论】:

【参考方案1】:

FreeRTOS 的滴答率意味着您的操作系统将以 1kHz 时钟运行。它不会以毫秒为单位更改您的 osDelay(...) 延迟值。 100 和 1000 滴答率之间的区别只是操作系统的时钟频率,而不是延迟指标。

【讨论】:

你在使用 SysTick 吗? 我使用 sysTick 作为我的 RTOS 时钟和 TIM6 作为其他部分时钟 您是否尝试使用 TIM1(或任何其他未使用的 TIMx)作为 RTOS 时钟? 不,正如我所说,我使用 sysTick 作为 freeRTOS 的时钟,使用 TIM6 作为其他部分的时钟源。

以上是关于osDelay() 等待时间不够的主要内容,如果未能解决你的问题,请参考以下文章

使用 CircleCI 和 Minitest 进行前端测试:测试等待页面加载的时间不够长

FreeRTOS:osDelay 与 HAL_delay

使 CanActivate 等待 Subject 计算

FreeRTOS 卡在 osDelay 中

SQL SERVER中的OLEDB等待事件

Swift - 在继续之前等待“dataTaskWithRequest”响应