系列文章目录

STM32CubeIDE(CUBE-MX hal库)—-初尝点亮小灯
STM32CubeIDE(CUBE-MX hal库)—-按键控制
STM32CubeIDE(CUBE-MX hal库)—-串口通信
STM32CubeIDE(CUBE-MX hal库)—-定时器


前言

HC-05是一种常用于无线通信蓝牙模块,它提供了便捷的蓝牙连接数据传输解决方案,只需要串口可以行数据的发送接收。该模块具有简单易用的特性,适用于各种电子设备嵌入式系统


一、蓝牙配置

HC-05蓝牙模块两个模式一个是AT模式,一个是透传模式。

配置步骤
如何进入AT模式:(1)按住蓝牙模块上的按键通过USB转TTL模块接入电脑,:若模块以两秒的间隔闪烁表示连接成功,进入AT命令模式(2)若无按键,则将en引脚接高,如图所示,用一根杜邦线接到3.3v,就可以进入AT模式。再通过USB转TTL接入电脑.(3)如果没有USB转TTL可以使用开发板上面的USB-TTL如图所示
在这里插入图片描述在这里插入图片描述

打开SSCOM(串口调试助手),选择连接的串口,配置波特率38400,打开串口:

如果没有USB转TTL模块的小伙伴,如果你的开发板上有USB-TTL模块也可以进行使用,把开发板的跳线帽拿开。将蓝牙模块的TX–RXD,RX–TXD。同时按住蓝牙模块上的按键或者将en引脚接高,再给单片机供电。也可以进入AT模式进行调试
在这里插入图片描述

在这里插入图片描述
常用的AT指令

指令 响应 含义
AT OK 测试指令
AT+RESET OK 模块复位
AT+ORGL OK 恢复默认状态
AT+ADDR? +ADDR:<地址> OK 获得蓝牙模块地址
AT+NAME=<名称> OK 设置设备名称
AT+PSWD=<密码&gt; +PSWD:<密码> OK 获得模块密码
AT+UART=<波特率> OK 设置串口参数
AT+UART? +UART:<参数>OK 获得串口参数
AT+ROLE=<0 从,1主,2回环角色> + ROLE:<参数>OK 查询蓝牙模块角色

注意:

二、CUBE-MX可视化配置

usart 端口配置
在这里插入图片描述
开启中断
在这里插入图片描述
DMA设置
在这里插入图片描述
保存生成代码

三、蓝牙APP调试助手

下载地址 http://www.2265.com/soft/268047.html,好多蓝牙APP搜不到蓝牙模块的信号,亲测这款APP比较好用支持自定义控件这里是以文本方式发送数据。详细介绍可以参考篇文章https://www.jianshu.com/p/1a8262492619。
在这里插入图片描述

四、实验

实验实现通过手机蓝牙APP发送数据控制单片机小灯亮灭。这款APP有自带数据发送协议,在单片机接收过程我们需要按照规定的进行解析就可以了。如下图所示例如我们想要根据发送字节数据0x01控制小灯的暗灭,则我们从APP发送的数据为 A5 01 01 5A 校验和是01.
在这里插入图片描述

函数解析

以下是stm32端接收数据的代码对接收数据进行解析。如果首字节和尾字节分别是0xA5和0x5A,可以判断我们接收数据包,再进一步计算校验和,对比数据是否发生错误。如果数据没有发生错误判断数据如果是0x01则对小灯的电平进行反转

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart==&amp;huart3)
	{
		// 将接收到的数据通过串口三发送出去
		HAL_UART_Transmit_DMA(&amp;huart3, receiveData, Size);
		printf("Size=%dn",Size);
		printf("receiveData=%sn",receiveData);

//		uint8_t i=0;
		//利用收到的数据进行�?单的命令,判断校验和和数据是否是原数据�?有字节之和的�?8�?
		if(receiveData[0]==0xA5 &amp;&amp; receiveData[Size-1]==0x5A ){
			uint8_t sum=0;
			for(uint8_t i=1;i<Size-2;i++)
			{
				sum+=receiveData[i];
			}
			if(sum==receiveData[Size-2])
			{
				if(receiveData[1]==0x01)
				{
					HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
				}
			}
		}
		memset(receiveData,0,sizeof(receiveData));

		// 再次�?启数据的接收
		HAL_UARTEx_ReceiveToIdle_DMA(&amp;huart3, receiveData, sizeof(receiveData));
		 //关闭DMA接收过半中断
		__HAL_DMA_DISABLE_IT(&amp;hdma_usart3_rx,DMA_IT_HT);
	}
}

实验现象
在这里插入图片描述


总结

如果连接不到蓝牙,可能是蓝牙当前角色是主机模式,无法被搜索到和配对解决办法

方法1. 先将蓝牙设置从机模式(AT+ROLE=0rn),再进行配对。(推荐
方法2. 通过AT指令手机配对,具体操作参见HC05-AT指令手册

原文地址:https://blog.csdn.net/xddwg521125/article/details/134677508

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25386.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注