资源描述:
《基于stm32f103的蓝牙配置.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include"hc05.h"#include"usart2.h"#include"SysTick.h"u8HC05_Init(void){u8retry=10,t;u8temp=1;GPIO_InitTypeDefGPIO_InitStructure;/*configUSART2clock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
2、RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//LED
3、对应引脚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_Spee
4、d=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("ATr");//发送AT测试指令HC05_KEY=0;//KEY拉低,退出AT模式for(t=0;t<10;t++)//最长等待50ms,来接收HC0
5、5模块的回应{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");printf("%sr",USART2_RX_BUF);brea
6、k;}//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");//查询角色for(t=0;t<20;t++)//最长
7、等待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("到
8、这里就得到了主从模式!!!!r?);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
9、(u8*atstr){u8retry=0X0F;u8temp,t;while(retry--){HC05_KEY=1;//KEY置高,进入AT模式Delay_ms(10);u2_printf("%sr",atstr);//发送AT字符串HC05_KEY=0;//KEY拉