基于stm32f103c8t6蓝牙连接模块hc-05

发布时间 2023-12-29 17:48:06作者: 遥远的死神

一、蓝牙通信流程

最简单实际的的蓝牙通信过程就是
单片机——蓝牙——手机蓝牙app
蓝牙作为桥梁进行单片机与手机数据的交换
蓝牙就如同一个无线的USART一样,将两者连接。

二、硬件资料

1.管教图

 连接图:

 实物:连接图

 

 

 

 三、软件资料

1.电脑蓝牙调试软件网址

广州汇承信息科技有限公司 (hc01.com) 网址

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;
        }
    }
}

四、实验现象

参考视频

五、结尾

只是实现了电脑蓝牙连接功能,期待下次进步。