FreeRTOSのバージョン5.4でMSP430f5438を使用しています。
私は理解できない面白い問題を抱えています。
基本的に、configTICK_RATE_HZを別の値に設定すると、LEDの点滅が速くなったり遅くなったりします。同じレートを維持する必要があります。configTICK_RATE_HZを高く設定すると点滅が遅くなり、TICK_RATEを低く設定すると点滅が速くなります。
vTaskDelayUntil(&xLastFlashTime、xFlashRate); configTICK_RATE_HZが何であっても、LEDは1秒に1回だけ点滅するようになっています。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に設定すると、1秒を超える周期でLEDが点滅し、ティックレートを200未満に設定すると、1秒よりはるかに短い周期でLEDが点滅します。
configTICK_RATE_HZは、LEDの点滅時間に影響を与えないようにする必要があります。
より多くの情報が必要であり、役立つために必要なコードスニペットをすぐに提供できることを理解しています。