使用模板在STM32 Blue Pill上啟動“Blinky”項目
在第一篇文章中,我們從頭開始構建了一個干凈的、完全可控的Zephyr RTOS開發(fā)環(huán)境。現在是時候讓它發(fā)揮作用了。
在本指南中,我們將使用我們的新環(huán)境來構建和閃光一個項目到一個真正的微控制器-流行的STM32F103C8T6“Blue Pill”。
為此,我們將使用一個最小的、生產就緒的模板,該模板預先配置為Visual Studio Code中的無縫體驗,并解決了開箱即用的常見硬件問題。
1. 你需要什么
在我們開始之前,請確保一切都準備好了。硬件很簡單,如果您按照我們的第一個指南進行操作,軟件應該已經配置好了。
硬件:
?STM32F103C8T6“Blue Pill”板
?ST-Link V2程序員
?連接線(跳線)
軟件:
?一個完整配置的Zephyr RTOS環(huán)境(Python, Git, West, SDK等)。
?Visual Studio Code與推薦的擴展(包括C/ c++, CMake工具,和任務管理器)。
剛剛開始?如果你還沒有準備好你的開發(fā)環(huán)境,請先按照我的詳細指南:Manual Zephyr RTOS Installation on Windows。此項目模板假定您的環(huán)境已經準備就緒。
2. 快速入門:從零到閃爍
重要:確保您的Zephyr環(huán)境已激活!zephyr-env運行。CMD -你的終端應該在提示符下顯示(.venv)。
2.1. 獲取項目模板
將存儲庫克隆到本地機器并在Visual Studio Code中打開它:
2.2. 連接硬件
通過SWD接口連接ST-Link至Blue Pill:
?Swdio→Swdio
?SWCLK→SWCLK
?GND→GND
?3.3v→3.3v
然后將ST-Link插入電腦的USB接口。
2.3. 構建項目
我們將使用VS Code任務來簡化工作流。你有兩個選擇:
選項A:命令面板
?按Ctrl+Shift+B或進入“Terminal→Run Task…”
?從下拉菜單中選擇Build
選項B:任務瀏覽器(推薦)
?打開任務資源管理器面板(側欄)
?單擊Build任務旁邊的play按鈕
?等待構建完成。您應該在終端中看到構建成功。
2.4. 閃光板
使用相同的方法運行Flash (64k)任務。
運行Flash (128k)。
注意:如果閃爍失敗無效的閃存大小錯誤,您的芯片可能有64KB的閃存。使用Flash (64k)任務代替。
2.5. 慶祝!
PC13上的LED現在應該每秒閃爍一次。您剛剛運行了第一個Zephyr應用程序!
3. 引擎蓋下:是什么讓這個模板聰明
3.1. 硬件配置(bluepill_f103c8.overlay)
覆蓋文件告訴Zephyr我們的電路板是如何連接的:
主要特點:
?配置為ACTIVE_LOW的LED(當引腳為LOW時亮)
?禁用JTAG,啟用SWD進行調試
?引腳PA15, PB3, PB4現在可用于您的應用
3.2. 項目配置(Project .conf)
這條單線使OpenOCD能夠在閃爍期間自動停止和重置微控制器-不再手動按reset按鈕!
3.3. 應用程式碼(src/main.c)
讓我們看看實際的閃爍代碼:
這里發(fā)生了什么:
1. 我們使用my-led別名從設備樹中獲取LED配置
2. 檢查GPIO端口是否準備好
3. 配置引腳作為輸出
4. 在無限循環(huán)中每秒切換LED
注意,我們從來沒有硬編碼pin -所有的東西都來自設備樹。這使得代碼可移植和可維護。
3.4. VS Code工作流
任務。json:定義Build、Flash和Clean腳本。它還包括一個Flash (128k)任務,因為一些C8T6主板秘密包含一個128kb閃存的芯片。如果標準閃存失敗,這個替代任務通??梢越鉀Q問題。
c_cpp_properties。這個文件配置IntelliSense(代碼完成)。它指向一個compile_commands。Zephyr的構建系統(tǒng)自動生成的json文件。重要:您必須至少運行一次構建任務,以使代碼完成工作完美!
4. 常見問題處理
?“AP寫入錯誤,復位不會停止”
發(fā)生時:構建干凈或項目克隆后的第一次flash。這只能發(fā)生一次,在下次刪除構建文件夾之前。
原因:OpenOCD不能停止正在運行的微控制器。
解決方案:
1. 按住藍色藥丸上的RESET按鈕
2. 在VS Code中運行Flash任務
3. 當出現“正在下載…”消息時,釋放RESET
預防:確保在prj.conf(已經包含)中設置了CONFIG_DEBUG=y。
?“Flash寫入失敗” / “Flash大小無效”
原因:你的芯片有64KB的閃存,而不是128KB。
解決方案:使用Flash (64k)任務代替Flash (128k)。
?“west: command not found”
原因:西風環(huán)境未激活。
解決方法:運行zephyr-env。cmd (Windows)或源環(huán)境腳本。
您的提示符應該顯示(.venv)。
本文編譯自hackster.io





