色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

STM32WB55開(kāi)發(fā)(3)----斷開(kāi)藍(lán)牙連接

嵌入式單片機(jī)MCU開(kāi)發(fā) ? 來(lái)源:嵌入式單片機(jī)MCU開(kāi)發(fā) ? 作者:嵌入式單片機(jī)MCU開(kāi) ? 2023-12-01 15:43 ? 次閱讀

概述

嵌入式領(lǐng)域中,STM32WB 系列微控制器以其雙核架構(gòu)和強(qiáng)大的無(wú)線連接能力而著稱。特別是其藍(lán)牙5.0的功能使得這款微控制器非常適合那些需要低功耗和高性能無(wú)線連接的應(yīng)用。然而,在實(shí)際的應(yīng)用中,合理和有效地管理藍(lán)牙連接是非常關(guān)鍵的,尤其是當(dāng)設(shè)備需要斷開(kāi)或重新建立連接時(shí)。
本文將針對(duì)STM32WB平臺(tái),提供如何利用其HAL庫(kù)和Bluetooth stack來(lái)斷開(kāi)藍(lán)牙連接的方法。我們將首先了解如何通過(guò)aci_hal_get_link_status函數(shù)獲取當(dāng)前的藍(lán)牙連接狀態(tài),然后,我們將使用hci_disconnect函數(shù)來(lái)斷開(kāi)這些連接。
最近在弄ST的課程,需要樣片的可以加群申請(qǐng):615061293 。

硬件準(zhǔn)備

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

在這里插入圖片描述

視頻教學(xué)

