为什么我用手机可以连接上stm32上面的蓝牙模块,用手机发送命令的时候也有提示成功,但是stm32就是不执行我发送的命令,命令如下,都是蓝牙模块例程里面的,我改用串口3跟蓝牙连接,到底哪里有问题,哪里没问题
[mw_shl_code=c,true]void HC05_Play(void)
{
uint8_t key;
uint8_t cnt_flag;
uint8_t sendmask=0;
uint8_t sendcnt=0;
uint8_t sendbuf[20];
uint8_t reclen=0;
key=KEY_Scan();
cnt_flag++;
if(key==3) //切换模块主从设置
{
key=HC05_Get_Role();
if(key!=0XFF)
{
key=!key; //状态取反
if(key==0)HC05_Set_Cmd("AT+ROLE=0");
else HC05_Set_Cmd("AT+ROLE=1");
// HC05_Role_Show();
HC05_Set_Cmd("AT+RESET"); //复位ATK-HC05模块
}
}else if(key==1)
{
sendmask=!sendmask; //发送/停止发送
if(sendmask==0);//LCD_Fill(30+40,160,240,160+16,WHITE);//清除显示
}else delay_ms(10);
if(cnt_flag==50)
{
if(sendmask) //定时发送
{
sprintf((char*)sendbuf,"ALIENTEK HC05 %d\r\n",sendcnt);
// LCD_ShowString(30+40,160,200,16,16,sendbuf); //显示发送数据
u3_printf("ALIENTEK HC05 %d\r\n",sendcnt); //发送到蓝牙模块
sendcnt++;
if(sendcnt>99)sendcnt=0;
}
// HC05_Sta_Show();
cnt_flag=0;
LED0=!LED0;
}
if(USART3_RX_STA&0X8000) //接收到一次数据了
{
// LCD_Fill(30,200,240,320,WHITE); //清除显示
reclen=USART3_RX_STA&0X7FFF; //得到数据长度
USART3_RX_BUF[reclen]=0; //加入结束符
if(reclen==9||reclen==8) //控制DS1检测
{
if(strcmp((const char*)USART3_RX_BUF,"+LED1 ON")==0)LED1=0; //打开LED1
if(strcmp((const char*)USART3_RX_BUF,"+LED1 OFF")==0)LED1=1;//关闭LED1
}
// LCD_ShowString(30,200,209,119,16,USART2_RX_BUF);//显示接收到的数据
USART3_RX_STA=0;
}
}[/mw_shl_code]
|