我使用的是带有FreeRTOS 5.4版本的MSP430f5438。
我有一个有趣的问题,我不能解决。
基本上,当我将configTICK_RATE_HZ设置为不同的值时,发光二极管闪烁得更快或更慢;它应该保持不变的速率。我设置的configTICK_RATE_HZ越高,它闪烁的速度就越慢,当我设置TICK_RATE越低,它闪烁的速度就越快。
vTaskDelayUntil( &xLastFlashTime,xFlashRate );是这样的,不管configTICK_RATE_HZ是什么,vTaskDelayUntil每秒只能闪烁一次。我一步一步检查了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以远小于1s的周期闪烁
configTICK_RATE_HZ不应影响指示灯闪烁时间。
我意识到需要更多的信息,并随时提供任何需要帮助的代码片段。
发布于 2010-02-15 10:55:32
RTOS节拍由定时器中断产生。定时器的设置(不正确)使得无论您将configTICK_RATE_HZ设置为什么,它总是在400 The处产生固定的滴答声。由于闪烁速率是在假设RTOS滴答速率由configTICK_RATE_HZ (portTICK_RATE_MS = 1000/configTICK_ rate _HZ)正确表示的假设下设置的,因此问题随之而来。
https://stackoverflow.com/questions/2249185
复制相似问题