我遇到了FreeRTOS的问题,似乎systick()速率是预期速率的1/2。所有定时器或任务延迟功能大约需要2倍的时间。这在使用STM32F100处理器的版本8.2.0和8.2.3中得到了验证。
还有另一篇帖子looks very similar。该开发人员正在使用MSP430并声称当预期1000Hz滴答率时,滴答率为400Hz。
RCC寄存器配置似乎是正确的。如果我创建一个非-FreeRTOS项目,其中systick是正确的,它具有与FreeRTOS版本相同的RCC配置。
建议?
答案 0 :(得分:2)
当我读到:
我创建了一个非常简单的任务,延迟4秒并报告 实际经过的刻度数。刻度是正确的但实际上是正确的 延迟大约是8秒。
当我读到这个时,我的想法是,如果延迟在刻度数上是正确的,但时间不同,那么这只是CPU时钟以与您认为的频率不同的频率运行的情况。也许configCPU_CLOCK_HZ是错误的。但是,那么你写:
#undef OS_USE_TRACE_SEMIHOSTING
#define OS_USE_TRACE_ITM
你提到半主机。你在使用半主机吗?如果是这样,不要这样做,它会弄乱你的时间,因为它会在输出到主机时停止CPU - 这可能是你看到的问题。