[https://www.bilibili.com/video/BV1U14y16712

樣品申請(qǐng)

[https://www.wjx.top/vm/OhcKxJk.aspx#

源碼下載

[https://download.csdn.net/download/qq_24312945/88324454]

選擇芯片型號(hào)

在這里插入圖片描述

配置時(shí)鐘

HSE與LSE分別為外部高速時(shí)鐘和低速時(shí)鐘,在本文中使用外置的時(shí)鐘源,故都選擇Crystal/Ceramic Resonator選項(xiàng),如下所示:
在這里插入圖片描述

配置時(shí)鐘樹(shù)

在這里插入圖片描述

RTC時(shí)鐘配置

在這里插入圖片描述
RFWKP時(shí)鐘配置

在這里插入圖片描述

查看開(kāi)啟STM32_WPAN條件

可以看到,需要開(kāi)啟RF、RTC、RCC、IPCC、HSEM。
在這里插入圖片描述

配置HSEM

硬件信號(hào)量(HSEM)模塊用于管理多個(gè)進(jìn)程之間共享的訪問(wèn)權(quán)限和資源同步。
開(kāi)啟HSEM如下。
在這里插入圖片描述

配置IPCC

通信控制器(IPCC)模塊的主要用于cpu之間的信號(hào)消息交換。
開(kāi)啟如下所示。

在這里插入圖片描述

配置RTC

在這里插入圖片描述

啟動(dòng)RF

在這里插入圖片描述

開(kāi)啟藍(lán)牙

在這里插入圖片描述

配置為自定義模板。
在這里插入圖片描述

命名設(shè)備名

在這里插入圖片描述

配置BLE GATT

在這里插入圖片描述

配置SVC
在這里插入圖片描述

LED配置

查看原理圖可以得知PB0為藍(lán)色LED,PB1為綠色LED。

在這里插入圖片描述

配置PB0、PB1為輸出IO。

在這里插入圖片描述

設(shè)置工程信息

在這里插入圖片描述

工程文件設(shè)置

在這里插入圖片描述

參考文檔

https://wiki.st.com/stm32mcu/wiki/Connectivity:STM32WB_HeartRate
HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件可以判斷是否構(gòu)建完成。

在這里插入圖片描述

SVCCTL_App_Notification

SVCCTL_App_Notification函數(shù)是一個(gè)藍(lán)牙事件處理器,用于響應(yīng)和處理STM32WB BLE堆棧中發(fā)生的各種事件。
事件處理的主要內(nèi)容:

  1. 斷開(kāi)連接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)
  2. 元事件 (HCI_LE_META_EVT_CODE)
  3. 這部分處理了幾個(gè)子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(連接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的連接建立完成)。
  4. 廠商特定調(diào)試事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)

"在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我們能夠判斷Bluetooth Low Energy(BLE)設(shè)備是否已成功建立了一個(gè)新的連接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我們可以確認(rèn)是否一個(gè)已存在的連接已經(jīng)被斷開(kāi)。這兩個(gè)事件為我們提供了監(jiān)控BLE連接狀態(tài)的重要手段,從而使我們能夠更好地管理設(shè)備的連接生命周期。"

在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一個(gè)IO翻轉(zhuǎn)函數(shù)。

/* USER CODE BEGIN EVT_DISCONN_COMPLETE */
			HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
      /* USER CODE END EVT_DISCONN_COMPLETE */

在這里插入圖片描述
在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一個(gè)IO翻轉(zhuǎn)函數(shù)。
在這里插入圖片描述

ACI_HAL_GET_LINK_STATUS

aci_hal_get_link_status函數(shù)描述中,它返回的Link_Status數(shù)組有8個(gè)元素,這意味著該設(shè)備可以管理最多8個(gè)Bluetooth Low Energy(BLE)連接。每一個(gè)元素代表一個(gè)可能的BLE連接的狀態(tài)。
因此,當(dāng)你想獲取每一個(gè)BLE連接的狀態(tài)并據(jù)此執(zhí)行某些操作(例如斷開(kāi)連接)時(shí),你需要循環(huán)遍歷這8個(gè)可能的連接。

在這里插入圖片描述

在ble_hci_le.h中有該函數(shù)的說(shuō)明,要使用這個(gè)函數(shù)獲取當(dāng)前連接的句柄并隨后斷開(kāi)連接,可以這樣做:
聲明兩個(gè)數(shù)組來(lái)存儲(chǔ)函數(shù)返回的連接狀態(tài)和連接句柄。
調(diào)用aci_hal_get_link_status函數(shù)獲取這些值。
遍歷連接狀態(tài)數(shù)組,查找任何標(biāo)記為已連接的連接(例如,值為0x02或0x05)。
對(duì)于每個(gè)已連接的狀態(tài),從連接句柄數(shù)組中取得相應(yīng)的連接句柄,并使用hci_disconnect函數(shù)來(lái)斷開(kāi)連接。

在這里插入圖片描述

在main.c中添加ble_hci_le.h文件。

/* USER CODE BEGIN Includes */

#include "ble_hci_le.h"
/* USER CODE END Includes */

在main.c中添加變量。

/* USER CODE BEGIN 0 */
uint8_t connect_flag=0;//連接成功標(biāo)志位
uint32_t connect_num=0;//斷開(kāi)連接計(jì)數(shù)器

/* USER CODE END 0 */

在app_ble.c中引用connect_flag變量,可以在連接成功侯讓該標(biāo)志位為1。

/* USER CODE BEGIN Includes */
extern uint8_t connect_flag;//連接成功標(biāo)志位
/* USER CODE END Includes */

可以在HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(連接更新完成)事件中添加標(biāo)志位定義,將connect_flag置位位1。

/* USER CODE BEGIN HCI_EVT_LE_CONN_COMPLETE */
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
					connect_flag=1;
          /* USER CODE END HCI_EVT_LE_CONN_COMPLETE */

在這里插入圖片描述
在主程序中延時(shí)5S左右之后斷開(kāi)連接,遍歷連接狀態(tài)數(shù)組,查找任何標(biāo)記為已連接的連接(例如,值為0x02或0x05)。
對(duì)于每個(gè)已連接的狀態(tài),從連接句柄數(shù)組中取得相應(yīng)的連接句柄,并使用hci_disconnect函數(shù)來(lái)斷開(kāi)連接。

/* Init code for STM32_WPAN */
  MX_APPE_Init();

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    MX_APPE_Process();

    /* USER CODE BEGIN 3 */
		//檢查連接標(biāo)志,如果連接成功,則進(jìn)行處理
		if(connect_flag)
		{
			if(connect_num< 5000)
				connect_num++;
			else
			{
				connect_num=0;
				// 初始化連接句柄變量
				uint16_t Connection_Handle1=0;
				
				// 定義存儲(chǔ)連接狀態(tài)和連接句柄的數(shù)組
				uint8_t linkStatus[8];
				uint16_t linkHandles[8];
				tBleStatus status;
				// 獲取當(dāng)前的連接狀態(tài)
				status = aci_hal_get_link_status(linkStatus, linkHandles);
				// 檢查是否成功獲取連接狀態(tài)
				if (status == BLE_STATUS_SUCCESS) {
						// 遍歷所有可能的連接
						for (int i = 0; i < 8; i++) {
								// 判斷當(dāng)前連接是否處于Peripheral或Central角色
								if (linkStatus[i] == 0x02 || linkStatus[i] == 0x05) { 
										// 斷開(kāi)與此連接句柄關(guān)聯(lián)的連接
										hci_disconnect(linkHandles[i], 0x13); // 使用適當(dāng)?shù)臄嚅_(kāi)原因
								}
						}
					}
				// 重置連接標(biāo)志
				connect_flag=0;
			}
		}
		HAL_Delay(1);
		
  }
  /* USER CODE END 3 */

hci_disconnect

這是一個(gè)藍(lán)牙HCI (Host Controller Interface) 命令的函數(shù)實(shí)現(xiàn),名為 hci_disconnect。HCI是藍(lán)牙規(guī)范中定義的一個(gè)接口,允許主機(jī)與藍(lán)牙控制器之間的通信。
在這里插入圖片描述

在ble_hci_le.h中有該函數(shù)的說(shuō)明,要使用這個(gè)函數(shù)終止現(xiàn)有的藍(lán)牙連接,可以這樣做:
對(duì)應(yīng)的參數(shù)有:
Connection_Handle:這是一個(gè)標(biāo)識(shí)符,指明要斷開(kāi)的連接。其有效值范圍為 0x0000 到 0x0EFF。
Reason:這是一個(gè)表示終止連接原因的參數(shù)。以下是可能的原因及其值:
0x05: 認(rèn)證失敗 (Authentication Failure)
0x13: 遠(yuǎn)程用戶終止了連接 (Remote User Terminated Connection)
0x14: 由于資源不足,遠(yuǎn)程設(shè)備終止了連接 (Remote Device Terminated Connection due to Low Resources)
0x15: 由于關(guān)閉電源,遠(yuǎn)程設(shè)備終止了連接 (Remote Device Terminated Connection due to Power Off)
0x1A: 不支持的遠(yuǎn)程特性 (Unsupported Remote Feature)
0x3B: 不可接受的連接參數(shù) (Unacceptable Connection Parameters)
所以可以用0x13進(jìn)行藍(lán)牙斷開(kāi)。
在這里插入圖片描述

結(jié)果演示

通過(guò)手機(jī)和STM32WB建立連接,然后等待可以看見(jiàn)是否能正確獲取句柄。
在這里插入圖片描述

在這里插入圖片描述

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

    關(guān)注

    114

    文章

    5827

    瀏覽量

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

    關(guān)注

    12

    文章

    660

    瀏覽量

    59416
  • 藍(lán)牙連接
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    3743
  • STM32WB55
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    1325
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32WB55開(kāi)發(fā)(1)----套件概述

    所使用的器件是我們自行設(shè)計(jì)的開(kāi)發(fā)板,該開(kāi)發(fā)板是基于 STM32WB55 系列微控制器所構(gòu)建。STM32WBXX_VFQFPN68 不僅是一款評(píng)估套件,它還集成了眾多現(xiàn)代化的無(wú)線通信技術(shù)
    的頭像 發(fā)表于 12-01 15:40 ?1602次閱讀
    <b class='flag-5'>STM32WB55</b><b class='flag-5'>開(kāi)發(fā)</b>(1)----套件概述

    STM32WB55開(kāi)發(fā)(2)----修改藍(lán)牙地址

    在嵌入式藍(lán)牙開(kāi)發(fā)中,特別是針對(duì)STM32WB系列,修改或配置藍(lán)牙設(shè)備地址是常見(jiàn)的需求。不論是為了實(shí)現(xiàn)特定的測(cè)試、滿足隱私要求,還是為了區(qū)分開(kāi)發(fā)
    的頭像 發(fā)表于 12-01 15:42 ?864次閱讀
    <b class='flag-5'>STM32WB55</b><b class='flag-5'>開(kāi)發(fā)</b>(2)----修改<b class='flag-5'>藍(lán)牙</b>地址

    STM32WB55開(kāi)發(fā)(4)----配置串口打印Debug調(diào)試信息

    STM32WB55系列微控制器上進(jìn)行開(kāi)發(fā)時(shí),實(shí)時(shí)監(jiān)控應(yīng)用程序的運(yùn)行情況和調(diào)試潛在問(wèn)題是至關(guān)重要的。使用串口(USART/UART)進(jìn)行Debug信息打印是一種簡(jiǎn)便、高效的方法。下面是如何在STM32WB55上配置串口來(lái)打印調(diào)試
    的頭像 發(fā)表于 12-01 15:48 ?1308次閱讀
    <b class='flag-5'>STM32WB55</b><b class='flag-5'>開(kāi)發(fā)</b>(4)----配置串口打印Debug調(diào)試信息

    STM32WB55開(kāi)發(fā)板單板設(shè)計(jì)

    STM32WB55開(kāi)發(fā)板(一)單板設(shè)計(jì)-硬件介紹目錄STM32WB55開(kāi)發(fā)板(一)單板設(shè)計(jì)-硬件介紹前言簡(jiǎn)介參數(shù)介紹MCU方面開(kāi)發(fā)板方面
    發(fā)表于 08-06 08:15

    STM32WB55是如何在RT-Thread系統(tǒng)上移植的

    STM32WB55在RT-Thread系統(tǒng)上移植官方藍(lán)牙BLE功能硬件環(huán)境:(1)開(kāi)發(fā)板:ST官方的stm32wb55-st-nucleo開(kāi)發(fā)
    發(fā)表于 08-24 07:20

    STM32WB55開(kāi)發(fā)板的功能是什么?

    STM32WB55開(kāi)發(fā)板的功能是什么?
    發(fā)表于 11-08 06:36

    STM32WB55的相關(guān)資料推薦

    STM32WB55 藍(lán)牙協(xié)議棧運(yùn)行流程解析簡(jiǎn)介STM32WB55是ST公司近期推出的一顆雙核(M0+M4)無(wú)線MCU,主要應(yīng)用在BLE領(lǐng)域,同時(shí)也可以運(yùn)行thread和zigbee等無(wú)線協(xié)議棧。協(xié)議
    發(fā)表于 02-07 08:47

    如何控制stm32wb55的電源呢

    我想了解如何控制 stm32wb55 的電源。我正在運(yùn)行來(lái)自最新 stm32cube 的 PWR_STANDBY_RTC 示例。在待機(jī)狀態(tài)下,我正在讀取 900 uA。這似乎很高。我應(yīng)該期待什么?
    發(fā)表于 12-20 07:24

    stm32wb55 待機(jī)stop睡眠 喚醒后藍(lán)牙工作不正常

    stm32wb55 待機(jī)stop睡眠 喚醒后藍(lán)牙工作不正常? 進(jìn)入待機(jī)睡眠,待機(jī)電流80微安那樣,通過(guò)外部io口喚醒后,接著用手機(jī)的藍(lán)牙連接stm
    發(fā)表于 06-16 21:14

    STM32WB55單片機(jī)的PCB和電路圖合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32WB55單片機(jī)的PCB和電路圖合集免費(fèi)下載。
    發(fā)表于 12-16 08:00 ?87次下載
    <b class='flag-5'>STM32WB55</b>單片機(jī)的PCB和電路圖合集免費(fèi)下載

    STM32WB55開(kāi)發(fā)板(一)單板設(shè)計(jì)-硬件介紹

    STM32WB55開(kāi)發(fā)板(一)單板設(shè)計(jì)-硬件介紹目錄STM32WB55開(kāi)發(fā)板(一)單板設(shè)計(jì)-硬件介紹前言簡(jiǎn)介參數(shù)介紹MCU方面開(kāi)發(fā)板方面
    發(fā)表于 12-01 18:06 ?20次下載
    <b class='flag-5'>STM32WB55</b><b class='flag-5'>開(kāi)發(fā)</b>板(一)單板設(shè)計(jì)-硬件介紹

    STM32WB55 藍(lán)牙協(xié)議棧運(yùn)行流程解析

    STM32WB55 藍(lán)牙協(xié)議棧運(yùn)行流程解析簡(jiǎn)介STM32WB55是ST公司近期推出的一顆雙核(M0+M4)無(wú)線MCU,主要應(yīng)用在BLE領(lǐng)域,同時(shí)也可以運(yùn)行thread和zigbee等無(wú)線協(xié)議棧。協(xié)議
    發(fā)表于 12-04 12:36 ?17次下載
    <b class='flag-5'>STM32WB55</b> <b class='flag-5'>藍(lán)牙</b>協(xié)議棧運(yùn)行流程解析

    STM32WB55在RT-Thread系統(tǒng)上移植官方藍(lán)牙BLE功能

    STM32WB55在RT-Thread系統(tǒng)上移植官方藍(lán)牙BLE功能硬件環(huán)境:(1)開(kāi)發(fā)板:ST官方的stm32wb55-st-nucleo開(kāi)發(fā)
    發(fā)表于 12-04 12:51 ?17次下載
    <b class='flag-5'>STM32WB55</b>在RT-Thread系統(tǒng)上移植官方<b class='flag-5'>藍(lán)牙</b>BLE功能

    stm32wb55 基于rtt的ble sample制作過(guò)程

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

    STM32WB55RG開(kāi)發(fā)(3)----生成 BLE 程序連接手機(jī)APP

    本項(xiàng)目旨在利用 STM32WB55 微控制器的藍(lán)牙低功耗(BLE)功能,實(shí)現(xiàn)與手機(jī) APP 的無(wú)線連接。通過(guò)配置時(shí)鐘源、啟動(dòng)關(guān)鍵模塊(如 RCC、RTC、RF、IPCC 和 HSEM),以及啟用
    的頭像 發(fā)表于 12-16 16:06 ?198次閱讀
    <b class='flag-5'>STM32WB55</b>RG<b class='flag-5'>開(kāi)發(fā)</b>(<b class='flag-5'>3</b>)----生成 BLE 程序<b class='flag-5'>連接</b>手機(jī)APP
    主站蜘蛛池模板: 国产精品免费久久久久影院| free18sex性自拍裸舞| 欧美日韩看看2015永久免费| 精品国产麻豆AV无码| 国产精品久久久久久熟妇吹潮软件| nxgx69日本护士| 97影院午夜午夜伦不卡| 真实的强视频免费网站| 一个人在线观看的视频| 亚洲精品视频在线观看视频 | 中国hdxxxx医院护士| 亚洲一区免费香蕉在线| 亚洲在线v观看免费国| 亚洲精品日韩在线观看视频| 亚婷婷洲AV久久蜜臀无码| 性xxx免费| 亚洲精品视频久久| 妖精视频在线观看高清| 亚洲字幕在线观看| 孕妇高潮抽搐喷水30分钟| 最近免费中文字幕完整版HD| 97国产精品视频在线观看| 99视频免费播放| 川师 最美老师| 国产高清在线a视频大全| 国产系列在线亚洲视频| 娇喘高潮教室h| 久久免费看视频| 男欢女爱免费视频| 热久久伊大人香蕉网老师| 色橹橹欧美在线观看视频高清 | 午夜成a人片在线观看| 校园女教师之禁区| 亚洲午夜福利未满十八勿进| 中文字幕成人在线观看| 99精品国产免费观看视频| 俺也去最新地址| 国产日韩亚洲专区无码| 久久成人免费观看草草影院| 蜜柚影院在线观看免费高清中文| 青青视频国产色偷偷|