stm32wb55 基于rtt的ble sample制作过程
stm32wb55 基于rtt的ble sample制作過程
準備活動
硬件
- stm32wb55 nucleo開發(fā)板
- stm32wb55 dangle
軟件
- rtthread stm32wb55 bsp
- st官方 stm32wb固件包
開發(fā)環(huán)境
- keil MDK
- vscode
- rtthread env
概述
本文的目的是將ST官方的STM32WB55 固件包里的BLE sample移植到RT-Thread,最終變?yōu)閞tt生態(tài)的一個軟件包,讓更多開發(fā)者都可以直接做基于rtt開箱即用。
移植前準備
生成基于rtt的stm32wb55的最小工程
首先需要clone rtthread的stm32wb55的bsp,然后創(chuàng)建基本的工程,這一步很簡單,從官方github倉庫clone最新的代碼,然后定位到stm32wb55的bsp,使用env scons --dist生成wb55最小工程。如下所示:
xph@XPHPC D:\GitHub\rt-thread\bsp\stm32\stm32wb55-st-nucleo > scons --dist scons: Reading SConscript files ... make distribution.... => stm32wb55-st-nucleo => start dist handle => copy stm32 bsp library => copy bsp drivers => components => include => libcpu => src => tools update mdk5 project update iar project done!然后用keil打開,編譯燒錄到nucleo開發(fā)板中驗證。當開發(fā)板LED1藍燈開始閃爍,同時串口有打印信息輸出,則表示基于rtthread的最小工程生成成功。
\ | / - RT - Thread Operating System/ | \ 4.0.3 build Jan 7 20212006 - 2020 Copyright by rt-thread team msh >st官方固件包刪除不相關代碼
我們從最基礎的beacon工程開始移植,刪除其他不必要的工程文件和文件夾,方便代碼分析工具分析和定位。如果工程文件夾太多,諸如vscode source insight這類代碼工具就很難做到精確跳轉。
如下圖所示,我只保留基于keil mdk的beacon工程,其他的不相干的工程全部刪除。
檢查的方法也很簡單,在固件包中搜索一下main.c函數(shù),看一下有沒有多余的就行了。
然后打開這個beacon工程,編譯一下,沒有錯誤,沒有警告,那么準備工作就做好了。
移植
我的移植思路是,將ST官方的sample當作rtt中的一個線程,這樣子即不影響其他線程的使用移植起來也比較方便。
工程創(chuàng)建
將STM32_WPAN中間件整體復制過來,然后根據(jù)st的sample工程將BLE相關文件都加進去
編譯,根據(jù)編譯錯誤將缺失的文件加入到工程中去,直到編譯完成
關于文件的分組
移植注意事項
以上工作全部完成后,編譯運行后程序運行正常,但是通過nrf connect是無法掃描到beacon的,對比分析后發(fā)現(xiàn)兩部分地方需要修改。
中斷處理函數(shù)需要移植
之前的固有印象是STM32的HAL庫中斷處理函數(shù)全都是虛函數(shù)方式然后通過注冊回調函數(shù)來最終執(zhí)行用戶自己的中斷服務函數(shù)。這也是忽略該步驟的重要原因之一,因為之前的STD或者寄存器版本沒有寫中斷服務函數(shù)是會編譯報錯的。
將以下三個中斷服務函數(shù)放在ibeacon線程.c文件中。
/*** ! RTC timeserver處理中斷服務函數(shù) */ void RTC_WKUP_IRQHandler(void) {HW_TS_RTC_Wakeup_Handler(); }/*** ! IPCC 通訊收發(fā)中斷處理函數(shù) */ void IPCC_C1_TX_IRQHandler(void) {HW_IPCC_Tx_Handler();return; }void IPCC_C1_RX_IRQHandler(void) {HW_IPCC_Rx_Handler();return; }這三個中斷服務函數(shù)主要是用來處理CPU1和CPU2之間的通訊的,這部分內容后面再介紹。
link文件需要更改
STM32WB是一顆雙核MCU,他們共享了部分flash和RAM,所以不能像傳統(tǒng)的單核M4內核那樣定義link文件,需要將部分flash和RAM資源留出來給協(xié)處理器使用。具體的更改直接參考ST的sample工程中的link文件。
經過以上兩步的修改,編譯燒錄后就可以正常使用了。
備注
名詞解釋
- ACI: Application command interface 應用層命令接口
- CLI: Command line interface 命令行接口
總結
以上是生活随笔為你收集整理的stm32wb55 基于rtt的ble sample制作过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 造成计算机系统不安全的因素,造成计算机系
- 下一篇: 使用python代码给手机发短信详解(t