Timer 弗里特斯慢速系统

Timer 弗里特斯慢速系统,timer,embedded,stm32,freertos,Timer,Embedded,Stm32,Freertos,我在FreeRTOS上遇到了一个问题,systick()速率似乎是预期速率的1/2。所有定时器或任务延迟功能所需时间约为2倍。这在版本8.2.0和8.2.3中使用STM32F100处理器进行了验证 还有另外一个帖子。该开发人员使用的是MSP430,并声称其滴答频率为400Hz,而预期滴答频率为1000Hz RCC寄存器配置似乎正确。如果我在systick正确的地方创建了一个非FreeRTOS项目,它的RCC配置与FreeRTOS版本中的配置相同 建议?当我读到: 我创建了一个非常简单的任务,延迟

我在FreeRTOS上遇到了一个问题,systick()速率似乎是预期速率的1/2。所有定时器或任务延迟功能所需时间约为2倍。这在版本8.2.0和8.2.3中使用STM32F100处理器进行了验证

还有另外一个帖子。该开发人员使用的是MSP430,并声称其滴答频率为400Hz,而预期滴答频率为1000Hz

RCC寄存器配置似乎正确。如果我在systick正确的地方创建了一个非FreeRTOS项目,它的RCC配置与FreeRTOS版本中的配置相同

建议?

当我读到:

我创建了一个非常简单的任务,延迟4秒并报告 实际经过的滴答声数。滴答声是正确的,但实际上 延迟约为8秒

当我读到这篇文章时,我的想法是,如果滴答数的延迟是正确的,但是时间是不同的,那么这只是CPU时钟以不同的频率运行的一个例子。也许配置CPU时钟频率是错误的。然而,你写下:

#undef OS_USE_TRACE_SEMIHOSTING
#define OS_USE_TRACE_ITM

你提到半托管。你在使用半托管吗?如果是,请不要这样做,它会扰乱您的计时,因为它会在输出到主机时停止CPU-这可能是您看到的问题。

发布您的RCC配置。MCO引脚(微控制器时钟输出)可用吗?如果是这样,您可以将该引脚配置为输出不同的内部时钟(例如SYSCLK),并使用示波器测量该引脚处的频率,以检查时钟是否符合您的预期。如果没有,则可能是连接了错误的外部振荡器,或者时钟配置错误。请确保在FreeRTOSConfig.h中正确设置了
configCPU\u CLOCK\u HZ
configTICK\u RATE\u HZ
。还要查看port.c中的
vPortSetupTimerInterrupt()