91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2023-12-01 15:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

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

硬件準(zhǔn)備

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

在這里插入圖片描述

視頻教學(xué)

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

樣品申請

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

源碼下載

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

選擇芯片型號

在這里插入圖片描述

配置時鐘

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

配置時鐘樹

在這里插入圖片描述

RTC時鐘配置

在這里插入圖片描述
RFWKP時鐘配置

在這里插入圖片描述

查看開啟STM32_WPAN條件

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

配置HSEM

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

配置IPCC

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

在這里插入圖片描述

配置RTC

在這里插入圖片描述

啟動RF

在這里插入圖片描述

開啟藍(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ù)是一個藍(lán)牙事件處理器,用于響應(yīng)和處理STM32WB BLE堆棧中發(fā)生的各種事件。
事件處理的主要內(nèi)容:

  1. 斷開連接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)
  2. 元事件 (HCI_LE_META_EVT_CODE)
  3. 這部分處理了幾個子事件,如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è)備是否已成功建立了一個新的連接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我們可以確認(rèn)是否一個已存在的連接已經(jīng)被斷開。這兩個事件為我們提供了監(jiān)控BLE連接狀態(tài)的重要手段,從而使我們能夠更好地管理設(shè)備的連接生命周期。"

在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一個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中添加一個IO翻轉(zhuǎn)函數(shù)。
在這里插入圖片描述

ACI_HAL_GET_LINK_STATUS

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

在這里插入圖片描述

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

在這里插入圖片描述

在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;//斷開連接計數(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 */

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

/* 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;
				
				// 定義存儲連接狀態(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) { 
										// 斷開與此連接句柄關(guān)聯(lián)的連接
										hci_disconnect(linkHandles[i], 0x13); // 使用適當(dāng)?shù)臄嚅_原因
								}
						}
					}
				// 重置連接標(biāo)志
				connect_flag=0;
			}
		}
		HAL_Delay(1);
		
  }
  /* USER CODE END 3 */

hci_disconnect

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

在ble_hci_le.h中有該函數(shù)的說明,要使用這個函數(shù)終止現(xiàn)有的藍(lán)牙連接,可以這樣做:
對應(yīng)的參數(shù)有:
Connection_Handle:這是一個標(biāo)識符,指明要斷開的連接。其有效值范圍為 0x0000 到 0x0EFF。
Reason:這是一個表示終止連接原因的參數(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)牙斷開。
在這里插入圖片描述

結(jié)果演示

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

在這里插入圖片描述

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

    關(guān)注

    119

    文章

    6312

    瀏覽量

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

    關(guān)注

    13

    文章

    776

    瀏覽量

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

    關(guān)注

    0

    文章

    12

    瀏覽量

    3961
  • STM32WB55
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    2111
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

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

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

    STM32WB55開發(fā)板單板設(shè)計

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

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

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

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

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

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

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

    如何控制stm32wb55的電源呢

    我想了解如何控制 stm32wb55 的電源。我正在運(yùn)行來自最新 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微安那樣,通過外部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 ?106次下載
    <b class='flag-5'>STM32WB55</b>單片機(jī)的PCB和電路圖合集免費(fèi)下載

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

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

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

    STM32WB55 藍(lán)牙協(xié)議棧運(yùn)行流程解析簡介STM32WB55是ST公司近期推出的一顆雙核(M0+M4)無線MCU,主要應(yīng)用在BLE領(lǐng)域,同時也可以運(yùn)行thread和zigbee等無線協(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)開發(fā)板:ST官方的stm32wb55-st-nucleo開發(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制作過程

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

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

    本項目旨在利用 STM32WB55 微控制器的藍(lán)牙低功耗(BLE)功能,實現(xiàn)與手機(jī) APP 的無線連接。通過配置時鐘源、啟動關(guān)鍵模塊(如 RCC、RTC、RF、IPCC 和 HSEM),以及啟用
    的頭像 發(fā)表于 12-16 16:06 ?3156次閱讀
    <b class='flag-5'>STM32WB55</b>RG<b class='flag-5'>開發(fā)</b>(<b class='flag-5'>3</b>)----生成 BLE 程序<b class='flag-5'>連接</b>手機(jī)APP