蓝牙技术学习
直播中

刘政玮

7年用户 196经验值
私信 关注
[问答]

为什么蓝牙HC06与MINI STM32连接不上?

手机蓝牙与蓝牙在配对的情况下,手机发送的信息串口助手可以显示接收到的信息,同时串口助手发送的信息,在手机的接收区也可以显示出来的。问题是手机发送的信息为什么STM32接收不到呢?
因为STM32执行到下面这个程序后,就停止了。这个问题怎么破啊?求各位大神帮帮忙。万分感谢。
while(HC05_Init()) //??????ATK-HC05???é  
{
     LCD_ShowString(30,90,200,16,16,"ATK-HC05 Error!");
    delay_ms(500);
    LCD_ShowString(30,90,200,16,16,"Please Check!!!");
    delay_ms(100);
}

回帖(3)

史靖文

2019-3-11 10:43:15
停在这里,说明程序根本没往下跑,自然无法收到数据了。
如果你不需要配置蓝牙模块,那就直接吧我们的代码,指令收发相关的内容都屏蔽掉,就可以了。只要配置波特率,这样最简单了。当透明串口用
举报

孙婷婷

2019-3-11 10:56:04
我的蓝牙模块HC06可以通过串口助手进行AT模式的调试,也可以通过手机蓝牙发送数据到串口助手,串口助手也能收到手机蓝牙发过来的数据,可是为什么手机就是不能控制STM32啊?是不是串口助手要通过USMART相关函数和STM32接通,才能去控制STM32?
举报

赵竞

2019-3-11 11:10:49
原子哥:还是不行啊。今天试了一天的。即使当作透明串口使用也不行啊。STM32压根收不到来自手机通过蓝牙模块发送过来的指令啊?麻烦您帮帮忙
我用的蓝牙是HC06模块
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "hc05.h"
#include "usart2.h"  
#include "string.h" 
#include "key.h"
////????ATK-HC05???é???÷??×???
//   void HC05_Role_Show(void)
//    {
//       if(HC05_Get_Role()==1)LCD_ShowString(30,140,200,16,16,"ROLE:Master");//?÷?ú
//       else LCD_ShowString(30,140,200,16,16,"ROLE:Slave "); //???ú
//    }
////  ????ATK-HC05???é??????×???
//    void HC05_Sta_Show(void)
//  { 
//     f(HC05_LED)LCD_ShowString(120,140,120,16,16,"STA:Connected ");//????????
//     else LCD_ShowString(120,140,120,16,16,"STAisconnect"); //?????? 
//  }  
int main(void)
 { 
u8 t;
u8 key;
u8 sendmask=0;
u8 sendcnt=0;
u8 sendbuf[20];  
u8 reclen=0;  
delay_init();     //???±??????????  
NVIC_Configuration();  //?è??NVIC????·?×é2:2??????????????2???ì????????
uart_init(9600); //?®??????????9600
LED_Init();//????????LED??????????????
KEY_Init();//??????°??ü
  LCD_Init();//??????LCD
   
POINT_COLOR=RED;
LCD_ShowString(30,30,200,16,16,"ALIENTEK STM32 ^_^");
LCD_ShowString(30,50,200,16,16,"HC05 BLUETOOTH COM TEST");
LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
HC05_Init();
 
//  while(HC05_Init()) //??????ATK-HC05???é  
//{
//    LCD_ShowString(30,90,200,16,16,"ATK-HC05 Error!"); 
//   delay_ms(500);
//    LCD_ShowString(30,90,200,16,16,"Please Check!!!"); 
//  delay_ms(100);
//} 
   LCD_ShowString(30,90,200,16,16,"WK_UP:ROLE KEY0:SEND/STOP");  
   LCD_ShowString(30,110,200,16,16,"ATK-HC05 Standby!");  
   LCD_ShowString(30,160,200,16,16,"Send:");
   LCD_ShowString(30,180,200,16,16,"Receive:");
POINT_COLOR=BLUE;
//HC05_Role_Show();
while(1)
{
  for(t=0;t<10;t++) //×??¤????50ms,??????HC05???é??????
  {
    if(USART2_RX_STA&0X8000)break;
    delay_ms(5);
  }
if(USART2_RX_STA&0X8000)//????????????????
{
        reclen=USART2_RX_STA&0X7FFF;//?????????¤??
        USART2_RX_BUF[reclen]=0; //?????á??·?
//    if(reclen==9||reclen==8) //????DS1?ì??
//     {
      if(strcmp((const char*)USART2_RX_BUF,"ON")==0)LED0=0;//?ò??LED1
      if(strcmp((const char*)USART2_RX_BUF,"OFF")==0)LED0=1;//??±?LED1
//    }
     LCD_ShowString(30,200,209,119,16,USART2_RX_BUF);//????????????????
  }
   USART2_RX_STA=0; 
  }
 
// while(1) 
//{
//key=KEY_Scan(0);
//if(key==WKUP_PRES)//???????é?÷???è??
//{
//   key=HC05_Get_Role(); //·?????:0,???ú;1,?÷?ú;0XFF,?????§°?.  
//if(key!=0XFF)
//{
//key=!key;  //×?????·?   
//if(key==0)
//   HC05_Set_Cmd("AT+ROLE=0");  //ATK-HC05?è???ü??,·?????:0,?è??????;????,?è???§°?.
//else HC05_Set_Cmd("AT+ROLE=1");
//HC05_Role_Show();
//HC05_Set_Cmd("AT+RESET");//????ATK-HC05???é
//}
//}
//else if(key==KEY0_PRES)
//{
//sendmask=!sendmask;//·???/????·???   
//if(sendmask==0)LCD_Fill(30+40,160,240,160+16,WHITE);//????????
//}
//else delay_ms(10);   
//if(t==50)
//{
//if(sendmask)//?¨?±·???
//{
//sprintf((char*)sendbuf,"ALIENTEK HC05 %drn",sendcnt);
//  LCD_ShowString(30+40,160,200,16,16,sendbuf);//????·???????
//u2_printf("ALIENTEK HC05 %drn",sendcnt);//·????????????é
//sendcnt++;
//if(sendcnt>99)sendcnt=0;
//}
//HC05_Sta_Show();    
//t=0;
//LED0=!LED0;      
//}  
//if(USART2_RX_STA&0X8000)//????????????????
//{
//LCD_Fill(30,200,240,320,WHITE);//????????
// reclen=USART2_RX_STA&0X7FFF;//?????????¤??
//  USART2_RX_BUF[reclen]=0; //?????á??·?
//if(reclen==9||reclen==8) //????DS1?ì??
//{
//if(strcmp((const char*)USART2_RX_BUF,"ON")==0)LED1=0;//?ò??LED1
//if(strcmp((const char*)USART2_RX_BUF,"OFF")==0)LED1=1;//??±?LED1
//}
// LCD_ShowString(30,200,209,119,16,USART2_RX_BUF);//????????????????
// USART2_RX_STA=0; 
//}         
//t++;
//}    
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分