我使用与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)下设置,问题随之而来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top