我正在使用MSP430f5438和FreeRTOS 5.4版本。但是我遇到了一个奇怪的问题,无法解决。
基本上,当我将configTICK_RATE_HZ设置为不同的值时,LED的闪烁速度会变快或变慢;它应该保持相同的速率。当我将configTICK_RATE_HZ设置得更高时,它会闪烁得更慢,而当我将TICK_RATE设置得更低时,它会闪烁得更快。
vTaskDelayUntil(&xLastFlashTime,xFlashRate)使LED每秒只闪烁一次,无论configTICK_RATE_HZ设置为什么。我已经逐步检查了xFlashRate以确保它始终等于configTICK_RATE_HZ。代码如下:
基本上,当我将configTICK_RATE_HZ设置为不同的值时,LED的闪烁速度会变快或变慢;它应该保持相同的速率。当我将configTICK_RATE_HZ设置得更高时,它会闪烁得更慢,而当我将TICK_RATE设置得更低时,它会闪烁得更快。
vTaskDelayUntil(&xLastFlashTime,xFlashRate)使LED每秒只闪烁一次,无论configTICK_RATE_HZ设置为什么。我已经逐步检查了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秒,而当我将tick rate设置为小于~200时,LED的闪烁周期远小于1秒。
configTICK_RATE_HZ不应影响LED闪烁时间。
我意识到需要更多信息,并会随时提供所需的代码片段来帮助解决问题。