基于stm32f103的蓝牙配置

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#includehc05.h#includeusart2.h#includeSysTick.hu8HC05_Init(void){u8retry=10,t;u8temp=1;GPIO_InitTypeDefGPIO_InitStructure;/*configUSART2clock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//LED对应引脚GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为50MHzGPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//KEY对应引脚GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_0);USART2_Init(9600);//初始化串口2为:9600,波特率.while(retry--){HC05_KEY=1;//KEY置高,进入AT模式Delay_ms(10);u2_printf(AT\r\n);//发送AT测试指令HC05_KEY=0;//KEY拉低,退出AT模式for(t=0;t10;t++)//最长等待50ms,来接收HC05模块的回应{if(USART2_RX_STA&0X8000)break;Delay_ms(5);}if(USART2_RX_STA&0X8000)//接收到一次数据了{temp=USART2_RX_STA&0X7FFF;//得到数据长度USART2_RX_STA=0;if(temp==4&&USART2_RX_BUF[0]=='O'&&USART2_RX_BUF[1]=='K'){temp=0;//接收到OK响应printf(蓝牙响应OK!\r\n);printf(%s\r\n,USART2_RX_BUF);break;}//zainali}}if(retry==0){temp=1;//检测失败printf(蓝牙响应失败!!!);}returntemp;}//获取ATK-HC05模块的角色//返回值:0,从机;1,主机;0XFF,获取失败.u8HC05_Get_Role(void){u8retry=0X0F;u8temp,t;while(retry--){HC05_KEY=1;//KEY置高,进入AT模式Delay_ms(10);u2_printf(AT+ROLE?\r\n);//查询角色for(t=0;t20;t++)//最长等待200ms,来接收HC05模块的回应{Delay_ms(10);if(USART2_RX_STA&0X8000)break;}HC05_KEY=0;//KEY拉低,退出AT模式if(USART2_RX_STA&0X8000)//接收到一次数据了{temp=USART2_RX_STA&0X7FFF;//得到数据长度USART2_RX_STA=0;if(temp==13&&USART2_RX_BUF[0]=='+')//接收到正确的应答了{temp=USART2_RX_BUF[6]-'0';//得到主从模式值printf(到这里就得到了主从模式!!!!\r\n?);printf(%s,USART2_RX_BUF);break;}}}if(retry==0){temp=0XFF;//查询失败.printf(蓝牙主从模式失败!!!);}returntemp;}//ATK-HC05设置命令//此函数用于设置ATK-HC05,适用于仅返回OK应答的AT指令//atstr:AT指令串.比如:AT+RESET/AT+UART=9600,0,0/AT+ROLE=0等字符串//返回值:0,设置成功;其他,设置失败.u8HC05_Set_Cmd(u8*atstr){u8retry=0X0F;u8temp,t;while(retry--){HC05_KEY=1;//KEY置高,进入AT模式Delay_ms(10);u2_printf(%s\r\n,atstr);//发送AT字符串HC05_KEY=0;//KEY拉低,退出AT模式for(t=0;t20;t++)//最长等待100ms,来接收HC05模块的回应{if(USART2_RX_STA&0X8000)break;Delay_ms(5);}if(USART2_RX_STA&0X8000)//接收到一次数据了{temp=USART2_RX_STA&0X7FFF;//得到数据长度USART2_RX_STA=0;if(temp==4&&USART2_RX_BUF[0]=='O')//接收到正确的应答了{temp=0;break;}}}if(retry==0)temp=0XFF;//设置失败.returntemp;}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功