我正在使用带有 FreeRTOS 5.4 版的 MSP430f5438。
我有一个有趣的问题,我无法弄清楚。
基本上,当我将 configTICK_RATE_HZ 设置为不同的值时,LED 会更快或更慢地闪烁;它应该保持不变。我将 configTICK_RATE_HZ 设置得越高,它就会闪烁得越慢,而当我将 TICK_RATE 设置得越低时,它就会越快闪烁。
vTaskDelayUntil(&xLastFlashTime, xFlashRate); 这样无论 configTICK_RATE_HZ 是什么,LED 都应该每秒闪烁一次。我一步一步检查了 xFlashRate 以确保。它总是 = 到 configTICK_RATE_HZ。代码:
xFlashRate = ledFLASH_RATE_BASE;//my flash base rate is 1000ms
xFlashRate /= portTICK_RATE_MS; //so xFlashrate = whatever configTICK_RATE_HZ equals
/* We need to initialise xLastFlashTime prior to the first call to vTaskDelayUntil().*/
xLastFlashTime = xTaskGetTickCount();
for(;;) {
vTaskDelayUntil( &xLastFlashTime, xFlashRate ); vParTestToggleLED( uxLED );
flashled();//this should happen every 1 second.
}
当我将 configtick_rate_hz 设置为 1000 时,LED 闪烁的周期大于 1 秒,当我将滴答率设置为小于 ~200 时,LED 闪烁的周期远小于 1 秒
configTICK_RATE_HZ 不应影响 LED 闪烁时间。
我意识到需要更多信息,并且会随时提供所需的任何代码片段来提供帮助。