九、stm32-蓝牙HC_05(接发通信、控制LED亮灭)

一、固件库模板

见博客:stm32f103c8t6新建固件库模板(可自取)

二、准备资料

  1. 固件库模板

  2. MDK5开发环境

  3. stm32参考手册

  4. UART串口协议

  5. stm32中断概念

  6. HC-05命令集

  7. 利用固件库模板点灯工程(下面第三行,手动狗头)

  8. CH340 USB→TTL模块

  9. 蓝牙HC-05模块

  10. 手机软件

实验程序已经发布到百度网盘,本文末有链接可以自取

stm32参考手册

串口协议查看这篇博客USART串口协议

stm32中断概念STM32中断应用概括

HC-05命令文件:HC-05命令

串口调试工具
https://pan.baidu.com/s/1V-jRJzb0INDXDLo9I4CJ6A 提取码:0000

手机软件管家下载下面两个工具在这里插入图片描述

三、简介

在这里插入图片描述

1. 引脚

标号 PIN 引脚说明
1 STATE 状态引出引脚(未连接时输出低电平,连接时输出高电平)
2 RXD 接收端
3 TXD 发送端
4 GND 模块供电负极
5 VCC 模块供电正极
6 EN 使能端,需要进入命令模式时接3.3V

本模块使用USART协议,具体请看下面两个博客,这里就不继续讲解了
USART串口协议
四、stm32-USART串口通讯(重定向、接发通信、控制LED亮灭)

2. AT: 设置工作模式

工作模式: 自动连接(automatic connection) ,又称为透传模式;命令回应(order-response) ,又称为AT模式(AT mode)
进入 AT 命令有二种方法:

  1. 按住按键EN脚拉高,此时灯是慢闪, SPP-05进入AT命令模式,默认波特率是38400;
    此模式我们叫原始模式。原始模式下一直处于AT命令模式状态。
  2. HC-05上电开机,红灯快闪,按住按键或EN拉高, HC-05进入AT命令模式,默认波特率是9600;此模式我们叫正常模式。正常模式下只有按住按键或拉高EN才处于AT命令模式状态。
    注意:如果波特率没有设备正确, AT命令是执行无效的。

3. 基本配置(所有AT指令都必须换行)

正常模式是9600、AT模式波特率固定38400,8位数据位、1位停止位、无奇偶校验的通信格式。
(1)发送AT\r\n,回复OK;
(2)发送AT+UART?\r\n,回复+UART 9600,0,0
(3)发送AT+UART=115200,0,0\r\n,回复OK。即为波特率配置成功。

  • AT+NAME= “XXX” 修改蓝牙模块名称为XXX
  • AT+ROLE=0 蓝牙模式为从模式
  • AT+CMODE=1 蓝牙连接模式为任意地址连接模式,也就是说该模块可以被任意蓝牙设备连接
  • AT+PSWD=1234 蓝牙配对密码为1234
  • AT+UART=9600,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位
    配置完,需重启一次。

4. AT命令的详细说明

  1. AT+ROLE设置主从模式: AT+ROLE?是查询主从状态;AT+ROLE=1是设成主, AT+ROLE=0是设成从, AT+ROLE=2设成回环角色(Slave-Loop(回环角色)——被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙)。
  2. AT+RESET: HC-05复位
  3. AT+VERSION? :获取HC-05的软件版本号,只能获取,不能修改。
  4. AT+ORGL:恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。
  5. AT+ADDR? :获取HC-05的蓝牙地址码,只能获取,不能修改。
  6. AT+NAME? :获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体名字自行修改。
  7. AT+CLASS? :设置查询设备的类型,尽量不要去修改此参数。默认是1F00。
  8. AT+IAC? :查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。
  9. AT+PSWD? :查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.
  10. AT+UART: AT+UART?是查询当前模块的波特率, AT+UART=波特率是设置.
  11. AT+CMODE: AT+CMODE?是查询当前连接模式。 AT+CMODE=0, 1, 2(0——指定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置) 1——任意蓝牙地址连接模式(不受绑定指令设置地址的约束)2——回环角色(Slave-Loop) 默认连接模式:0) 。
  12. AT+BIND:AT+BIND?查询当前绑定地址,AT+BIND=NAP, UAP, LAP (用逗号隔开)。
  13. AT+RMADD:从蓝牙配对列表中删除所有认证设备.
  14. AT+STATE? :获取蓝牙模块工作状态.
  15. AT+LINK=NAP,UAP,LAP:与远程设备建立连接。
  16. AT+DISC:断开连接.
  17. AT+RNAME? NAP, UAP, LAP:获取远程蓝牙设备名称.
  18. AT+ADCN? :获取蓝牙配对列表中认证设备数。
  19. AT+MRAD?获取最近使用过的蓝牙认证设备地址。
  20. AT+INQM:设置查询模式,AT+INQM=1, 9, 48(1-带RSSI信号强度指示,9-超过9个蓝牙设备响应则终止查询,48-设定超时为48*1.28=61.44秒)

