蓝牙学习心得

蓝牙学习心得

一、连接步骤(最关键)---->配对蓝牙

1、【AT模式】两个蓝牙模块的PIO11接VCC,上电后即进入AT指令模式,都用USB转TTL模块连接到电脑的USB接口。

2、【打开串口调试助手】开启2个串口调试窗口,一个打开蓝牙A的COM口,一个打开蓝牙B的COM口。【默认波特率一般为38400】

3、【恢复A默认设置】串口调试助手A,将蓝牙A恢复默认设置:AT+ORGL\r\n 【\r\n即回车、换行,在串口调试助手上输入一个回车即可】

4、【设置A配对码】串口调试助手A,配置蓝牙A的配对码:AT+PSWD=1212\r\n 【蓝牙A与蓝牙B的配对码相同,这样才能成功配对】

5、【设置A主模式】串口调试助手A,将蓝牙A配置为主机模式:AT+ROLE=1\r\n

6、【恢复B默认设置】串口调试助手B,将蓝牙B恢复默认设置:AT+ORGL\r\n

7、【设置B配对码】串口调试助手B,配置蓝牙B的配对码与蓝牙A一致:AT+PSWD=1212\r\n

8、【设置B从模式】串口调试助手B,将蓝牙B配置为从机模式:AT+ROLE=0\r\n

9、【 查询B地址 】串口调试助手B,查询蓝牙B的地址:AT+ADDR?\r\n 【如2015:2:120758】

10、【蓝牙A绑定蓝牙B】串口调试助手A,蓝牙A绑定蓝牙B地址:AT+BIND=2015,2,120758\r\n 【注意把地址的冒号换成逗号】

11、【常规工作模式】2个模块的PIO11引脚都接地,重新上电后进入常规工作模式,自动完成配对。之后,串口调试助手A和串口调试助手B就能互传数据了。

二、蓝牙通信

1、首先要把程序下载到单片机中,写好能够通信的初始化,以及通信要做的内容

void uart_init(u32 bound)   //设置与蓝牙一致的波特率
{                           //接下来就是初始化
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	

	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	

	USART_InitStructure.USART_BaudRate=bound;
	USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
	USART_InitStructure.USART_Parity=USART_Parity_No;
	USART_InitStructure.USART_StopBits=USART_StopBits_1;
	USART_InitStructure.USART_WordLength=USART_WordLength_8b;
	USART_Init(USART1,&USART_InitStructure);
	

	USART_Cmd(USART1,ENABLE);
	

	USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); 
	
	NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
	NVIC_Init(&NVIC_InitStructure);
}

void USART1_IRQHandler(void)                	//串口1中断服务程序
{
	u8 Receive_Data;
	if(USART_GetITStatus(USART1,USART_IT_RXNE))
	{
		Receive_Data = USART_ReceiveData(USART1);   //把发送的值存储到Receive_Data
                                                    //接下来只要判断Receive_Data是否有你要得值
		if(Receive_Data == 'a')                //每发送一个'a'就会使绿灯闪烁一下
		{
			LED1 = 1;
			delay_ms(1000);
			USART_SendData(USART1,Receive_Data);
		}
		else if(Receive_Data ==  'b') LED1 = 1;
		else if(Receive_Data ==  'c') LED0 = 0;
	}
}

2、硬件连接----->非常容易出错,我被它困惑了很久

蓝牙连接除了VCC和GND以外,在往单片机上连接时要连上你程序上写的引脚,比如我上面就写了PA9和PA10

,所以蓝牙上的RXD要连PA9,TXD要连PA10!!!

最后就可以发消息通信了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值