2016-10-24 38 views
1

私はFreeRTOSを使っています。私が作ったmacプロトコルを使いたいです!単一のタスクにFreeRTOSスタックサイズ

、私はSend_Beacon()機能(ビーコンフレームを送信)したいです。

タスクでその関数を呼び出すと、スタックオーバーフローが発生しました。

void vApplicationStackOverflowHook(TaskHandle_t pxTask, char *pcTaskName) 

vApplicationStackOverflowHookが呼び出されました。

if (xTaskCreate(MAC_Init, (signed portCHAR *)"MAC_Inits", 128, NULL, 3, 
     NULL) == pdTRUE) { 
    //GPIOPinWrite(GPIO_C_BASE,GPIO_PIN_3,GPIO_PIN_3); 
} 

私はそれが失敗した128から1600

にスタック深さパラメータを変更しようとしました。

何が問題ですか?

スタックデプスパラメータの値は問題ありませんか?

答えて

0

スタックサイズは、バイトではなくワード単位で指定されています。 xTaskCreate()およびxTaskCreateStatic()関数のドキュメントを参照してください。

xTaskCreate()を使用していて、スタックサイズを増やした後にタスクを作成できない場合は、FreeRTOS heapが不足しています(このリンクから何か対処方法が分かります)。

+0

スタックサイズを増やした後にタスクを作成できないということは、xTaskCreateを使用するとスタックのサイズを変更または処理できないことを意味しますか? –

関連する問題