日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32wb55 基于rtt的ble sample制作过程

發布時間:2023/12/14 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32wb55 基于rtt的ble sample制作过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

stm32wb55 基于rtt的ble sample制作過程

準備活動

硬件

  • stm32wb55 nucleo開發板
  • stm32wb55 dangle

軟件

  • rtthread stm32wb55 bsp
  • st官方 stm32wb固件包

開發環境

  • keil MDK
  • vscode
  • rtthread env

概述

本文的目的是將ST官方的STM32WB55 固件包里的BLE sample移植到RT-Thread,最終變為rtt生態的一個軟件包,讓更多開發者都可以直接做基于rtt開箱即用。

移植前準備

生成基于rtt的stm32wb55的最小工程

首先需要clone rtthread的stm32wb55的bsp,然后創建基本的工程,這一步很簡單,從官方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開發板中驗證。當開發板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函數,看一下有沒有多余的就行了。
然后打開這個beacon工程,編譯一下,沒有錯誤,沒有警告,那么準備工作就做好了。

移植

我的移植思路是,將ST官方的sample當作rtt中的一個線程,這樣子即不影響其他線程的使用移植起來也比較方便。

工程創建

  • 創建ibeacon線程
  • static int ibeacon_thread_init(void) {rt_thread_t ibeacon_thread;ibeacon_thread = rt_thread_create("ibeacon",ibeacon_thread_entry,RT_NULL,1024,2,10);if (ibeacon_thread != RT_NULL){rt_thread_startup(ibeacon_thread);}return RT_EOK; }INIT_APP_EXPORT(ibeacon_thread_init);
  • 將st官方sample中的main函數移植過來,放在ibeacon線程的入口函數中
  • static void ibeacon_thread_entry(void *parameter) {LOG_D("ibeacon thread entry...");/*** The OPTVERR flag is wrongly set at power on* It shall be cleared before using any HAL_FLASH_xxx() api*/__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR);HAL_Init();Reset_Device();Init_Exti();MX_GPIO_Init();MX_RTC_Init();/* Init code for STM32_WPAN */APPE_Init();while (1){UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);rt_thread_mdelay(10);} }
  • 將STM32_WPAN中間件整體復制過來,然后根據st的sample工程將BLE相關文件都加進去

  • 編譯,根據編譯錯誤將缺失的文件加入到工程中去,直到編譯完成

  • 關于文件的分組

  • STM32_WPAN這個文件夾里面存放的是ST關于無線協議的中間件,包括BLE、thread、zigbee等等,所以移植的時候直接整體搬過去就好了,至于里面的東西可以暫不做考慮。
  • STM32WB特有的低功耗管理組件和列表單獨做通用分組
  • 其他需要用到的文件統一放到ibeacon分組中
  • 移植注意事項

    以上工作全部完成后,編譯運行后程序運行正常,但是通過nrf connect是無法掃描到beacon的,對比分析后發現兩部分地方需要修改。

    中斷處理函數需要移植

    之前的固有印象是STM32的HAL庫中斷處理函數全都是虛函數方式然后通過注冊回調函數來最終執行用戶自己的中斷服務函數。這也是忽略該步驟的重要原因之一,因為之前的STD或者寄存器版本沒有寫中斷服務函數是會編譯報錯的。

    將以下三個中斷服務函數放在ibeacon線程.c文件中。

    /*** ! RTC timeserver處理中斷服務函數 */ void RTC_WKUP_IRQHandler(void) {HW_TS_RTC_Wakeup_Handler(); }/*** ! IPCC 通訊收發中斷處理函數 */ void IPCC_C1_TX_IRQHandler(void) {HW_IPCC_Tx_Handler();return; }void IPCC_C1_RX_IRQHandler(void) {HW_IPCC_Rx_Handler();return; }

    這三個中斷服務函數主要是用來處理CPU1和CPU2之間的通訊的,這部分內容后面再介紹。

    link文件需要更改

    STM32WB是一顆雙核MCU,他們共享了部分flash和RAM,所以不能像傳統的單核M4內核那樣定義link文件,需要將部分flash和RAM資源留出來給協處理器使用。具體的更改直接參考ST的sample工程中的link文件。

    經過以上兩步的修改,編譯燒錄后就可以正常使用了。

    備注

    名詞解釋

    • ACI: Application command interface 應用層命令接口
    • CLI: Command line interface 命令行接口

    總結

    以上是生活随笔為你收集整理的stm32wb55 基于rtt的ble sample制作过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文免费视频 | 久久日韩 | 一道本av在线 | 在线观看免费大片 | 精品人妻一区二区三区四区不卡 | 粗大的内捧猛烈进出视频 | 日韩大片一区 | 日韩怡红院| 久久精品综合网 | 神马午夜dy888 | 国产精品国产精品 | 欧美大片免费高清观看 | 99re6在线| 一级大黄毛片 | 天天亚洲 | 国产精品三级在线观看无码 | 综合久久伊人 | 性天堂网 | av作品在线观看 | 国产一区二区免费看 | 91麻豆精品一二三区在线 | 国产精品毛片久久久久久久 | 欧美怡红院一区二区三区 | 校园春色中文字幕 | 中文字幕亚洲一区二区三区五十路 | 久久无码国产视频 | 色狠狠一区二区三区香蕉 | 无人在线观看的免费高清视频 | 精人妻无码一区二区三区 | 黄色福利视频网站 | 亚洲人吸女人奶水 | 欧美性做爰大片免费 | 精品在线一区二区三区 | 亚洲国产成人精品91久久久 | 亚洲精品美女久久久 | 欧美99视频| 黑人巨大精品欧美 | 久久久水蜜桃 | 国产69精品久久久 | 俄罗斯美女av | 美女被娇喘流出白 | 日本黄色一区二区三区 | 抱着老师的嫩臀猛然挺进视频 | 欧美日韩一区视频 | 麻豆亚洲av熟女国产一区二 | 欧美性教育视频 | 色呦呦精品 | 国产伦理在线观看 | 人人干人| 天天射综合网站 | 综合网婷婷 | 91干| av大西瓜| 国产精品91久久 | 天天看视频| 狠狠操精品 | 激情九月婷婷 | 青青青在线免费 | 激情小说av| 色男天堂| 国内精品国产成人国产三级 | 日本在线中文 | 国产日韩视频 | 中文字幕色 | 黄色无遮挡网站 | 亚洲无人区码一码二码三码的含义 | 午夜视频在线观看国产 | 泰剧19禁啪啪无遮挡 | 在线观看视频一区二区三区 | 成人欧美一区二区三区小说 | 久久毛片视频 | 亚洲欧美在线视频免费 | 我爱avav色aⅴ爱avav | 国产原创视频在线 | 毛片在线播放视频 | 黄色三级小视频 | 国产在线观 | 亚洲va在线观看 | 精品国产鲁一鲁一区二区三区 | 夜夜操夜夜操 | 亚洲一级在线 | 一本大道综合伊人精品热热 | 国产福利视频在线 | 亚洲AV无码乱码国产精品牛牛 | 日本美女交配 | 久久久久久久久久久久久久国产 | 91香蕉在线看 | 日本一区二区在线播放 | 欧美日本免费 | 亚洲一区二区中文字幕 | 91久久久久久久久久久久久 | 好吊色一区二区三区 | 夜夜嗨一区二区三区 | 黄色短视频在线播放 | 国产农村妇女毛片精品 | 夜夜se| 午夜激情久久久 | 韩国一级淫片免费看 | 五月婷婷色综合 |