硬件:正点原子战舰V3

蓝牙模块BT04(HC-05也一样的,不过指令不一样)

USB转TTL模块

软件:XCOM串口调试助手(PC)

蓝牙调试宝(安卓平台)

​昨晚调试蓝牙模块,这个蓝牙模块因为只需要连接串口就可以正常工作,应该来说比较简单。但是还是遇到一个小问题,找了很久的原因,调试了很长时间。

​我想要测试的功能是利用手机APP发送命令控制LED灯,下面是主函数:

int main(void)

{

u16 t;

u16 len;

u16 times=0;

delay_init();

LED_Init();

KEY_Init();

USART_Config();

while(1)

{

if(USART_RX_STA&0x8000)

{

switch(USART_RX_BUF[0])

{

case('A'):

Send_data(DEBUG_USARTx,"首位为A,LED1亮\r\n");

LED0=1;

LED1=0;

break;

case('B'):

Send_data(DEBUG_USARTx,"首位为B,LED0亮\r\n");

LED0=0;

LED1=1;

break;

}

USART_RX_STA=0;

}

}

}

​我的想法是,命令中第一位字符为“A”则LED1亮,LED0灭,第一位字符为B则相反。

​这里我用的是中断接收函数,我最开始使用的是正点原子一样的函数直接搬过来,使用PC端的串口调试助手使用USB转TTL模块调试可以正常工作,但是当我利用蓝牙模块连接到手机发送命令无法正常工作,下面是正点原子的中断服务函数:

void DEBUG_USART_IRQHandler(void) //串口1中断服务程序

{

u8 Res;

if(USART_GetITStatus(DEBUG_USARTx, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)

{

Res =USART_ReceiveData(DEBUG_USARTx);//读取接收到的数据

if((USART_RX_STA&0x8000)==0)//接收未完成

{

if(USART_RX_STA&0x4000)//接收到了0x0d

{

if(Res!='D')USART_RX_STA=0;//接收错误,重新开始

else {USART_RX_STA|=0x8000;//接收完成了

Send_data(DEBUG_USARTx,"完成一次传输\r\n");

}

}

else //还没收到0X0D

{

if(Res=='+')USART_RX_STA|=0x8000;

else

{

Send_data(DEBUG_USARTx,"写入缓冲\r\n");

USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;

USART_RX_STA++;

if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收

}

}

}

}

}

​后来找了很多原因也找不到,最后发现是因为这个中断函数接受的数据要求0x0a 0x0d结束,电脑串口助手发送新行会发送这两个字符,但是按说换行符只有一个0x0a,没有0x0d,所以无法接收到正确的命令。感谢这位大哥。

后面改了程序,把示意命令结束的符号设置为“+”,这样在PC和安卓端都能正常发出命令。

void DEBUG_USART_IRQHandler(void) //串口1中断服务程序

{

u8 Res;

if(USART_GetITStatus(DEBUG_USARTx, USART_IT_RXNE) != RESET)

{

Res =USART_ReceiveData(DEBUG_USARTx);//读取接收到的数据

if((USART_RX_STA&0x8000)==0)//接收未完成

{

if(Res=='+')USART_RX_STA|=0x8000;

else

{

// Send_data(DEBUG_USARTx,"写入缓冲\r\n");

USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;

USART_RX_STA++;

if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;

}

}

}

}

后记

在调试蓝牙时,发现有些app不能搜到我这个蓝牙模块,试了好几个才找到这个蓝牙调试宝可以,虽然有广告,但至少能用TAT.

来源:https://www.cnblogs.com/Huang-weimin/p/13359998.html

android stm32 蓝牙模块,STM32+USART+蓝牙模块(BT04)相关推荐

  1. stm32蓝牙模块和超声波测距模块

    蓝牙 蓝牙概念 蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接. [1] 蓝牙使当前的一些便携移动设备和计算 ...

  2. STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库)

    前言 不论是HC05还是HC06,我们用到的都是蓝牙模块的透传功能,只需要用到4个引脚:RXD.TXD.VCC(5V).GND. HC-05的使用 1.HC-05有6个引脚,但是我们只用到4个. 2. ...

  3. Android手机靠近蓝牙模块自动连接蓝牙模块,断后自动重连。也可以手机靠近手机自动连接。连接成功率百分之百,可后台运行

    BluetoothChat手机与串口模块通信靠近自动连接2.0apk示例:链接: https://pan.baidu.com/s/1YoMNNBfLTAuXm2XukG5s9g 提取码: sm3h 全 ...

  4. 小白入门STM32(1)----手机蓝牙控制STM32单片机点亮LED

    文章目录 引言导读 一.通信基础知识 1.1 通信到底传输的是什么? 1.2 比特率和波特率 习题 1.1 双工和单工 习题 1.2 串行和并行 1.3 异步通信和同步通信 习题 二.连接STM32单 ...

  5. HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序

    HC-05是一款主从一体化的蓝牙模块,因此其使用起来比较方便,只需要进行简单的配置即可. 本文就手把手的介绍小白入手模块后如何使用. 对于模块使用:1.蓝牙配置→2.手机与蓝牙的传输→3.手机通过蓝牙 ...

  6. 常用模块】HC-05蓝牙串口通信模块使用详解

    https://blog.csdn.net/qq_38410730/article/details/80368485 蓝牙模块的调试 HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动 ...

  7. STM32+HC05串口蓝牙设计简易的蓝牙音箱

    一.环境介绍 MCU:  STM32F103C8T6 蓝牙模块:  HC05 (串口蓝牙) 音频解码模块:  VS1053B OLED显示屏:  0.96寸SPI接口OLED 开发软件: Keil5 ...

  8. JDY-06蓝牙透传无天线模块介绍

    JDY-06蓝牙透传无天线模块简介 JDY-06透传模块是基于蓝牙4.0协议标准,工作频段为2.4GHZ范围,调制方式为GFSK,最大发射功率为0db,最大发射距离60米,采用TICC2541芯片设计 ...

  9. 智能家居—基于STM32的温湿度控制系统(WIFI模块)

    基于App控制的STM32温湿度控制系统(WIFI模块) ESP8266WIFI模块 模块使用说明 常用AT指令 DHT11温湿度传感器 简介 模块数据的发送流程 代码实现 μs级的延时配置 HAL库 ...

