STM32学习笔记——HC05

2023-11-07

前言

我所使用的开发板为STM32F405RG,蓝牙模块为HC-05。本文是为自己留作笔记用,也是给大家分享一下蓝牙模块的基本使用,如有不对,还望指出。

软件及硬件准备

软件:
keil5
CubeMX
XCOM
硬件:
主控板:STM32F405RG(也可以使用STM32其他型号)
蓝牙模块:HC-05
USB转TTL

硬件连接

在这里插入图片描述

本文只做简单使用介绍,故只需连接其中四个引脚即可
VCC —— 5v(3.6v~6v都可,一般直接连上单片机的5v接口)
GND —— GND
TXD —— 连接单片机的RX
RXD —— 连接单片机的TX
(这里是新手最容易出错的地方,你可以把蓝牙模块和单片机看作是两个同等关系的物体,而不是从属关系,一边发送,另一边自然是接收,所以TX连RX,RX连TX)

蓝牙模块调试

在开始之前,如果你使用的是全新的蓝牙模块,你可以选择不对其做任何调试,将蓝牙模块按上一节的连接方式与单片机相连即可,这样你使用的就是蓝牙模块的初始化设置,比如波特率为9600
如果你需要对蓝牙模块进行其他修改或者你已经忘记了你的蓝牙模块的设置,那么就需要用到USB转TTL来对蓝牙模块进行设置
在这里插入图片描述
连接方式 与上一节中所讲的一致,只是对象从单片机换成了USB转TTL

连接好之后,按住蓝牙模块上的按键,将USB连接到你的电脑上,插上之后松开按键

这是为了让你的蓝牙模块进入AT指令模式,该状态下,蓝牙模块的波特率为固定值38400
我们可以在这个模式下修改普通模式的一些设定,比如波特率、奇偶校验等
注意,如果不按住按键,插入USB口的话,蓝牙模块的红色指示灯是快闪状态
当进入AT模式的时候,红色指示灯为一秒一闪的状态,可通过观察指示灯来初步判断是否进入到 AT模式
在这里插入图片描述

然后打开XCOM

在这里插入图片描述

一定要记住勾选左下角的发送新行

AT指令不区分大小写,下面介绍常用的AT指令:

指令 返回 作用
AT OK 测试指令
AT+RESET OK 模块复位
AT+VERSION? +VERSION:(?) OK 获得软件版本号
AT+ORGL OK 恢复默认状态
AT+ADDR? +ADDR:(?)OK 获得蓝牙模块地址
AT+NAME=(?) OK 设置设备名称
AT+NAME? +NAME:(?)OK 获得设备名称
AT+PSWD=(?) OK 设置模块密码
AT+PSWD? +PSWD:(?)OK 获得模块密码
AT+UART=波特率,停止位,奇偶校验 OK 设置串口参数
AT+UART? +UART:波特率,停止位,奇偶校验 OK 获得串口参数
参数名称 取值
波特率 2400、4800、9600、19200、38400、5760、115200、230400、460800、921600、1382400
停止位 0:1位 \ 1:2位
校验位 0:NONE \1:Odd \ 2:Even

输入AT,测试是否进入AT模式

在这里插入图片描述

返回OK,现在可以输入AT+RESET对蓝牙模块复位,或者使用其他指令对其进行修改,我个人喜欢波特率为115200所以我会修改蓝牙模块

在这里插入图片描述

修改蓝牙模块的名字

在这里插入图片描述

查看是否修改成功

在这里插入图片描述

修改串口波特率为115200,停止位1 无校验

在这里插入图片描述

检查一下是否修改成功,到这一步,蓝牙模块就算是配置好了

CubeMX配置

创建工程我就不多说了,直接来USART配置吧

在这里插入图片描述

如图,按照刚才蓝牙模块的配置就行
如果最后蓝牙发送的数据是乱码,可以回去检查一下你的时钟树,晶振频率是否和你的开发板一致
在这里插入图片描述

CubeMX到这儿就结束了,配置好之后就可以直接创建工程了

