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

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

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

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

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

概述

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

硬件準(zhǔn)備

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

視頻教學(xué)

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

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

源碼下載

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

藍(lán)牙配置

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

定義第二個(gè)特征名稱,這里定義為'myCharRead',同時(shí)將UUID增加為00 01

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

代碼配置

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

app_conf.h

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

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

同時(shí)添加任務(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中的藍(lán)牙初始化中注冊我們自己的任務(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) 將一個(gè)名為 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按鍵。

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

custom_app.c

編寫我們的myTask任務(wù)函數(shù),通過檢測PC4按鍵進(jìn)行數(shù)據(jù)發(fā)送。 檢測一個(gè)按鍵(SW1)是否被按下,如果按下則執(zhí)行相應(yīng)的操作,包括更新UpdateCharData數(shù)組的第一個(gè)元素,調(diào)用自定義函數(shù)Custom_STM_App_Update_Char進(jìn)行處理,就是向手機(jī)APP發(fā)送一個(gè)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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5823

    瀏覽量

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

    關(guān)注

    35

    文章

    22309

    瀏覽量

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

    關(guān)注

    25

    文章

    5050

    瀏覽量

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

    關(guān)注

    12

    文章

    660

    瀏覽量

    59406
  • STM32WB55
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    1324
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過手機(jī)APP與其連接。
    的頭像 發(fā)表于 11-18 09:55 ?1651次閱讀
    <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'>手機(jī)</b>APP

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

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

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

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

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

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

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

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

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

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

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

    本篇文章主要介紹如何使用STM32CubeMX對生成STM32WB工程,并通過與STM32WB配對,應(yīng)用程序?qū)蛻舳俗x取或者寫入特征值進(jìn)行授權(quán)。
    的頭像 發(fā)表于 11-18 10:09 ?1255次閱讀
    <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>手冊摘要