蓝牙串口通信:STM32F1系列与HC-05模块的连接

摘要

本文详细介绍了如何实现STM32F1系列微控制器与HC-05蓝牙模块的串口通信。通过本教程,读者将学习到硬件连接、软件配置和实际代码编写,为开发基于蓝牙的嵌入式项目打下基础。

1. 引言

在嵌入式系统中,无线通信是一个重要的功能。蓝牙作为一种无线技术,因其低功耗、易于配置和广泛的兼容性而受到青睐。HC-05是一款流行的蓝牙串口模块,可以方便地与STM32F1系列微控制器进行通信。

2. 硬件准备

  • STM32F1系列微控制器开发板(例如STM32F103C8T6)
  • HC-05蓝牙模块
  • USB转TTL模块(用于模块配置和调试)
  • 杜邦线若干
  • 电脑安装有串口助手软件

3. 硬件连接

  • 将HC-05的VCC和GND分别连接到STM32的3.3V和GND。
  • 将HC-05的TX(发送端)连接到STM32的RX(接收端,PA10)。
  • 将HC-05的RX(接收端)连接到STM32的TX(发送端,PA9)。

4. HC-05模块配置

使用USB转TTL模块连接HC-05,并通过串口助手发送AT指令配置模块。基本配置包括:

  • AT:测试命令。
  • AT+ROLE=0:设置模块为从机模式。
  • AT+UART=9600,0,0:设置波特率为9600,无奇偶校验。

5. STM32串口通信代码

STM32需要初始化串口以与HC-05通信。以下是串口初始化和中断服务的示例代码:

#include "stm32f10x.h"
#include "misc.h"// 串口初始化函数
void USART2_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_InitStructure.USART_BaudRate = 9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART2, &USART_InitStructure);USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}// 发送数据到蓝牙模块
void USART2_SendData(uint8_t *Data, uint16_t size) {for(uint16_t i = 0; i < size; i++) {USART_SendData(USART2, Data[i]);while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);}
}// 串口中断服务函数
void USART2_IRQHandler(void) {if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {uint8_t data = (uint8_t)USART_ReceiveData(USART2);// 处理接收到的数据}
}

6. 通信测试

  • 编写STM32程序,通过串口发送数据到HC-05模块。
  • 使用串口助手或蓝牙APP接收数据,验证通信是否成功。

7. 示例应用场景

  • 通过上位机发送控制指令,如LED灯的开关。
  • STM32接收指令并执行相应操作,如点亮或熄灭LED。

8. 结论

本文详细介绍了STM32F103C8T6与HC-05蓝牙模块的通信过程,包括硬件连接、模块配置、串口初始化和通信测试。通过本教程,读者可以轻松实现STM32与蓝牙模块的数据传输,为进一步的物联网项目开发打下基础。

9. 注意事项

  • 确保所有硬件连接正确无误。
  • 检查STM32和HC-05模块的电源供应是否稳定。
  • 确保上位机的蓝牙通信参数与HC-05模块配置一致。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】03.权限

一、权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以在 linux 系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在linux下做有限的事情超级用户的命令提示符是“#”&#xff0c;普通用户的命…

字节算法岗面试,效率贼高

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友…

GPS北斗标准时钟同步服务器结构是什么?安徽京准

GPS北斗标准时钟同步服务器结构是什么&#xff1f;安徽京准 GPS北斗标准时钟同步服务器结构是什么&#xff1f;安徽京准 电厂时钟同步系统组成及配置 随着计算机和网络通信技术的飞速发展&#xff0c;火电厂热工自动化系统数字化、网络化的时代已经到来。一方面它为控制和信息系…

python--实验 11 模块

目录 知识点 模块基础 模块使用方式 自定义模块示例 模块的有条件执行 Python包结构 定义和导入包 常用第三方库及安装 实例代码 第三方库自动安装脚本 Python标准库介绍 PyInstaller 小结 实验 1.(基础题)制作文本进度条。 2.(基础题) 蒙特卡罗方法计算圆周率…

优化实战篇—自关联的优化

自关联的优化 根据定义&#xff0c;自关联是表自身的关联。自连接通常仅在给定数据中存在父子关系时使用。在本文中&#xff0c;我们将检查如何在Hive中编写自连接查询&#xff0c;它的性能问题以及如何优化它。开始之前我们可以看一下之前关于关联的文章 Hive实战之自关联经…

数据结构第28节 字典树

字典树&#xff08;Trie&#xff0c;也称前缀树&#xff09;是一种用于存储字符串的树形数据结构。它将字符串中的字符作为树的边&#xff0c;每个节点代表一个可能的前缀。字典树非常适合处理大量字符串的搜索、插入和删除操作&#xff0c;尤其是在查找具有相同前缀的字符串时…

[GXYCTF2019]BabySQli

原题目描述&#xff1a;刚学完sqli&#xff0c;我才知道万能口令这么危险&#xff0c;还好我进行了防护&#xff0c;还用md5哈希了密码&#xff01; 我看到是个黑盒先想着搞一份源码 我dirsearch明明扫到了.git&#xff0c;算了直接注入试试看 随便输入了两个东西&#xff0c…

Type-C PD芯片:引领充电技术的新纪元

随着科技的飞速发展&#xff0c;人们对电子设备的依赖日益加深&#xff0c;对充电速度、效率和安全性的要求也越来越高。在这样的背景下&#xff0c;Type-C PD&#xff08;Power Delivery&#xff09;芯片应运而生&#xff0c;以其高效、安全、智能的特点&#xff0c;成为了充电…

vscode编译环境配置-golang

1. 支持跳转 如果单测函数上方不显示run test | debug test&#xff0c;需要安装Code Debugger&#xff08;因为以前的go Test Explorer不再被维护了&#xff09; 2. 单测 指定单个用例测试 go test -v run TestXXXdlv 调试 需要安装匹配的go版本和delve版本&#xff08;如…

Qt易错总结

一、编译相关 建议用qmake !!!,cmake坑点太多&#xff01;&#xff01;&#xff01; 1.自定义控件识别不了 cmakelist加上 include_directories(${PROJECT_SOURCE_DIR}/你自定义控件的相对路径) 2.添加模块&#xff08;以QCharts为例&#xff09; find_package(QT NAMES Q…

Linux多线程编程-生产者与消费者模型详解与实现(C语言)

1.什么是生成者与消费者模型 生产者-消费者模型是并发编程中的经典问题&#xff0c;描述了多个线程&#xff08;或进程&#xff09;如何安全、有效地共享有限的缓冲区资源。在这个模型中&#xff0c;有两种角色&#xff1a; 生产者&#xff08;Producer&#xff09;&#xff1…

<数据集>光伏板缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2400张 标注数量(xml文件个数)&#xff1a;2400 标注数量(txt文件个数)&#xff1a;2400 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Crack,Grid,Spot] 序号类别名称图片数框数1Crack8688922Grid8248843S…

研究生发表期刊/会议必看,一文看懂A/B/C类和顶刊

主要看&#xff1a;中国计算机学会&#xff08;CCF&#xff09;推荐国际学术期刊 里面的划分等级 等级为&#xff1a;A类&#xff08;最难&#xff09;>B类&#xff08;中等难度&#xff09;>C类&#xff08;难度一般&#xff09; 本人这边计划&#xff1a;最低发C刊&a…

css-grid布局(栅格布局)

css新世界-auto-fit grid 一个比flex更强大的布局,适合做整体布局 grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); auto-fit的话有strech效果gap 不仅可以用于grid 也可用flex. 在grid-template-areas表示这个位置空着grid area 的 [a b]命名可重复命名 表示的…

