概述
本篇文章將詳細介紹如何在上節配置的基礎上,實現通過點擊STM32WB開發板上的按鍵發送數據到手機上。 最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:615061293 。
硬件準備
首先需要準備一個開發板,這里我準備的是NUCLEO-WB55RG 的開發板:
視頻教學
聽不到聲音的請點擊跳轉進行觀看。
https://www.bilibili.com/video/BV1DM41137Jk/
源碼下載
https://download.csdn.net/download/qq_24312945/87772294
藍牙配置
選擇“mySVC”選項卡。添加第二個特征,特征數Number of characteristics設置為2
定義第二個特征名稱,這里定義為'myCharRead',同時將UUID增加為00 01
啟用CHAR_PROP_NOTIFY屬性。 CHAR_PROP_NOTIFY 是一個參數描述,它允許設備在特性值發生變化時發送通知,而無需接收方響應。這種通知機制使得數據傳輸更加高效,因為發送方不需要等待接收方的確認。
代碼配置
我們希望在按鈕按下時調用aci_gatt_update_char_value(...) API。這將會發送一個指令(CMD)給CM0+處理器,同時傳遞一個值作為參數,為了解決在中斷上下文中調用API的問題,我們需要創建一個后臺任務來調用aci_gatt_update_char_value(...)。這個任務將在主程序循環中運行,并在檢測到按鈕按下事件時調用API。 當按鈕被按下時,我們希望更新藍牙GATT特征值。為了實現這一目標,我們需要創建一個在后臺運行的任務,而不是直接在中斷處理程序中調用API。這是因為ACI接口不是可重入的,直接在中斷處理程序中調用API可能導致不安全的情況。
app_conf.h
在app_conf.h中定義自定義任務。
/* USER CODE BEGIN Defines */
void myTask(void);
/* USER CODE END Defines */
同時添加任務定義。
/* 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中的藍牙初始化中注冊我們自己的任務和調度任務。 UTIL_SEQ_RegTask(1 << CFG_MY_TASK, UTIL_SEQ_RFU, myTask) 和 UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0) 是用于任務調度和任務優先級設置的。 UTIL_SEQ_RegTask(1 << CFG_MY_TASK, UTIL_SEQ_RFU, myTask) 將一個名為 myTask 的任務注冊到任務調度器中。 UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0)為設置優先級。
/* 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按鍵。
同時配置為上拉,默認狀態下電平為高電平狀態。
custom_app.c
編寫我們的myTask任務函數,通過檢測PC4按鍵進行數據發送。 檢測一個按鍵(SW1)是否被按下,如果按下則執行相應的操作,包括更新UpdateCharData數組的第一個元素,調用自定義函數Custom_STM_App_Update_Char進行處理,就是向手機APP發送一個0xbb的數據。
/* 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 */
結果演示
審核編輯:湯梓紅
-
藍牙
+關注
關注
114文章
5866瀏覽量
171216 -
瑞薩
+關注
關注
35文章
22310瀏覽量
86746 -
開發板
+關注
關注
25文章
5121瀏覽量
98195 -
BLE
+關注
關注
12文章
670瀏覽量
59596 -
STM32WB55
+關注
關注
0文章
26瀏覽量
1373
發布評論請先 登錄
相關推薦
STM32WB55_NUCLEO開發(9)----接收手機數據點亮LED
![<b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發</b>(9)----接收<b class='flag-5'>手機</b><b class='flag-5'>數據</b>點亮LED](https://file.elecfans.com/web2/M00/7A/6C/pYYBAGNt6D2Aa5lOAAe9ooFYepE929.jpg)
STM32WB55_NUCLEO開發(12)----FUS更新
![<b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發</b>(12)----FUS更新](https://file1.elecfans.com/web2/M00/AF/C3/wKgZomVR0TOAJJA-AAe9kfSfXPM124.jpg)
STM32WB55如何檢測/調試P-NUCLEO-WB55.Nucleo的BLE_p2pServer中的read_event示例代碼
P-NUCLEO-WB55 STMicroelectronicsPNUCLEOWB55STM32WBNucleo68數據包
stm32wb55 基于rtt的ble sample制作過程
![<b class='flag-5'>stm32wb55</b> 基于rtt的ble sample制作過程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32WB55_NUCLEO開發(2)----使用STM32CubeMX生成的簡單BLE應用程序連接手機APP
![<b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發</b>(2)----使用<b class='flag-5'>STM32</b>CubeMX生成的簡單BLE應用程序連接<b class='flag-5'>手機</b>APP](https://file.elecfans.com/web2/M00/7A/6C/pYYBAGNt6D6ARN52ACdMSsI7Jus393.jpg)
STM32WB55_NUCLEO開發(5)----手機與STM32WB通過鍵入密鑰配對
![<b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發</b>(5)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>通過鍵入密鑰配對](https://file.elecfans.com/web2/M00/7A/6C/pYYBAGNt6D2Aa5lOAAe9ooFYepE929.jpg)
STM32WB55_NUCLEO開發(6)----手機與STM32WB通過配對后進行數值比較
![<b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發</b>(6)----<b class='flag-5'>手機</b>與<b class='flag-5'>STM32WB</b>通過配對后進行數值比較](https://file.elecfans.com/web2/M00/7A/6C/pYYBAGNt6D2Aa5lOAAe9ooFYepE929.jpg)
STM32WB55_NUCLEO開發(8)----授權
![<b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>開發</b>(8)----授權](https://file.elecfans.com/web2/M00/7A/6C/pYYBAGNt6D2Aa5lOAAe9ooFYepE929.jpg)
DB4388_NUCLEO_WB55RG NUCLEO_WB15CC 數據手冊摘要
![DB4388_<b class='flag-5'>NUCLEO_WB55</b>RG <b class='flag-5'>NUCLEO_WB</b>15CC <b class='flag-5'>數據</b>手冊摘要](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論