基於STM32的FreeRTOS移植


簡介

通過STM32CubeMX建立MDK工程,手動進行FreeRTOS移植,以及任務創建。

開發平台

硬件平台:STM32F746 Discovery Kit
軟件源碼:FreeRTSO V9.0.0
開發環境:MDK V5.28

移植准備

  1. 源碼獲取
    通過訪問FreeRTOS官網可以直接下載源碼,解壓后文件夾的FreeRTOS目錄包含了移植所需的文件和一些Demo。
  2. 工程准備
    打開STM32CubeMX,選擇芯片STM32F746NGHx創建工程,在System Core欄目下的RCC項配置LSE為Crystal/Ceramic Resonator,HSE為BYPASS Clock Source

    根據官方的原理圖,選擇控制LD1的閃爍作為一個任務,所以配置該引腳為輸出模式

    配置系統時鍾

    在工程管理導航欄設置工程名稱、保存路徑和IDE類別,然后點擊右上角GENERATE CODE按鈕生成工程

源碼移植

  1. 在工程根目錄建立FreeRTOS文件夾,並建立Source、Include、Portable三個子目錄,存放有關於FreeRTOS的源碼

  2. 源碼文件夾FreeRTOS/Source路徑下的所有.c文件復制到剛才建立的Source文件夾

  3. 源碼文件夾FreeRTOS/Source/include路徑下的所有.h文件復制到剛才建立的Include文件夾

  4. 源碼文件夾FreeRTOS/Source/portable/MemMang路徑的所有.c文件和FreeRTOS/Source/portable/RVDS/ARM_CM7/r0p1路徑下的所有文件復制到剛才建立的Portable文件夾

  5. 源碼文件夾FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil路徑下的FreeRTOSConfig.h文件復制到剛才建立的FreeRTOS目錄下,該文件是對FreeRTOS內核功能的配置文件,需要好好了解每個宏定義配置的功能。

MDK配置及文件修改

  1. 使用MDK打開工程,把建立的FreeRTOS目錄下文件添加到工程中,並且添加包含路徑

  2. 修改stm32f7xx_it.c文件,屏蔽掉SVC_HandlerPendSV_HandlerSysTick_Handler三個函數。工程中把HAL庫與FreeRTOS共用Systic,所以在FreeRTOS的xPortSysTickHandler函數中添加HAL_IncTick函數的執行。

  3. 修改FreeRTOSConfig.h文件,否則暫時狀態下編譯會報錯。把configUSE_IDLE_HOOKconfigUSE_TICK_HOOKconfigCHECK_FOR_STACK_OVERFLOWconfigUSE_MALLOC_FAILED_HOOK這幾個宏定義設為0;重定義configASSERT( x ),或者實現vAssertCalled函數。

創建任務

  1. 在main.c中包含有關於FreeRTOS的.h文件

  2. 創建任務句柄和入口函數

  3. 創建並啟動調度器

總結

編譯后下載程序,觀察到板子上LD1開始閃爍,任務創建並成功運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM