0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32WB55_NUCLEO開發(fā)(11)----發(fā)送數(shù)據(jù)到手機

嵌入式單片機MCU開發(fā) ? 來源:嵌入式單片機MCU開發(fā) ? 作者:嵌入式單片機MCU開 ? 2023-08-21 15:22 ? 次閱讀

概述

本篇文章將詳細介紹如何在上節(jié)配置的基礎(chǔ)上,實現(xiàn)通過點擊STM32WB開發(fā)板上的按鍵發(fā)送數(shù)據(jù)到手機上。 最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:615061293 。

硬件準(zhǔn)備

首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是NUCLEO-WB55RG 的開發(fā)板:

視頻教學(xué)

聽不到聲音的請點擊跳轉(zhuǎn)進行觀看。

https://www.bilibili.com/video/BV1DM41137Jk/

源碼下載

https://download.csdn.net/download/qq_24312945/87772294

藍牙配置

選擇“mySVC”選項卡。添加第二個特征,特征數(shù)Number of characteristics設(shè)置為2

定義第二個特征名稱,這里定義為'myCharRead',同時將UUID增加為00 01

啟用CHAR_PROP_NOTIFY屬性。 CHAR_PROP_NOTIFY 是一個參數(shù)描述,它允許設(shè)備在特性值發(fā)生變化時發(fā)送通知,而無需接收方響應(yīng)。這種通知機制使得數(shù)據(jù)傳輸更加高效,因為發(fā)送方不需要等待接收方的確認。

代碼配置

我們希望在按鈕按下時調(diào)用aci_gatt_update_char_value(...) API。這將會發(fā)送一個指令(CMD)給CM0+處理器,同時傳遞一個值作為參數(shù),為了解決在中斷上下文中調(diào)用API的問題,我們需要創(chuàng)建一個后臺任務(wù)來調(diào)用aci_gatt_update_char_value(...)。這個任務(wù)將在主程序循環(huán)中運行,并在檢測到按鈕按下事件時調(diào)用API。 當(dāng)按鈕被按下時,我們希望更新藍牙GATT特征值。為了實現(xiàn)這一目標(biāo),我們需要創(chuàng)建一個在后臺運行的任務(wù),而不是直接在中斷處理程序中調(diào)用API。這是因為ACI接口不是可重入的,直接在中斷處理程序中調(diào)用API可能導(dǎo)致不安全的情況。

app_conf.h

在app_conf.h中定義自定義任務(wù)。

/* USER CODE BEGIN Defines */
void myTask(void);
/* USER CODE END Defines */

同時添加任務(wù)定義。

/* USER CODE BEGIN CFG_Task_Id_With_NO_HCI_Cmd_t */
    CFG_MY_TASK,
  /* USER CODE END CFG_Task_Id_With_NO_HCI_Cmd_t *

app_ble.c

在app_ble.c中的藍牙初始化中注冊我們自己的任務(wù)和調(diào)度任務(wù)。 UTIL_SEQ_RegTask(1 << CFG_MY_TASK, UTIL_SEQ_RFU, myTask) 和 UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0) 是用于任務(wù)調(diào)度和任務(wù)優(yōu)先級設(shè)置的。 UTIL_SEQ_RegTask(1 << CFG_MY_TASK, UTIL_SEQ_RFU, myTask) 將一個名為 myTask 的任務(wù)注冊到任務(wù)調(diào)度器中。 UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0)為設(shè)置優(yōu)先級。

/* USER CODE BEGIN APP_BLE_Init_1 */
    UTIL_SEQ_RegTask( 1     CFG_MY_TASK, UTIL_SEQ_RFU, myTask);
    UTIL_SEQ_SetTask(1       CFG_MY_TASK, CFG_SCH_PRIO_0);
  /* USER CODE END APP_BLE_Init_1 *

按鍵配置

查看原理圖可以得知PC4為SW1按鍵。

同時配置為上拉,默認狀態(tài)下電平為高電平狀態(tài)。

custom_app.c

編寫我們的myTask任務(wù)函數(shù),通過檢測PC4按鍵進行數(shù)據(jù)發(fā)送。 檢測一個按鍵(SW1)是否被按下,如果按下則執(zhí)行相應(yīng)的操作,包括更新UpdateCharData數(shù)組的第一個元素,調(diào)用自定義函數(shù)Custom_STM_App_Update_Char進行處理,就是向手機APP發(fā)送一個0xbb的數(shù)據(jù)。

/* USER CODE BEGIN PFP */
void myTask(void)
{
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_4)==0)//SW1按鍵按下
{
    UpdateCharData[0] = 0xbb;
 Custom_STM_App_Update_Char(CUSTOM_STM_MYCHARREAD, (uint8_t *)UpdateCharData);

}
UTIL_SEQ_SetTask(1 < < CFG_MY_TASK, CFG_SCH_PRIO_0);
}

/* USER CODE END PFP */

