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

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

最好的。

【问题讨论】:

    标签: c arm stm32 freertos


    【解决方案1】:

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

    【讨论】:

    • 你在使用 SysTick 吗?
    • 我使用 sysTick 作为我的 RTOS 时钟和 TIM6 作为其他部分时钟
    • 您是否尝试使用 TIM1(或任何其他未使用的 TIMx)作为 RTOS 时钟?
    • 不,正如我所说,我使用 sysTick 作为 freeRTOS 的时钟,使用 TIM6 作为其他部分的时钟源。
    猜你喜欢
    • 2019-10-27
    • 2020-04-06
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多