keil软件编写

 /* USER CODE BEGIN WHILE */
	uint8_t RX;
	HAL_UART_Transmit(&huart2,"ready\r\n",7,HAL_MAX_DELAY);//发送函数 串口号,发送内容,内容长度,HAL_MAX_DELAY \r\n算两个字节
  while (1)
  {
    /* USER CODE END WHILE */
		
    /* USER CODE BEGIN 3 */
		HAL_UART_Receive(&huart2,&RX,1,HAL_MAX_DELAY);//接收函数,放在while(1)里,让它一直接收, 串口号,存储位置,长度,HAL_MAX_DELAY
		switch(RX){
			case '0':HAL_UART_Transmit(&huart2,"stop\r\n",6,HAL_MAX_DELAY);break;//stop四个字节+\r\n 一共6个字节
			case '1':HAL_UART_Transmit(&huart2,"forward\r\n",9,HAL_MAX_DELAY);break;
			default:HAL_UART_Transmit(&huart2,"none\r\n",6,HAL_MAX_DELAY);break;
		}
			
  }
  /* USER CODE END 3 */
}

在main.c中编写上面的代码,即可实现串口通讯,如果是控制蓝牙小车,把case后面的发送函数,改为控制函数即可
将程序烧写到开发板中,使用手上的蓝牙串口软甲,便可以和单片机实现串口通讯,以及控制小车运动

实验

打开手机上的蓝牙串口软件,并链接蓝牙模块
在这里插入图片描述
这是我所用的蓝牙串口软件,在实验中,我发现有些商家给的软件并不好用,甚至就是因为软件问题,导致实验一直不成功

在这里插入图片描述
在这里插入图片描述

首次连接需要点击右上角的放大镜开始搜索,然后在下方的其他设备里找到蓝牙模块,连接过一次之后就能像我图片上那样直接连接

在这里插入图片描述
在这里插入图片描述

连接好之后可以设置按键,方便操控小车

在这里插入图片描述

这里可以改成聊天界面,可以看见手机和单片机的通讯记录

在这里插入图片描述

注意事项

1. TX和RX一定是反着接的
2. 蓝牙模块的波特率和你串口的波特率要一致
3. 如果单片机返回的是乱码,先确认波特率是否一致,然后去看时钟树里的晶振频率是否和所用开发板的晶振频率一致
4. 发送函数里的数据长度,要根据你的发送内容修改

本文仅供个人学习,如有不对,还望指正,相互学习

源码及注意事项2023.3.11

 HAL_UART_Receive(&huart1,&RX,1,HAL_MAX_DELAY);//接收函数,放在while(1)里,让它一直接收, 串口号,存储位置,长度,HAL_MAX_DELAY

这个语句里面有个RX的接收长度,这里设置的是1.
但我在用XCOM的时候发现,当我只发送一个数字时,它发送的长度实际上是3位的,所以如果是用XCOM来实现串口发送接收的话,需要将1改成3. 如下

 HAL_UART_Receive(&huart1,&RX,3,HAL_MAX_DELAY);//接收函数,放在while(1)里,让它一直接收, 串口号,存储位置,长度,HAL_MAX_DELAY

在这里插入图片描述

可以看见我只发送了一次,下面的S为3


源码:https://download.csdn.net/download/qq_51967985/87563467

xcom和蓝牙助手

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32学习笔记——HC05 的相关文章

