實現藍芽與手機的雙向通訊 學習筆記

2021-08-21 23:52:54 字數 2824 閱讀 3571

說明需要注意的幾點:

1.us art3_rx_buf[reclen]=0;         //加入結束符,如果不加,就會和某些檔案夾雜在一起,傳回來部分無用的資訊,經測試!

2.接線!!!藍芽與微控制器,任何時候都是 rx-tx,tx-rx。但是stm32精英版中uart3有個很奇怪的錯誤?上圖

這也就是說,在板子上的rx接的微控制器實際引腳是tx,所以接線的時候是對應相接。

#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "lcd.h"

#include "usart.h"

#include "hc05.h"

#include "usart3.h"

#include "string.h"

#include "usmart.h"

//顯示hc05模組的主從狀態

void hc05_role_show(void)

//顯示hc05模組的連線狀態

void hc05_sta_show(void)

int main(void)

hc05_role_show(); //顯示hc05模組的主從狀態

delay_ms(100);

usart3_rx_sta=0; //這個變數代表著接受的內容

/// while(1)

}else if(key==key0_pres) //如果按鍵0按了一下

else

delay_ms(10);

///傳送區域///

if(t==10)

t=0;

led0=!led0;

} ///接受區域/

if(usart3_rx_sta&0x8000) //接收到一次資料了

t++;

}}

hc05_key=1;					//key置高,進入at模式

delay_ms(10);

u3_printf("%s\r\n",atstr); //傳送at字串

//hc05_key=0; //key拉低,退出at模式

我所使用的藍芽是無法通過拉高拉低進入at模式的,所以只需要接4跟線。如下圖:

它建立通訊的方式是按一下正面的那個微動開關,既可以進入通訊。

#include "delay.h" 			 

#include "usart.h"

#include "usart3.h"

#include "hc05.h"

#include "led.h"

#include "string.h"

#include "math.h"

//修改led的連線,原來接pc5,改為pa4,以相容ministm32開發板v3.0

//

//初始化atk-hc05模組

//返回值:0,成功;1,失敗.

u8 hc05_init(void)

if(usart3_rx_sta&0x8000) //接收到一次資料了

}

} if(retry==0)temp=1; //檢測失敗

return temp;

} //獲取atk-hc05模組的角色

//返回值:0,從機;1,主機;0xff,獲取失敗.

u8 hc05_get_role(void)

hc05_key=0; //key拉低,退出at模式

if(usart3_rx_sta&0x8000) //接收到一次資料了

} } if(retry==0)temp=0xff;//查詢失敗.

return temp;

}

//atk-hc05設定命令

//此函式用於設定atk-hc05,適用於僅返回ok應答的at指令

//atstr:at指令串.比如:"at+reset"/"at+uart=9600,0,0"/"at+role=0"等字串

//返回值:0,設定成功;其他,設定失敗.

u8 hc05_set_cmd(u8* atstr)

if(usart3_rx_sta&0x8000) //接收到一次資料了

} } if(retry==0)temp=0xff;//設定失敗.

return temp;

} ///

//通過該函式,可以利用usmart,除錯接在串列埠3上的atk-hc05模組

//str:命令串.(這裡注意不再需要再輸入回車符)

void hc05_cfg_cmd(u8 *str)

hc05_key=0; //key拉低,退出at模式

if(usart3_rx_sta&0x8000) //接收到一次資料了

}

android 實現主線程 子執行緒雙向通訊

在 android 中,不可以在子執行緒中更新 ui 的操作,否則會報錯或者異常資訊。在這種情況下,我們會使用 handler 在 ui 執行緒建立該物件 接收子執行緒的訊息更新 ui.可以看出,這是子執行緒通知主線程,而主線程沒有直接通知子執行緒,那麼我們如何做到這一點?這樣有什麼好處?好處,很明...

拉電流與灌電流(雙向通訊思考)

拉電流與灌電流 拉電流和灌電流是衡量電路輸出驅動能力 注意 拉 灌都是對輸出端而言的,所以是驅動能力 的引數,這種說法一般用在數位電路中。這裡首先要說明,晶元手冊中的拉 灌電流是乙個引數值,是晶元在實際電路中允許輸出端拉 灌電流的上限值 允許最大值 而下面要講的這個概念是電路中的實際值。由於數位電路...

IPC下的雙向通訊 訊息佇列

訊息佇列 訊息佇列提供了一種從乙個程序向另乙個程序傳送乙個資料塊的方法。每個資料塊都被認為是有乙個型別,接收者程序接收的資料塊可以有不同的型別值。我們可以通過傳送訊息來避免命名管道的同步和阻塞問題。訊息佇列與管道不同的是,訊息佇列是基於訊息的,而管道是基於位元組流的,且訊息佇列的讀取不一定是先 入先...