大模型分布式训练并行技术

随着深度学习的发展&#xff0c;模型规模逐渐增大&#xff0c;数据量和计算需求也呈爆炸式增长。在单个计算设备上完成大模型的训练变得不切实际&#xff0c;因此&#xff0c;分布式训练成为了解决这一问题的关键。在分布式训练中&#xff0c;数据并行是一种非常有效的策略&…

【JavaScript脚本宇宙】JavaScript图表库大比拼:从实时数据到时间表,一网打尽

数据可视化利器&#xff1a;探索六款流行JavaScript图表库 前言 在Web开发中&#xff0c;数据可视化是一个非常重要的领域。随着JavaScript图表库的不断涌现&#xff0c;开发人员可以更轻松地创建各种交互式和实时的图表。本文将介绍几种流行的JavaScript图表库&#xff0c;包…

双向收发的信号应该在哪进行串联端接?分享几个实用设计方法!

高速先生成员--黄刚 经过上次高速先生的描述&#xff0c;相信大家已经掌握了串联端接的秘诀了&#xff0c;简单来说&#xff0c;那就是第一步&#xff1a;先看看芯片的驱动内阻&#xff0c;第二步&#xff1a;再用加起来50欧姆匹配的方法来选择适合的串阻值&#xff0c;第三步&…

【C语言报错已解决】格式化字符串漏洞(Format String Vulnerability)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言&#xff1a;一、问题描述&#xff1a;1.1 报错示例&#xff1a;1.2 报错分析&#xff1a;1.3 解决思路&#xff…

HEROIC FANTASY WERE CREATURES PACK VOL 2 (幻想生物)

这个包收集了5种英雄幻想生物:狼人,狼人,狼人山羊,狼人鲨鱼和狼人蜘蛛。 狼人:27.5 Ktris Max//101个骨骼//4种材质//最多4096*4096个纹理//40个动画(11个是根运动变体) 狼人:15.83 Ktris//66个骨骼//3种材质//最多4096*4096个纹理//35个动画(9个是根运动变体) wereg…

Centos 使用nfs配置共享目录使docker集群所有容器日志统一主机访问

Centos 使用nfs配置共享目录&#xff0c;使docker集群所有容器日志统一存放在主机一个共享目录下&#xff0c;供开发人员访问查看 准备两台或以上Centos服务器 192.168.0.1 nfs服务器 192.168.0.2 nfs客户端 以root用户登录192.168.0.1服务器&#xff0c;执行以下操作 注意先…