蓝牙遥控基础(代码控制小车)

本文详细介绍了蓝牙HC-06模块的功能特性,包括其作为无线技术标准的应用,实现短距离数据交换的能力,以及与STM32微控制器的接线方法。探讨了模块的通信接口、工作状态指示、供电需求、有效通信距离、通信格式限制,以及通过AT指令进行的配置。同时,提供了STM32F103C8T6与HC-06模块的UART通信配置代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝牙

蓝牙( Bluetooth® )

是一种无线技术标准, 可实现固定设备、移动设备和楼宇个人域网 之间的短距离数据交换(使用2.4—2.485GHz 的ISM波段的UHF无线电波)。蓝牙技术最初 由电信巨头爱立信公司于1994年创制,当时 是作为RS232数据线的替代方案。蓝牙可连接 多个设备,克服了数据同步的难题。

通信接口说明

• 与STM32接线方法 STM32F103C8T6 • TXD----接PB11 RXD—接PB10

产品特性

• 1、核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状 态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接,KEY引脚对从机无效
• 2、led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝 牙已连接并打开了端口
• 3、底板3.3V LDO,输入电压3.6~6V,未配对时电流约30mA,配 对后约10mA,输入电压禁止超过7V!
• 4、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC, ARM,MSP430等),5V单片机也可直接连接,无需MAX232也不 能经过MAX232!
• 5、空旷地有效距离10米,超过10米也是可能的,但不对此距离 的连接质量做保证
• 6、配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅 支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最 常用的通信格式,不支持其他格式。
• 7、在未建立蓝牙连接时支持通过AT指令设置波特率、名称、配 对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模 式
• 8、体积小巧(3.57cm*1.52cm),工厂贴片生产,保证贴片质量。 并套透明热缩管,防尘美观,且有一定的防静电能力。
• 9、该链接为从机,从机能与各种带蓝牙功能的电脑、蓝牙主机、 大部分带蓝牙的手机、PDA、PSP等智能终端配对,从机之间不能 配对。

• TXD:发送端,一般表示为自己的发送端,正常通信必须接另一 个设备的RXD。
• RXD:接收端,一般表示为自己的接收端,正常通信必须接另一 个设备的TXD。
• 正常通信时候本身的TXD永远接设备的RXD!
• 自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自 己发送的数据顾名思义,也就是自己接收自己发送的数据,即自 身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常, 是最快最简单的测试方法,当出现问题时首先做该测试确定是否 产品故障。也称回环测试。


//UART function
//UART3 TxD GPIOB10  推晚复用输出
// RxD GPIOB11    浮空输入    全双工
void USART3Conf(u32 baudRate)
{
	NVIC_InitTypeDef 	NVIC_InitStruct;//定义一个设置中断的结构体	
	USART_InitTypeDef USART_InitSturct;//定义串口1的初始化结构体
	GPIO_InitTypeDef GPIO_InitStruct;//定义串口对应管脚的结构体

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3 , ENABLE);//打开串口管脚时钟
	//USART3_Tx_Pin Configure 
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;//输出引脚 PB10
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;//设置最高速度50MHz
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//推挽复用输出
	GPIO_Init(GPIOB , &GPIO_InitStruct);//将初始化好的结构体装入寄存器

//USART3_Rx_Pin Configure
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//GPIO模式悬浮输入
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;//输入引脚
  GPIO_Init(GPIOB, &GPIO_InitStruct);//将初始化好的结构体装入寄存器

//USART3 Configure	
	USART_InitSturct.USART_BaudRate = baudRate;//波特率9600
	USART_InitSturct.USART_WordLength = USART_WordLength_8b;//数据宽度8位
	USART_InitSturct.USART_StopBits = USART_StopBits_1;//一个停止位
	USART_InitSturct.USART_Parity = USART_Parity_No;//无奇偶校验
	USART_InitSturct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitSturct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//使能发送与接收
	USART_Init(USART3 , &USART_InitSturct);//将初始化好的结构体装入寄存器	
	//USART1_INT Configure
	USART_ITConfig(USART3 , USART_IT_RXNE , ENABLE);//使能接收中断
//	USART_ITConfig(USART3 , USART_IT_TXE , ENABLE);
	USART_Cmd(USART3 , ENABLE);//打开串口
	USART_ClearFlag(USART3 , USART_FLAG_TC);//解决第一个数据发送失败的问题
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
	NVIC_InitStruct.NVIC_IRQChannel = USART3_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;//打开该中断
	NVIC_Init(&NVIC_InitStruct);
	
}

USART_ITConfig(USART3 , USART_IT_RXNE , ENABLE)//使能接收中断
在这里插入图片描述

中断函数

void USART3_IRQHandler(void)
{
	unsigned char rec_data;
  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
  {
		USART_ClearITPendingBit(USART3, USART_IT_RXNE);
    /* Read one byte from the receive data register */
    rec_data = USART_ReceiveData(USART3);
		bt_rec_flag = 1;
		ctrl_comm = rec_data;
		continue_time = 40;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值