BLE NRF51822教程9 動態廣播

2021-07-22 02:26:46 字數 1196 閱讀 6266

本講接收如何實現動態廣播。

教程基於 9.0 sdk中的 uart例子。

實現動態廣播的方法是  廣播->停止廣播->修改引數->重啟廣播

所以我們通過乙個定時器來週期性的  關閉廣播然後再修改廣播資料之後再開啟廣播。

sdk 9.0中的廣播搞了好幾個模式,做的有點麻煩,所以我對他做了比較大的改動。

首先 在main.c中 中的advertising_init函式需要改動。

主要修改還新增了紅色部分。將 flag 改為了general。後面又將廣播超時設定為0從而實現無線廣播。

去掉了根據廣播模式來設定廣播資料的函式以及對 掃瞄響應資料的設定。

void advertising_init(void)

然後是啟動廣播函式。 main 函式中用的是ble_advertising_start。

我們這裡不用。直接實現乙個自己的簡單函式

void myadv_start(void)

之後我們做乙個定時器。定時器的作用是以2s為週期 來關閉修改廣播引數然後啟動廣播

在main 函式中做如下修改,建立乙個 2s定時器 my_timer,並且開啟它

int main(void)

}然後實現自己的 定時器的溢位處理函式

void my_timer_handler(void *p_contex)

這裡做的動態廣播是動態修改廣播資料中的 廠商自定義字段。每次呼叫

advertising_init 函式的時候廠商自定義欄位的值都會遞增。在advertising_init函式中有注釋說明

到這裡動態廣播要做的事已經做完了。

不過在uart例子中還需要做乙個改動,我們建立了乙個自己的timer,不過uart例子中定義的 允許使用的最大的timer數就是它已經使用的數量,所以我們再新增自己的timer會出錯。

之後燒錄程式就能看到廣播資料中的廠商自定義欄位在動態改變了

BLE NRF51822教程 RSSI獲取

當手機和裝置連線上後,裝置端可以通過獲取rssi來 在一定程度上判斷手機離裝置的相對距離的遠近。獲取函式很簡單直接呼叫sd ble gap rssi get介面函式就行了,傳入連線控制代碼和buff就能獲取到 最近一次連線事件中的 接收訊號強度。呼叫該函式之前需要先呼叫sd ble gap rssi...

BLE NRF51822教程8 動態廣播

本講接收如何實現動態廣播。教程基於 9.0 sdk中的 uart例子。實現動態廣播的方法是 廣播 停止廣播 修改引數 重啟廣播 所以我們通過乙個定時器來週期性的 關閉廣播然後再修改廣播資料之後再開啟廣播。sdk 9.0中的廣播搞了好幾個模式,做的有點麻煩,所以我對他做了比較大的改動。首先 在main...

BLE NRF51822教程8 動態廣播

ble nrf51822教程8 動態廣播 2015 12 29 17 38 35 分類 嵌入式 本講接收如何實現動態廣播。教程基於 9.0 sdk中的 uart例子。實現動態廣播的方法是 廣播 停止廣播 修改引數 重啟廣播 所以我們通過乙個定時器來週期性的 關閉廣播然後再修改廣播資料之後再開啟廣播。...