随机推荐

  • java.io.FileNotFoundException: xxx.txt (系统找不到指定的文件。) 的错误解决办法

    这是我报错的原来的代码 package day19 java2 import java io File import java io FileInputStream import java io IOException ClassName
  • saltstack+zabbix

    环境 server1 172 25 60 1 salt master salt minion zabbix server server2 172 25 60 2 salt minion zabbix agent 1 软件包安装过程存在许多依
  • 【小白笔记】——AD铺铜设置铜与焊盘、通孔的全连接

    目录 一 热焊盘与花焊盘的区别与比较 二 AD静态铺铜如何设置连接样式 一 热焊盘与花焊盘的区别与比较 来自百度百科 热焊盘 热焊盘指大面积的接地 电 中 常用元器件的腿与其连接 对连接腿的处理需要进行综合的考虑 就电气性能而言 元件腿的焊
  • 【数学建模】青少年犯罪问题

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 逐步回归分析法 1 1 逐步回归分析定义 最优回归方程 1 2 stepwise函数介绍 二 例题 青少年犯罪问题 2 1 题目简述 2 2 问题一建模与求解
  • 定制化UINavigationBar

    FirstViewController 定制化UINavigationBar void customNavigationBar 按钮被挡住 原因是 navigationbar的透明度默认为YES 先取出navigationbar UINav
  • java中countinue,.random(用于产生一个随机数)入门可看

    1 countinue 用在循环中 基于条件控制 跳过其次循环体内容的执行 继续下一次的执行 break 用在循环中 基于条件控制 终止循环体内容的执行 也就是结束当前的整个循环 eg public class zhou public st
  • php提取css生成单独文件,webapck将css 打包后单独提取到一个css文件中

    webpack4 提倡 一旦用了这个 不能使用style loader 以及css module 安装 npm install save dev mini css extract plugin rules rules test css us
  • SQLServer 中实现类似MySQL中的group_concat()函数的功能

    SQLServer中没有MySQL中的group concat函数 可以把分组的数据连接在一起 后在网上查找 找到了可以实现此功能的方法 特此记录下 SELECT a stuff SELECT b FROM tb WHERE a t a F
  • STM32 USB_SPI_FLASH 简易U盘设计

    这是大三下学期EDA实训的内容 设计制作了一个简易的U盘 主要涉及STM32单片机 W25Q128闪存芯片 电路板绘制 文件系统移植等内容 发布出来供大家参考 仅供学习交流使用 实验步骤仅供参考 转载请注明原文链接 https blog c
  • java数据传到前端页面_02 前端页面数据传递到后台java

    本文将阐述如何将前端页面数据传递到后台java代码 1 环境约束 win10 64位操作系统 idea2018 1 5 jdk 8u162 windows x64 spring4 2 4 前提约束 操作步骤 基本类型传输 RequestMa
  • Android使用AES加解密

    AES为对称加密 加解密用一套秘钥 秘钥自己随便定义 长度必须为16 或 32 个字符 1 AES工具类 AES 对称加密算法 加解密工具类 RequiresApi api Build VERSION CODES KITKAT public
  • getline()与get()

    1 getline getline 函数读取整行 通过换行符来确定输入结尾 然后丢弃换行符 1 作为istream中的类方法 char name 20 cin getline name 20 把一行读入到name数组中 这行字符不超过19个
  • python opencv 同窗口显示多个图像

    为了便于比对图像处理前后的效果 特别是算法处理前后的效果图 我们需要同时显示多张图片 这里采用opencv图像拼接的方法来实现我们想要的效果 1 定义函数show multi img 定义图片显示函数show multi img 共包括5参
  • Android:Serializable和Parcelable的持久化保存

    转自 https www cnblogs com duoshou articles 8856111 html 前言 Serializable和Parcelable能够将对象序列化 使之能够在一些特殊场景中进行传输 再进行数据的恢复 Seri
  • uhd驱动安装(usrpB210,usrpX310等)

    sdr技术与设备介绍 参考博文地址 上述博文介绍了什么是SDR技术 以及sdr设备的分类应用 问题描述 使用sdr设备 usrpx系列 usrpb系列 的准备 驱动 镜像 方案一 推荐方案 资源下载地址 一个UHD源码 一个UHD对应的镜像
  • 华灯初上

    华灯初上老城楼 将军夜赏新兜鍪 宝剑久藏不曾试 兵书战策俱成空
  • 大数据技术原理——期末复习spark

    1 Spark的基本概念 RDD DAG Executor 应用 任务 作业 阶段 RDD 是Resillient Distributed Dataset 弹性分布式数据集 的简称 是分布式内存的一个抽象概念 提供了一种高度受限的共享内存模
  • Aspose最版本aspose-words:jdk17:23.6 版本,代码分析心得

    Aspose最版本aspose words jdk17 23 6 版本 代码分析心得 aspose 为收费软件 以下仅仅用于学习技术 请勿做任何商业用途 如果需要请到官网购买正版 本文的逆向分析参考了了博客 https blog csdn
  • CAP定理含义

    分布式系统 Distributed System 最大的难点就是各个节点的状态如何同步 CAP定理就是这方面最基本的定理 也是理解分布式的起点 同时也是 NoSql数据库的基石 一 分布式的三个指标 1 Consistency k n s
  • STM32学习笔记——HC05

    STM32 HAL库 CubeMX串口通讯HC 05 前言 软件及硬件准备 硬件连接 蓝牙模块调试 CubeMX配置 keil软件编写 实验 注意事项 源码及注意事项2023 3 11 前言 我所使用的开发板为STM32F405RG 蓝牙模