所有的單片機都是順序執行的,而對於多任務而言就顯得力不從心了,雖然在一些小項目中可以通過定時器來實現,但這種實現方式沒有實時性,一旦任務需要在規定時間內做出響應,那只能通過實時操作系統來完成了。在很多實時操作系統中,FreeRTOS有這良好的移植,而且體積小,其可剪裁性和優越的實時性能無不讓其成為眾多實時操作系統的首選,最大的好處當然就是他的免費開源。廢話不多說,下面是FreeRTOS移植到STM32上的詳細步驟。
首先,下載FreeRTOS源代碼,網址:https://www.freertos.org/a00104.html
下載完后開始建立STM32工程,新建一個文件夾命名位FreeRTOS_TEST,然后建立CMSIS文件夾,USER文件夾,OS文件夾,將STM32所需要的內核文件復制到CMSIS中,然后將下載的FreeRTOS源碼中的Source文件夾復制到OS文件夾下(注意:從官網上下載的源碼Source文件夾下沒有FreeRTOSConfig.h文件,這個文件需要在Demo文件夾下拷貝相應處理器型號的FreeRTOSConfig.h即可)。然后打開MDK5。打開startup_stm32f10x_hd.s文件,找到第50行的__heap_limit,修改下列部分:
然后添加必要的c文件:
還需要增加頭文件的路徑
新建一個C文件,用蜂鳴器和LED閃爍代表兩個任務
兩個任務代碼如下
其中vTaskDelay(500);為進入阻塞狀態,500ms后再次進入就緒狀態。
編譯一下沒問題
下載到板子上兩個任務同時執行,沒有互相干擾,移植完成。