移植分三步走:
1、下載移植文件
2、添加文件到自己工程文件夾
3、加載文件工程中,並修改相關文件
1、下載移植文件
首先,打開Mirium公司官網,並要下載的對應文件,網址:https://www.micrium.com/downloadcenter/download-results/?searchterm=pa-arm-cortex-m4&supported=true 。找到與STM32F407接近的晶片(通過查找STM32F429II-SK符合STM32F407,官網沒有直接移植好STM32F407,若有就好了,就根本不用移植了)STM32F429II-SK,並將它下載下來,下來需要註冊才能下載,這裡我就直接下來了,文件位置:官方 uCOS-III 源碼。
2、添加文件到自己工程文件夾
先選擇一個工程模板,這裡我選擇了一個庫函數LED作為工程模板(這個模板的時鐘一定要配置好,不然後面的時序就會有錯誤)
將文件更名為STM32F407UCOSIII,進入文件創建文件夾UCOSIII,在UCOSIII文件夾中創建以下幾個文件夾.
拷貝下圖路徑下的文件到自己工程的APP文件夾中
拷貝下圖路徑下的文件到自己工程的BSP文件夾中
拷貝下圖路徑下的文件到自己工程的UCOSIII文件下
此時自己的工程UCOSIII下目錄如下
刪除STM32移植\STM32F407UCOSIII\UCOSIII\uC-CPU\ARM-Cortex-M4下的兩個文件夾GNU及IAR
刪除後
刪除STM32移植\STM32F407UCOSIII\UCOSIII\uC-LIB\Ports\ARM-Cortex-M4下的兩個文件夾GNU及IAR
刪除後
刪除STM32移植\STM32F407UCOSIII\UCOSIII\uCOS-III\Ports\ARM-Cortex-M4\Generic下的兩個文件夾GNU及IAR
刪除後
3、加載文件工程中,並修改相關文件
刪除main.c(因為工程當中有已經有函數入口int main(),所以要刪除掉),在打開工程中,將main.c移除掉
打開工程後,要工程中要移除main.c
打開工程組給工程組添加下面的組件
給組件APP添加的文件,將APP的所有文件添加進來
給組件BSP添加的文件,將BSP的所有文件添加進來
給uC-CPU添加文件
除些之外uC-CPU\ARM-Cortex-M4\RealView還有三個文件cpu.h、cpu_a.asm、cpu_c.c,這三個文件也要添加到uC-CPU工程組當中來
給uC-LIB工程組添加文件
除些之外UCOSIII\uC-LIB\Ports\ARM-Cortex-M4\RealView還有一個文件lib_mem_a.asm,這一個文件也要添加到uC-LIB工程組當中來
給COS-III工程組添加文件
除些之外UCOSIII\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView還有三個文件os_cpu.h、os_cpu_a.asm、os_cpu_c.c,這一個文件也要添加到uCOS-III工程組當中來
注意所有的文件添加不能多添加,也不能少添加 ,最後要記得按確定
添加頭文件
這個時候若我們編譯工程的話,一定有錯誤的,所以我們還得進一步的修改,修改步驟如下:
a.修改啟動文件startup_stm32f40_41xxx.s,將兩個中斷函數修改為UCOSIII支持的函數
上面代碼路徑:官方 uCOS-III 源碼\Micrium_STM32F429II-SK_OS3\Micrium\Examples\ST\STM32F429II-SK\BSP\KeilMDK\cstartup.s
IF {FPU} != "SoftVFP" ; Enable Floating Point Support at reset for FPU LDR.W R0, =0xE000ED88 ; Load address of CPACR register LDR R1, [R0] ; Read value at CPACR ORR R1, R1, #(0xF <<20) ; Set bits 20-23 to enable CP10 and CP11 coprocessors ; Write back the modified CPACR value STR R1, [R0] ; Wait for store to complete DSB
; Disable automatic FP register content ; Disable lazy context switch LDR.W R0, =0xE000EF34 ; Load address to FPCCR register LDR R1, [R0] AND R1, R1, #(0x3FFFFFFF) ; Clear the LSPEN and ASPEN bits STR R1, [R0] ISB ; Reset pipeline now the FPU is enabled ENDIF修改板卡驅動文件bsp.h及bsp.c
刪除bsp.c中的文件其它文件
在app_cfg.h文件刪除堆棧限制函數
修改app.c相關文件
刪除下面無關代碼即可,編譯下載,即可看到燈的閃爍