藍芽4 0 BLE 資料傳輸(四)

2021-08-17 16:55:35 字數 1569 閱讀 7585

今天我們做乙個簡單的資料傳輸實驗,就是用ti提供的lightblue 來點亮控制led

這個很簡單,我沒有用協議棧裡面的hal_led,因為我看了,這個很麻煩,明明兩句話的事情非搞得那麼複雜,廢話不說直接來分析。開啟cc2540協議棧中的例子******bleperipheral.eww。

首先我們得把hal_led的巨集關了,

新增hal_led=false,這樣 ble協議棧裡面的hal_led就算是廢了。

接下來看我的,首先對led初始化,這個就簡單了,就是和我們的51是一樣的,

我是在initboard函式裡面新增的led初始化:     

p1dir |= 0x02; //設定p1_0,p1_1的io為輸出模式

p1_0 = 0; //關閉led1

p1_1 = 0; //關閉led2

就這樣初始化搞定了,下面我們就回顧一下,client向主機傳送資料用的是write,就是手機把資料寫進cc2540裡面去。在我們的lightblue這個軟體裡,characteristic3有些的屬性。因此我們就可以更改一下源**。

首先我們定義我們的任務事件

#define       mytasck_event         0x0002;

定義完以後我們得觸發事件啊 對吧?

那我們就在sbp_start_device_evt   (自己定義的******bleperipheral_init 這個事件 用的是

osal_set_event( ******bleperipheral_taskid, sbp_start_device_evt );這個函式觸發我們的******bleperipheral_init 事件)    事件裡面進行操作。

那麼我們該如何觸發自己定義的  mytasckevent 事件呢?

在這之前我們得介紹一下新的api  osal_start_timerex

該函式是每隔5s顯示一次,去掉後,節點加入網路後,只顯示一次,就是說這個函式但是乙個定

我們可以500個時間單位觸發一次所以**該這麼寫:

#define my_tasck_evt_period                   500

if ( events & sbp_start_device_evt )

if ( events & 

mytasck_event)

//執行自己的任務

mytasck();

return (events ^ 

mytasck_event); }

void mytasck()

else

}就這樣,編譯以後把程式燒到板子裡面就ok了,

在這裡輸入1,那麼我們的led就亮了,輸入其他的數值我們的led就會熄滅。

藍芽4 0 BLE 資料傳輸 (一)

一 簡介 本文主要講解藍芽資料傳輸一。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf 主晶元cc2541 三 博主 si zhou qun 84342712 495527583 qq.com 開源四軸群 84342712 開源四...

藍芽4 0 BLE 資料傳輸 (一)

1 profile profile可以理解為一種規範,乙個標準的通訊協議,它存在於從機中。藍芽組織規定了一些標準的profile,例如 hid over gatt 防丟器 心率計等。每個profile中會包含多個service,每個service代表從機的一種能力。2 service service...

藍芽4 0 BLE 資料傳輸 (二)

在第一部分我們了解了幾個專業詞彙,接下來我們再了解一下資料的傳送 一 資料傳送 在ble協議棧中進行資料傳送分為兩個方面,乙個事gatt的client主動向service傳送資料,另乙個是gatt的service主動向client傳送資料 我們暫且簡單的分為主機向從機傳送資料,從機主動向主機傳送資料...