概述
一.什么是蓝牙透传?
透传是最简单也是最常见的通讯方式(如下图所示),透传也叫串口透传,就是透明传输的意思,透传是一种工作方式,不是一种功能,一般出现在串口模式中,蓝牙透传的存在是为了让用户更好的开发蓝牙无线产品,不需要关心蓝牙协议栈是如何实现。串口模块具体的工作机制就是不对MCU要传输的数据做任何处理,也不需要自己增加什么协议。
特点:
(1).这个过程数据不用处理;
(2).不会丢失数据;
(3).双向传输;
(4).透传的数据包没有协议封装,自己可以控制数据包的大小;
(5).无需了解复杂的蓝牙底层协议,只要简单几步设置就可以实现蓝牙透传。
二.HC-05蓝牙模块
特点:
(1)输入电压:3.6--6v,禁止超过7v
(2)波特率为1200,2400,4800,9600,19200,38400,57600,115200 用户可以自己设置。
(3)工作范围:最大10米。
(4)工作原理
HC-05通过TX和RX引脚,支持使用标准AT命令。为此,用户必须使用在设备启动时进入特殊命令模式,这时通过在打开模块时将钥匙销拉低来完成。否则,设备将启动进入数据模式,这样它就可以与其它设备进行无线通信,
模块启动后,任何蓝牙设备(例如智能手机)都应该可以发现他。然后,可以使用标准密码(1234)连接到设备。建立连接后,数据通过HC-05传输并转换为串行流。然后由模块连接的微控制器读取该串行流。
三.HC-05蓝牙模块透传模式的调试
(1).连接USB转TTL模式(注意TX连接RX,RX连接TX)
( 2).进入AT指令模式
进入命令相应模式,先长按HC05上的按键(按键如图所示),再上电(此时指示灯慢闪,大约1秒一次)即成功进入AT指令命令响应模式。这时打开串口助手,可以进行AT指令交互,设置相应参数
1.通讯波特率、校验位、停止位。
2.工作模式(主、从、回环)
3.连接密码、名字
AT指令集。链接:https://pan.baidu.com/s/19Py4Y_qCsRM-k9sdDX4exA
提取码:yyds
(3)stm32f103蓝牙 手机数据收发
1.连线
HC05与stm32f103单片机的连线与串口通信相似,
VCC-VCC,
GND-GND,
TX-RX,
RX-TX.
2.程序烧入
部分代码:
usart.c
#include "sys.h"
#include "usart.h"
//
//如果使用ucos,则包括下面的头文件即可.
#if SYSTEM_SUPPORT_OS
#include "includes.h" //ucos 使用
#endif
//
//
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
#if EN_USART1_RX //如果使能了接收
//串口1中断服务程序
//注意,读取USARTx->SR能避免莫名其妙的错误
u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.
//接收状态
//bit15, 接收完成标志
//bit14, 接收到0x0d
//bit13~0, 接收到的有效字节数目
u16 USART_RX_STA=0; //接收状态标记
void uart_init(u32 bound){
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
//USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
//USART1_RX GPIOA.10初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
//Usart1 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USART1, &USART_InitStructure); //初始化串口1
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
USART_Cmd(USART1, ENABLE); //使能串口1
}
#endif
main.c
#include "delay.h"
#include "sys.h"
#include "usart.h"
void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
res=USART_ReceiveData(USART1);
USART_SendData(USART1,res);
}
}
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(9600);
USART1_IRQHandler();
while(1);
}
完整程序链接:https://pan.baidu.com/s/1PHbPJKh6q9iwJmWobQ_gkg
提取码:yyds
3.手机端应用市场下载 Bluetooth Serial即可开发调试
最后
以上就是纯情月饼为你收集整理的基于HC-05的蓝牙透传(附stm32f103程序)的全部内容,希望文章能够帮你解决基于HC-05的蓝牙透传(附stm32f103程序)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复