android stm32 蓝牙模块,STM32+USART+蓝牙模块(BT04)
硬件:正点原子战舰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)相关推荐
- stm32蓝牙模块和超声波测距模块
蓝牙 蓝牙概念 蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接. [1] 蓝牙使当前的一些便携移动设备和计算 ...
- STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库)
前言 不论是HC05还是HC06,我们用到的都是蓝牙模块的透传功能,只需要用到4个引脚:RXD.TXD.VCC(5V).GND. HC-05的使用 1.HC-05有6个引脚,但是我们只用到4个. 2. ...
- Android手机靠近蓝牙模块自动连接蓝牙模块,断后自动重连。也可以手机靠近手机自动连接。连接成功率百分之百,可后台运行
BluetoothChat手机与串口模块通信靠近自动连接2.0apk示例:链接: https://pan.baidu.com/s/1YoMNNBfLTAuXm2XukG5s9g 提取码: sm3h 全 ...
- 小白入门STM32(1)----手机蓝牙控制STM32单片机点亮LED
文章目录 引言导读 一.通信基础知识 1.1 通信到底传输的是什么? 1.2 比特率和波特率 习题 1.1 双工和单工 习题 1.2 串行和并行 1.3 异步通信和同步通信 习题 二.连接STM32单 ...
- HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序
HC-05是一款主从一体化的蓝牙模块,因此其使用起来比较方便,只需要进行简单的配置即可. 本文就手把手的介绍小白入手模块后如何使用. 对于模块使用:1.蓝牙配置→2.手机与蓝牙的传输→3.手机通过蓝牙 ...
- 常用模块】HC-05蓝牙串口通信模块使用详解
https://blog.csdn.net/qq_38410730/article/details/80368485 蓝牙模块的调试 HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动 ...
- STM32+HC05串口蓝牙设计简易的蓝牙音箱
一.环境介绍 MCU: STM32F103C8T6 蓝牙模块: HC05 (串口蓝牙) 音频解码模块: VS1053B OLED显示屏: 0.96寸SPI接口OLED 开发软件: Keil5 ...
- JDY-06蓝牙透传无天线模块介绍
JDY-06蓝牙透传无天线模块简介 JDY-06透传模块是基于蓝牙4.0协议标准,工作频段为2.4GHZ范围,调制方式为GFSK,最大发射功率为0db,最大发射距离60米,采用TICC2541芯片设计 ...
- 智能家居—基于STM32的温湿度控制系统(WIFI模块)
基于App控制的STM32温湿度控制系统(WIFI模块) ESP8266WIFI模块 模块使用说明 常用AT指令 DHT11温湿度传感器 简介 模块数据的发送流程 代码实现 μs级的延时配置 HAL库 ...
最新文章
- SAP SD交货单凭证流里的Confirmation of Service初探
- TwinVQ解码框图
- Mysql增加、删除和修改列属性和约束,和一些有用的查询语句
- 332. 重新安排行程(回溯算法)
- 腾讯内部产品课:细分用户
- 【ubuntu-anaconda-dlib】undefined symbol: _ZTTNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESa
- 一套完整的导视设计案例_色彩导视艺术:乌克兰基辅语言学校导视设计案例
- Linux实现的IEEE 802.q VLAN
- 鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...
- 小K的农场(差分约束)
- windows2008开机占用多少内存_如何提升电脑开机速度?
- C语言多线程基础-02-临界区,互斥量
- Bryntum Web JavaScript Components Crack
- numpy 相关函数
- monkey命令——压力测试——转载参考01
- C#高效编程--改进C#代码的50个行之有效的办法笔记
- leetcode Rotate Image
- 前端项目中上传图片如何实现的
- NOKIA手机共有的缺陷
- php activedocument-printout(),php读取word文档
热门文章
- exchange问题
- mysql 三种注释_mysql的注释有几种写法?
- 玩游戏什么品牌蓝牙耳机延迟低?高性价比游戏专属蓝牙耳机推荐
- 网络分流算法——Cross法(也叫Scott—Hinsley法)
- 双非本科生如何才能进入腾讯、阿里、百度这些大厂?
- Opencv边缘检测、轮廓发现、绘制轮廓
- 手电筒安卓_人民日报两度发文质问:安卓用户为何无“权利”!谷歌隔空回应?...
- Proteus:单片机用按键控制LED的亮灭
- php 日记本程序,SecretDiary-私密日记本php程序
- tmux命令-快速开始