1、STM32運行FreeRTOS出現prvTaskExitError錯誤死機
工程報錯位置:文件port.c
prvTaskExitError();任務退出錯誤,一個可能在任務裏面寫了return,另一個可能任務切換退出問題,入棧和出棧的時候出了問題。
任務退出的時候調用了prvTaskExitError函數,但是正常任務是個死循環,就算刪除,也是調用刪除函數,因此有兩種情況可能出現
1. 任務沒有 while(1)的死循環。
2. while(1)裏面有break函數。
經過排查是2的問題,最終解決問題。
總結:任務中儘量用 for( ; ; ) { } 代替while死循環,防止while(函數)函數中帶有返回值在任務切換時出錯。
2、FreeRTOS創建多個任務時,後創建的任務不能執行
創建任務時分配內存太少,創建時正常運行時報錯。開啓任務堆棧監測是非常重要的,可以仔細的調整一下,有的任務分配的多,有的任務分配的少