2234|3

931

帖子

3

TA的资源

纯净的硅(中级)

楼主
 

【NUCLEO-L552ZE测评】+蓝牙通讯的实验(2) [复制链接]

    首次接触蓝牙模块,对蓝牙模块的操作还非常陌生,自从上旬通过串口调试助手连接蓝牙模块进行操作练习之后,一直尝试通过单片机来操作蓝牙模块,经过十多天的摸索和测试,今天总算有了结果,通过单片机连接主蓝牙模块、电脑的串口调试助手连接从蓝牙模块,从蓝牙模块初步成功地接收到了主蓝牙模块发送的信息。下图为测试过程的照片:

    这是从串口调试助手上观察从蓝牙模块接收到的数据信息,:

 

    下面是单片机中搜索从设备的函数:

void BT05_Init(void)
{
	uint8_t ReceSize;
	
	printf("AT\r\n");

    while(!__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE));
    HAL_UART_Receive(&huart2,aBT_Buff,64,1000);
/*
    LCD_write_ASCII(0,3,1,(uint8_t *)"BT05=");
	LCD_write_ASCII(30,3,1,aBT_Buff);
    BT_display();
*/  
    if(aBT_Buff[0] == 0x4F){	  //蓝牙模块有回应,开始设置
    	printf("AT+INQ\r\n");
        while(!__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE));
        HAL_UART_Receive(&huart2,aBT_Buff,64,1000); //接收蓝牙返回的信息

//        LCD_write_ASCII(30,4,1,aBT_Buff);
//        BT_display();
        BT_Mode = 10;            //设置搜索成功标志
//        printf("AT+CONN1\r\n");
		LCD_write_ASCII(100,5,1,(uint8_t *)"BT05_Init OK!  ");
	}
	else{                                     //蓝牙模块无回应
        LCD_write_ASCII(100,5,1,(uint8_t *)"BT05_Init Fail!");
	}
}

 

    这是向从蓝牙设备发送信息的函数,因为尚在测试过程,这个函数中仅对搜索到的第一个设备进行连接操作:

/************************************************************
* 发送命令到蓝牙设备
* 进入参数:
*  ID     搜索列表中的设备号
*  OnOff  0=关闭命令、1=打开命令
* 返回参数:无
*************************************************************/
void BT05_Handler(uint8_t ID, uint8_t OnOff)
{
    printf("AT+CONN1\r\n");
//    while(!__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE));
//    HAL_UART_Receive(&huart2,aBT_Buff,64,1000);     //接收蓝牙返回的信息
//	LCD_write_ASCII(30,4,1,aBT_Buff);
//    BT_display();
	if(OnOff)
		printf("The Light On!\r\n");
	else
		printf("The Light OFF!\r\n");
}

 

    之所以说是初步成功,是因为在测试过程中多次出现了单片机死循环现象,复位重启都不能解决,必须对蓝牙模块断电重启才行。另外两个蓝牙模块连接是简单通讯,还未涉及到绑定操作,实际应用时应该绑定MAC,防止其他设备的干扰。

 

 

此帖出自stm32/stm8论坛

最新回复

好嘞!   详情 回复 发表于 2021-1-22 09:21

赞赏

1

查看全部赞赏

点赞(2) 关注(1)
 

回复
举报

1942

帖子

2

TA的资源

版主

沙发
 

你那个问题解决了吗?

此帖出自stm32/stm8论坛

点评

    谢谢版主关心,已经初步解决了,应该是调用接收函数的时间太早了,添加了一个while循环等待就解决了。  详情 回复 发表于 2021-1-22 09:19
 
 

回复

931

帖子

3

TA的资源

纯净的硅(中级)

板凳
 
w494143467 发表于 2021-1-21 20:33 你那个问题解决了吗?

    谢谢版主关心,已经初步解决了,应该是调用接收函数的时间太早了,添加了一个while循环等待就解决了。

此帖出自stm32/stm8论坛

点评

好嘞!  详情 回复 发表于 2021-1-22 09:21
 
 

回复

1942

帖子

2

TA的资源

版主

4
 
hujj 发表于 2021-1-22 09:19     谢谢版主关心,已经初步解决了,应该是调用接收函数的时间太早了,添加了一个while循环等 ...

好嘞!

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表