需要準備的軟硬體如下:
1. STM32F4 Discovery kit for STM32F429
2. IAR EWARM v7.20
3. Mini USB Cable * 1
------------------------------------------------------------------------------------------------------------
移植步驟:
- 至STMicroelectronics的官方網站下載範例程式碼
- 至http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF259090,下載STM32F429 Discovery kit example code.
- 進入網頁後, 搜尋"Related Tools and Software", 接著點選"STSW-STM32138"
- 接著會跳到"Sample & Buy"的頁面, 點選"Download"即可下載STM32F429的範例程式碼
- 將"stsw-stm32138.zip"解壓縮後, 即可得到"STM32F429I-Discovery_FW_V1.0.1"的資料夾
點選STSW-STM32138來下載檔案 |
直接點選Download及可以下載stsw-stm32138.zip |
解壓縮後, 會看到STM32F429I-Discovery_FW_V1.0.1的資料夾 |
- 至FreeRTOS的官方網站下載範例程式碼
- 至http://www.freertos.org/網頁, 並點選左方之"Download"
- 至RTOS Source Code Download Instructions的第二項, 點選連結下載
- 下載完畢會看到FreeRTOSv8.0.1.exe的檔案, 解壓後會看到FreeRTOSv8.0.1的目錄
- 接下來進入FreeRTOSv8.0.1的目錄,只留下FreeRTOS目錄,將不必要的檔案刪除掉.
- 進入FreeRTOS/Demo/, 將除了Common以外的目錄全部刪除掉.
- 將精簡過後的FreeRTOSv8.0.1資料夾複製到"STM32F429I-Discovery_FW_V1.0.1"資料夾底下. (ex: c:\STM32F429I-Discovery_FW_V1.0.1\Projects\Template\)
- 使用IAR EWARM v7.20 開始將程式依序加進專案中.
- 先到達C:\STM32F429I-Discovery_FW_V1.0.1\Projects\Template\EWARM\,開啟Template專案.
- 在Template專案的地方按下右鍵, 選擇Add->Add Group.
- 輸入Group name.(ex: FreeRTOS_v8.0.1)
- 依序完成下列檔案的建置.
- 所有的檔案中, 僅有FreeRTOSConfig.h需由使用者自行建置, 其餘檔案皆可在FreeRTOS_v8.0.1當中找到, FreeRTOSConfig.h的範例可先參考此連結.
- 完成所有檔案建置後, 接下來將開始完成include檔案的路徑配置,首先在Template專案的地方按下右鍵, 選擇Options.
- 在C/C++ Compiler -> Preprocessor -> Additional include directories:(one per line)右邊的...方塊.
- 參考下列圖片加入FreeRTOS檔案所需之路徑.
- 在Assembler -> Preprocessor -> Additional include directories:(one per line)中加入下列路徑.
- 此時可以先按下"F7" 開始Build code, 但會發現有3個錯誤, 原因是因為"SVC_Handler" & "SysTick_Handler" & "PendSV_Handler" 這3個function在stm32f4xx_it.c重複定義.
- 所以我們開啟stm32f4xx_it.c, 將此檔案中的這3個function都刪除掉.
- 接下來可以開始來檢視main.c的程式碼:
- 程式中總共創建了3個Task.
- Task1每100msec執行一次, 且不停地Toggle LED3(Green LED).
- Task2每500msec執行一次, 且不停地Toggle LED4(Red LED).
- Task3每5msec執行一次, 僅不停地對Task3Task_Counter + 1.
- 測試影片如下:
- 完整檔案連結如下:
STM32F429I-Discovery-RTOS_v8.0.1