OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4083|回复: 4

关于通过手机连接蓝牙发送数据给单片机每次都需重启才可以?

[复制链接]

22

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-5-17
在线时间
29 小时
发表于 2017-6-19 09:47:14 | 显示全部楼层 |阅读模式
请问 当打开手机蓝牙APP 的时候可以连接也可以正常收发数据。但是我退出APP再连接就进不来了,需要重启下单片机才可以重新连接成功,这是为什么啊?  我试过不带USART_RX_STA回车换行功能的时候 没有问题,都是可以正常重连。急急急谢谢
while(1)
{
          /* USER CODE BEGIN 3 */
                if(USART_RX_STA&0x8000)
                {
                        if(strncmp((char*)USART_RX_BUF,"S",1)==0) //通过手机APP发送(530D0A)
                        {
                                len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                                //printf("\r\n您发送的消息为:\r\n");
                                HAL_UART_Transmit(&huart1,(u8 *)USART_RX_BUF,len,1000);        //发送接收到的数据
                                while(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_TC)!=SET);                //等待发送结束
                                //printf("\r\n\r\n");//插入换行
                               
                                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);               
                                HAL_Delay(6000);
                                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
                               
                                USART_RX_STA=0;
                                //memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));
                        }
                        else{
                                len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                                //printf("\r\n您发送的消息为:\r\n");
                                HAL_UART_Transmit(&huart1,(u8 *)USART_RX_BUF,len,1000);        //发送接收到的数据
                                while(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_TC)!=SET);                //等待发送结束
                                //printf("\r\n\r\n");//插入换行
                                USART_RX_STA=0;
                                //memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));
                       
                        }
               
        }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

95

主题

549

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3293
金钱
3293
注册时间
2016-1-7
在线时间
541 小时
发表于 2017-6-19 13:40:02 | 显示全部楼层
如果退出app链接的话,单片机程序里是否也要作退出链接的判断?你这个只是单方面上位机断开,当上位机断开后,单片机应该作出相应断开的判断。状态作自动复位。
回复 支持 反对

使用道具 举报

22

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-5-17
在线时间
29 小时
 楼主| 发表于 2017-6-19 13:46:12 | 显示全部楼层
challenger 发表于 2017-6-19 13:40
如果退出app链接的话,单片机程序里是否也要作退出链接的判断?你这个只是单方面上位机断开,当上位机断开 ...

我知道怎么回事了  成功连接蓝牙的时候都会主动给串口发送一个字符串提示连接成功,而主动发动的字符串是以\0结束的。怎么去掉\0呢  
回复 支持 反对

使用道具 举报

95

主题

549

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3293
金钱
3293
注册时间
2016-1-7
在线时间
541 小时
发表于 2017-6-19 13:56:28 | 显示全部楼层
当手机断开的时候:

if(USART_RX_STA&0x8000)  连接app
{
。。。。

}
else      //否则断开
{
复位单片机状态。。。
}

按上面的思路,应该可以解决你的问题。
回复 支持 反对

使用道具 举报

22

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-5-17
在线时间
29 小时
 楼主| 发表于 2017-6-19 14:04:04 | 显示全部楼层
challenger 发表于 2017-6-19 13:56
当手机断开的时候:

if(USART_RX_STA&0x8000)  连接app

加个好友聊哈  不能复位单片机~~~如果同意加 你就发我下QQ号子~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表