FreeRTOS的configTICK_RATE_HZ
题
我使用与FreeRTOS中的5.4版本的MSP430F5438。
我有我不能找出一个有趣的问题。
基本上,当我设置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.
}
在LED闪烁,其周期大于1当第二i中的configtick_rate_hz设置为1000,发光二极管闪烁,其周期远小于1秒时,我设置节拍率到任何小于〜200
configTICK_RATE_HZ不应影响LED blinktime。
我实现更需要的信息,并会容易地提供任何需要的代码段,以帮助
解决方案
在RTOS蜱由定时器中断产生。计时器设置(不当),使得它总是在导致400kHz的固定刻度不管你设置configTICK_RATE_HZ了。由于闪烁速率被假设RTOS蜱速率被适当地由configTICK_RATE_HZ表示(portTICK_RATE_MS = 1000 / configTICK_RATE_HZ)下设置,问题随之而来。
不隶属于 StackOverflow