一、蓝牙通信流程
最简单实际的的蓝牙通信过程就是
单片机——蓝牙——手机蓝牙app
蓝牙作为桥梁进行单片机与手机数据的交换
蓝牙就如同一个无线的USART一样,将两者连接。
二、硬件资料
1.管教图
连接图:
实物:连接图
三、软件资料
1.电脑蓝牙调试软件网址
2.工具
3.连接成功
#include "stm32f10x.h" // Device header #include "Serial.h" extern uint8_t RxSTA; void HC05_Init() { Serial_Init(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); } void HC05_EnterAT() { GPIO_SetBits(GPIOA, GPIO_Pin_0); } void HC05_ExitAT() { GPIO_ResetBits(GPIOA, GPIO_Pin_0); } void HC05_SendString(char *Buf) { Serial_Printf(Buf); } void HC05_GetData(char *Buf) { uint32_t count = 0, a = 0; while (count < 10000) { if (Serial_GetRxFlag() == 1) { Buf[a] = Serial_GetRxData(); a ++; count = 0; RxSTA = 0; } count ++; } }
主函数
#include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "HC05.h" uint8_t RxSTA = 1; char RxData[100] = "None"; int main(void) { OLED_Init(); HC05_Init(); OLED_ShowString(1, 1, "RxData:"); OLED_ShowString(2, 1, RxData); while (1) { HC05_GetData(RxData); if (RxSTA == 0) { OLED_Clear(); OLED_ShowString(1, 1, "RxData:"); OLED_ShowString(2, 1, RxData); RxSTA = 1; } } }
四、实验现象
参考视频
五、结尾
只是实现了电脑蓝牙连接功能,期待下次进步。
标签:GPIO,05,void,蓝牙,OLED,HC05,stm32f103c8t6,hc,include From: https://www.cnblogs.com/yaoyuandesishen/p/17935438.html