FreeRTOSタスクは各ループでどのくらい遅延する必要がありますか?


7

MQTTルーチン、コールバックラムダなど、初期化以外のすべてのものがによって作成されたタスク内にあるAWS IoTプロジェクトに取り組んでいますxTaskCreatePinnedToCore()

このタスクはいくつかのことを実行します。AWSに接続し、トピックをサブスクライブしてからaws_iot_mqtt_yield、エラーのチェックなどを呼び出す無限ループに入ります。各ループで、も呼び出しますvTaskDelay(10 / portTICK_RATE_MS);。これは、遅延が1秒で、その後10ミリ秒に減少したサンプルプロジェクトからのものです。「健全な」遅延とは何ですか?ここで遅延が必要なのはなぜですか?ありがとう!

回答:


7

遅延は必要ありません。少なくとも目覚め続ける遅延は必要ありません。

提案したように、コールバックによってトリガーされるスレッドを開始した場合、メインループは必要ありません。そのループが実行するたびに有用な何かをしているのでない限り、ループは、ウェイクアップして遅延に再び入るたびにCPU時間と電力を使用しているだけです。

私は最大整数値の遅延を設定するか、永久に効果的に遅延させるか、単にそのスレッドを終了します。

ループに役立つものがある場合、実用的な遅延は、その何かが何であるかに完全に依存します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.