最新文章

  1. SAP SD交货单凭证流里的Confirmation of Service初探
  2. TwinVQ解码框图
  3. Mysql增加、删除和修改列属性和约束,和一些有用的查询语句
  4. 332. 重新安排行程(回溯算法)
  5. 腾讯内部产品课:细分用户
  6. 【ubuntu-anaconda-dlib】undefined symbol: _ZTTNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESa
  7. 一套完整的导视设计案例_色彩导视艺术:乌克兰基辅语言学校导视设计案例
  8. Linux实现的IEEE 802.q VLAN
  9. 鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...
  10. 小K的农场(差分约束)
  11. windows2008开机占用多少内存_如何提升电脑开机速度?
  12. C语言多线程基础-02-临界区,互斥量
  13. Bryntum Web JavaScript Components Crack
  14. numpy 相关函数
  15. monkey命令——压力测试——转载参考01
  16. C#高效编程--改进C#代码的50个行之有效的办法笔记
  17. leetcode Rotate Image
  18. 前端项目中上传图片如何实现的
  19. NOKIA手机共有的缺陷
  20. php activedocument-printout(),php读取word文档

热门文章

  1. exchange问题
  2. mysql 三种注释_mysql的注释有几种写法?
  3. 玩游戏什么品牌蓝牙耳机延迟低?高性价比游戏专属蓝牙耳机推荐
  4. 网络分流算法——Cross法(也叫Scott—Hinsley法)
  5. 双非本科生如何才能进入腾讯、阿里、百度这些大厂?
  6. Opencv边缘检测、轮廓发现、绘制轮廓
  7. 手电筒安卓_人民日报两度发文质问:安卓用户为何无“权利”!谷歌隔空回应?...
  8. Proteus:单片机用按键控制LED的亮灭
  9. php 日记本程序,SecretDiary-私密日记本php程序
  10. tmux命令-快速开始