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() 等待时间不够的主要内容,如果未能解决你的问题,请参考以下文章