結(jié)果演示

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 藍牙
    +關(guān)注

    關(guān)注

    114

    文章

    5751

    瀏覽量

    169590
  • 瑞薩
    +關(guān)注

    關(guān)注

    34

    文章

    22282

    瀏覽量

    85939
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4895

    瀏覽量

    97056
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    648

    瀏覽量

    59294
  • STM32WB55
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    1296
收藏 人收藏

    評論

    相關(guān)推薦

    STM32WB55_NUCLEO開發(fā)(9)----接收手機數(shù)據(jù)點亮LED

    群申請:615061293 。 硬件準(zhǔn)備 首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是NUCLEO-WB55RG 的開發(fā)板: 視頻教學(xué) 聽不到聲音的請點擊跳轉(zhuǎn)進行觀看。 https
    的頭像 發(fā)表于 08-21 15:16 ?1038次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(9)----接收<b class='flag-5'>手機</b><b class='flag-5'>數(shù)據(jù)</b>點亮LED

    STM32WB55_NUCLEO開發(fā)(10)----接收手機特定數(shù)據(jù)點亮LED

    STM32WB55_NUCLEO開發(fā)(10)----接收手機特定數(shù)據(jù)點亮LED
    的頭像 發(fā)表于 08-21 15:19 ?884次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(10)----接收<b class='flag-5'>手機</b>特定<b class='flag-5'>數(shù)據(jù)</b>點亮LED

    STM32WB55_NUCLEO開發(fā)(12)----FUS更新

    STM32WB 微控制器中,F(xiàn)US(Firmware Upgrade Services)是用于固件升級的一種服務(wù)。這項服務(wù)可以讓你更新設(shè)備上的無線棧固件(如藍牙、Zigbee或 Thread 棧),以及無線 MCU (microcontroller unit) 的系統(tǒng)服務(wù)。
    的頭像 發(fā)表于 11-13 15:36 ?867次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(12)----FUS更新

    STM32WB55如何檢測/調(diào)試P-NUCLEO-WB55.Nucleo的BLE_p2pServer中的read_event示例代碼

    先生,的我正在使用 STM32WB55 開發(fā)項目并從 STM32Cube_FW_WB_V1.14.0\Projects\P-NUCLEO-WB55.Nucleo\Application
    發(fā)表于 12-07 06:30

    P-NUCLEO-WB55 STMicroelectronicsPNUCLEOWB55STM32WBNucleo68數(shù)據(jù)

    電子發(fā)燒友網(wǎng)為你提供(ti)P-NUCLEO-WB55相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有P-NUCLEO-WB55的引腳圖、接線圖、封裝手冊、中文資料、英文資料,P-NUCLEO-WB55
    發(fā)表于 10-23 16:06

    stm32wb55 基于rtt的ble sample制作過程

    stm32wb55 基于rtt的ble sample制作過程準(zhǔn)備活動硬件stm32wb55 nucleo開發(fā)stm32wb55 dangl
    發(fā)表于 12-20 19:39 ?13次下載
    <b class='flag-5'>stm32wb55</b> 基于rtt的ble sample制作過程

    STM32WB55_NUCLEO開發(fā)(1)----軟件與硬件介紹

    所使用的的器件位ST官方的P-NUCLEO-WB55。
    的頭像 發(fā)表于 11-18 09:54 ?2468次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(1)----軟件與硬件介紹

    STM32WB55_NUCLEO開發(fā)(2)----使用STM32CubeMX生成的簡單BLE應(yīng)用程序連接手機APP

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過手機APP與其連接。
    的頭像 發(fā)表于 11-18 09:55 ?1584次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(2)----使用<b class='flag-5'>STM32</b>CubeMX生成的簡單BLE應(yīng)用程序連接<b class='flag-5'>手機</b>APP

    STM32WB55_NUCLEO開發(fā)(3)----手機STM32WB直接配對

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過手機APP與其配對。
    的頭像 發(fā)表于 11-18 09:57 ?1241次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(3)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>直接配對

    STM32WB55_NUCLEO開發(fā)(4)----手機STM32WB通過密鑰配對

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過手機APP與其配對。
    的頭像 發(fā)表于 11-18 10:00 ?1143次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(4)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>通過密鑰配對

    STM32WB55_NUCLEO開發(fā)(5)----手機STM32WB通過鍵入密鑰配對

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過與STM32WB配對獲取密鑰值,然后通過鍵盤輸入密鑰進行配對。
    的頭像 發(fā)表于 11-18 10:02 ?1166次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(5)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>通過鍵入密鑰配對

    STM32WB55_NUCLEO開發(fā)(6)----手機STM32WB通過配對后進行數(shù)值比較

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過與STM32WB配對,查看STM32WB手機端的數(shù)值是否相等
    的頭像 發(fā)表于 11-18 10:05 ?1067次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(6)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>通過配對后進行數(shù)值比較

    STM32WB55_NUCLEO開發(fā)(7)----手機STM32WB進行綁定

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過與STM32WB配對,將其綁定。
    的頭像 發(fā)表于 11-18 10:08 ?1221次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(7)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>進行綁定

    STM32WB55_NUCLEO開發(fā)(8)----授權(quán)

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過與STM32WB配對,應(yīng)用程序?qū)蛻舳俗x取或者寫入特征值進行授權(quán)。
    的頭像 發(fā)表于 11-18 10:09 ?1172次閱讀
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發(fā)</b>(8)----授權(quán)

    DB4388_NUCLEO_WB55RG NUCLEO_WB15CC 數(shù)據(jù)手冊摘要

    DB4388_NUCLEO_WB55RG NUCLEO_WB15CC 數(shù)據(jù)手冊摘要
    發(fā)表于 11-23 08:34 ?1次下載
    DB4388_<b class='flag-5'>NUCLEO_WB55</b>RG <b class='flag-5'>NUCLEO_WB</b>15CC <b class='flag-5'>數(shù)據(jù)</b>手冊摘要