需要準備的軟硬體如下:
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
強者賈爸,我們需要更多有關 freeRTOS 的深入介紹與說明 靠你了
回覆刪除请问你 能告诉我 为什么要 将void SVC_Handler(void),void PendSV_Handler(void),void SysTick_Handler(void) 删除吗?
回覆刪除这样的话,FreeRTOS 不就无法使用中断了???
email :812331053@qq.com
Hello:
刪除刪除只是因為重複定義, 這三個function在FreeRTOS都已經另有他用了, 所以不能在stm32fxx_it.c裡面再定義一次,否則會build不過.
這三個function在FreeRTOS裡面所代表的意義可以參考FreeRTOSConfig.h裡面,都已經被FreeRTOS定義了.
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
standard names - or at least those used in the unmodified vector table. */
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
回覆刪除添加任务编译之后 出现了 这个错误!!!请问是不是堆栈溢出???
Error[Li005]: no definition for "vApplicationMallocFailedHook" [referenced from F:\IAR project\STM32Cube_FW_L0_V1.7.0\Projects\STM32L073RZ-Nucleo\
Hello:
刪除看起來只是沒有定義vApplicationMallocFailedHook這個function, 所以才build不過, 你先檢查一下configUSE_MALLOC_FAILED_HOOK這個define是不是設定為1了?
作者您好. 我目前在研究stm32f429, 之前沒這方面的經驗,
回覆刪除不知道可以請問一下您從哪邊學習這方面的東西,
主要想知道怎麼從無到有去學習stm32f429,
有沒有參考文件或是推薦的書可以學習的更深入
謝謝 Chris
Hello Kuo-Yuan:
回覆刪除我是從ST其它系列的MCU開始入門的, 例如像是M0/M3, 因此當一個熟悉之後, 其它在學習就會比較快速,
且使用ST最大的好處就在於只要Google, 就會有一大堆可以參考的資料可供閱讀, 且恰巧之前的工作會常與ST
原廠工程師合作, 因此也常從他們身上學到很多知識.
除了Google國內外的資料外, 很多書局都有賣簡體的ST參考書籍, 也建議你可以參考看看, 當然最重要的還是找個志同道合的人一起討論比較快...xDD
Have a nice day,
JustinWang
Hi Justin
刪除所以你是從最基礎的開發板開始寫的, 那我大概了解了~
目前找到資料是不是簡體的資料比較多呢?(蠻常找到都是大陸那方面的資料)
簡體書的部分有找過, 大部分的書籍都有點進階 (哈哈~這個部分我也是努力的再找)
另外不知道可以請問你有E-mail可以交流嗎?
Hi Justin
刪除所以你是從最基礎的開發板開始寫的, 那我大概了解了~
目前找到資料是不是簡體的資料比較多呢?(蠻常找到都是大陸那方面的資料)
簡體書的部分有找過, 大部分的書籍都有點進階 (哈哈~這個部分我也是努力的再找)
另外不知道可以請問你有E-mail可以交流嗎?
Hello Kuo-Yuan:
刪除我的e-mail是wangwewe@mirlab.org,目前看起來網路資料還是簡體和英文最多吧, 書籍的話則是以簡體為主.
Have a nice day,
JustinWang