我是靠谱客的博主 纯情月饼,最近开发中收集的这篇文章主要介绍基于HC-05的蓝牙透传(附stm32f103程序),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.什么是蓝牙透传?

     透传是最简单也是最常见的通讯方式(如下图所示),透传也叫串口透传,就是透明传输的意思,透传是一种工作方式,不是一种功能,一般出现在串口模式中,蓝牙透传的存在是为了让用户更好的开发蓝牙无线产品,不需要关心蓝牙协议栈是如何实现。串口模块具体的工作机制就是不对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程序)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部