战舰V3适配oneos系列01:bsp适配
戰艦V3適配oneos系列01:bsp適配
本系列以oneos2.3.0提供的STM32F103ZE模板為基礎,將oneos在戰艦V3上運行起來,并逐步適配相關外設
本系列計劃周更
本系列相關代碼將上傳gitee供測試體驗,倉庫:
https://gitee.com/dreamfly233/OneOS/tree/projects_OneOS-v2.3.0/
準備項
- 獲取oneos2.3.0的代碼:https://gitee.com/cmcc-oneos/OneOS/tree/OneOS-V2.3.0/
- 安裝oneos cube:https://os.iot.10086.cn/v2/doc/detailPage/documentHtml?idss=157067959888781312&proId=156799478777782272
- 安裝stm32cubemx,推薦6.3.0
生成工程:
在oneos/project文件夾下執行project.bat,
選擇如圖:
注意SUB MODEL選擇STM32F103ZE
按esc退出并保存后,將生成STM32F103ZE的工程,建議將生成的文件夾改名, 以開發板型號為名方便區分, 這里將生成的STM32F103ZE文件夾更名為stm32f103zet6-atk-warship_v3
打開stm32f103zet6-atk-warship_v3文件夾,可以看到熟悉的目錄結構:
在該目錄下打開oneos cube,進入menuconfig
- 注意:BOOT項需要修改:將text section addr項修改為0x08000000,否則工程不能正常啟動;
- 若按默認的boot偏移制作并燒錄了bootloader,則可忽略該項
保存退出后,使用scons --ide=mdk5命令生成mdk5工程:
雙擊project.uvprojx打開工程
編譯后是可以直接下載進板子運行的(默認配置使用內部時鐘HSI),stlink等下載器選項自行修改
- 下載器選項、下載算法等內容可在template.uvprojx工程修改,修改后生成的mdk工程將使用模板工程的配置
在board.c中修改LED引腳, 戰艦為PB5和PE5, 修改后如下
重新編譯后燒錄運行, 即可看到LED閃爍
默認是配置了shell命令行的,使用串口1,將串口1接入電腦,可以看到shell正常運行
修改時鐘:
使用stm32cubemx打開"board\CubeMX_Config\CubeMX_Config.ioc",選中外部時鐘
修改時鐘樹: 主頻改為72Mhz:
另外需要檢查debug是否已開啟,若sw被禁用會給燒錄程序帶來不便:
其他選項暫時不修改, 選擇生成代碼
cubemx生成的"stm32f1xx_hal_msp.c"已被包含進工程, 主要對外設的時鐘,引腳復用,DMA等進行配置,并對外設引腳進行初始化
cubemx生成的main.c中, 含有時鐘初始化函數和外設功能初始化函數, 這里只需要修改時鐘配置
打開"board\CubeMX_Config\Src\main.c" ,將SystemClock_Config函數復制并替換oneos工程bsp.c中的SystemClock_Config函數, 結果如下:
至此,oneos在戰艦v3上的適配初步完成,時鐘已修改為外置時鐘, 串口1和shell已適配,添加外設將在后續更新
這里注意:
-
scons --ide=mdk5生成mdk工程時, 將會通過腳本自動將外設初始化函數從cubemx生成的main.c中復制到bsp.c中(會使用cubemx的外設初始化配置, 例如串口波特率配置等, 需要在cubemx中正確配置), 包含時鐘配置函數, 只需生成mdk工程后進行檢查
-
另外scons --ide=mdk5生成工程時會根據cubemx中的配置生成"board/peripherals.c", 這將是設備驅動模型注冊設備信息的依據,該.c文件通過include包含,無需也不能加入工程編譯,該文件可實現cubemx添加外設后,自動注冊到設備驅動模型
總結:在cubemx修改外設配置、時鐘后,調用一次scons --ide=mdk5可以自動將相關配置復制到工程
總結
以上是生活随笔為你收集整理的战舰V3适配oneos系列01:bsp适配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (简单介绍)PageRank算法
- 下一篇: 超级玛丽全通关图文攻略