1. 程式人生 > >Mbed在自己的stm32系列平臺移植適配(二)

Mbed在自己的stm32系列平臺移植適配(二)

Mbed在自己的stm32系列平臺移植適配

適配平臺:
cpu:STM32F103RCT6
外設:

peripheral pin disciption
LED1 PC_0
LED2 PC_6
UART5_TX PC_12 no remap
UART5_RX PD_2 no remap

二、構建原始碼工程

1獲取NUCLEO_F103RB的模版

既然是根據nucleo_F103RB來適配,當然需要有一個nucleo_F103RB的模版才行,當然沒有也是可以的,我們可以手動通過MDK建立一個全新的工程。但是配置一些編譯選項可能比較麻煩,所以我們還是通過nucleo_F103RB的模版來修改吧。
開啟

mbed的官網,進入developer,然後點選編輯器compiler,當然如果沒有帳號的先註冊一個帳號吧。

然後選擇一個開發板,此處我們選擇nucleo-f103RB

確認選擇後我們就可以新建工程了。

點選OK後工程建立完成,不過mbed的底層檔案都被掩藏起來了,是看不到原始碼的。
然後我們將工程匯出,此處我們到處為mdk v5


至此,我們就擁有了一個nucleo-f103rb的模版,只不過開啟這個工程的資料夾後我們可以看到mbed裡面全都是.o檔案,並不是我們希望的原始碼,因為我們要適配必須要原始碼才行,.o檔案是沒有辦法修改的。

2建立nucleo-f103rb的原始碼工程

我們知道,mbed os是開源專案,那麼之前看到的.o檔案都是通過這些原始碼編譯後生成的,我們只要後去了mbed的原始碼,然後新增到工程中,然後稍作配置即可編譯成功了。
從mbed的github下載mbed的原始碼:
mbed原始碼
下載成功後會看到這樣的一些檔案

將nucleo-f103rb工程目錄中mbed裡面的所有檔案全部刪除,然後將mbed原始碼中的檔案全部拷貝,一些文件類的檔案可以刪除。
當然為了是工程結構更加簡潔,我們新建一個user和project資料夾,然後將project檔案移入project中,將main和mbed_config.h檔案移入user中。
開啟工程,將之前的檔案輸出掉,然後新增新的資原始檔到工程中,注意觀察原本的工程包含了那些資料夾,比如drivers、hal、platform等、對應著新增,原本沒有新增的就不需要加進去了,比如原本event沒有新增到工程中,那麼我們新增原始碼時event就可以不用添加了。但是注意一定要新增完整,不然可能會出現編譯錯誤的情況。


然後修改標頭檔案包含路徑,將存在標頭檔案的路徑全部新增即可。

設定sct檔案,

將sct檔案定位到mbed實際存在的路徑上。
在mbed\targets\TARGET_STM\TARGET_STM32F1\TARGET_NUCLEO_F103RB\device\TOOLCHAIN_ARM_STD中。然後就可以嘗試著編譯了,如果有問題照著問題的提示慢慢修改,直到沒有error為止,如果檔案新增完整,路徑設定正確,sct設定正確應該就沒有錯誤的。然後就是開始適配了。

工程模版