四、实验

1.硬件设计

  1. 手机与HC-05通信
    GND接GND
    VCC接3.3
    RXD—CH340的TXD
    TXD—CH340的RXD
  2. 用HC-05控制mcu
    CH340的TXD-----USART1的RX引脚相连(c8t6 的PA10)
    CH340的RXD-----USART1的TX引脚相连(c8t6 的PA9)
    HC-05的TXD-----USART2的RX引脚相连(c8t6 的PA3)
    HC-05的RXD-----USART2的TX引脚相连(c8t6 的PA2)

2.软件设计

  1. 使能 RX 和 TX 引脚 GPIO 时钟和 USART 时钟;

  2. 初始化 GPIO,并将 GPIO 复用到 USART 上;

  3. 配置 USART 参数;

  4. 配置中断控制器并使能 USART 接收中断;

  5. 使能 USART;

  6. 在 USART 接收中断服务函数实现数据接收和发送。

2.1 复制工程 (复制stm32-USART串口通讯工程)

四、stm32-USART串口通讯(重定向、接发通信、控制LED亮灭)

2.2 新建hc_05文件(打开工程)

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

2.3 编写代码

1. 配置HC-05
  1. 进入AT模式,前面已经讲过了,
  2. AT+ORGL(先将AT恢复出厂设置,避免之前影响)
  3. 在这里插入图片描述

这里已经勾选发送新行,直接AT就行,否则为AT\r\n
4. 发送AT,回复OK;
5. 发送AT+UART?,回复+UART 9600,0,0
6. 发送AT+UART=115200,0,0,回复OK。即为波特率配置成功。
7. AT+NAME= "XXX"修改蓝牙模块名称为XXX
8. AT+ROLE=0 蓝牙模式为从模式
9. AT+CMODE=1蓝牙连接模式为任意地址连接模式,也就是说该模块可以被任意蓝牙设备连接
10. AT+PSWD= "1234"蓝牙配对密码为1234
11. AT+UART=9600,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位.

配置结束,需带电重启一次。

2. 手机和串口接发通信

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 手机寻找蓝牙,并填写配对码
  2. 蓝牙调试宝连接对应蓝牙
  3. 发送数据,串口接收,串口发送,手机接收
3. 使用HC-05控制mcu

stm32f103c8t6自带一个led灯,使用PC13引脚就行了,

切记尽量避免使用PB3、PB4,具体看stm32f103c8t6使用PB3和PB4做普通GPIO使用时发现异常

led.c
#include "led.h"	//绑定led.h

void LED_GPIO_Config(void) {
   
    GPIO_InitTypeDef GPIO_InitStruct; //初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。
    //开启RCC时钟
    RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);

    //配置初始化,推挽输出方式和LED_G_GPIO_PIN管脚、赫兹
    GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    //GPIO口初始化
    GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);
}

led.h
#ifndef __LED_H_
#define __LED_H_

#
  • 60
    点赞
  • 521
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 45
    评论
引用中的代码展示了一个基于STM32的UART串口通信的示例程序。在这个示例中,首先通过引入相关头文件,包括"stm32f10x.h"和"bsp_usart.h"来实现对USART的初始化配置。然后,在主函数main中,通过调用USART_Config函数来进行USART的初始化配置,包括设置波特率、数据位数、停止位数等参数。接着使用Usart_SendString函数向串口发送一串字符串,并通过printf函数向终端输出一段欢迎信息。最后,通过一个无限循环来保持程序的运行。 引用和引用提供了更具体的关于初始化和配置串口的过程和代码说明。在这些引用中,首先要进行相关的时钟使能和GPIO配置,然后设置引脚的复用模式,接着进行串口参数的初始化配置,包括波特率、数据位数、停止位数等。如果需要开启中断,则需要进行中断配置和中断处理函数的编写。最后,使能串口以开始通信。 综上所述,如果您需要实现STM32的UART串口通信,可以参考以上提供的代码和过程。请根据自己的具体需求进行相应的配置和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [STM32——USART接发通信实验代码解析(适合野火stm32f103ZE)](https://blog.csdn.net/m0_57396609/article/details/120387284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [(十三)STM32——串口通信(UART)](https://blog.csdn.net/weixin_66578482/article/details/126270118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛尘~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值