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





