当前位置: 首页 > news >正文

手机蓝牙发送指令STM32串口接收控制 LED 亮灭

最经典的 STM32 蓝牙入门实验,逻辑非常简单:
手机蓝牙发送指令 → STM32 串口接收 → 控制 LED 亮灭

STM32F103 + HC‑05 蓝牙模块


一、硬件连接

1、HC‑05 蓝牙模块 ↔ STM32F103

HC‑05 STM32F103 说明
VCC 5V 蓝牙功耗较大
GND GND
TXD PA10 (USART1_RX) 蓝牙 → 单片机
RXD PA9 (USART1_TX) 单片机 → 蓝牙

注意

  • HC‑05 是 3.3V 电平容忍,RX 可直接接 STM32
  • 如果不确定,串 1k 电阻更安全

2、 LED 连接

LED STM32
正极 PB12(串联 220Ω 电阻)
负极 GND

二、软件设计思路

手机蓝牙APP↓
HC-05 串口↓
USART1 接收中断↓
判断收到 '1' / '0'↓
PB12 输出高 / 低

三、核心源码(标准外设库)

1、LED 初始化

// led.c
#include "led.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"void LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_12); // 默认熄灭
}
// led.h
#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);
#define LED_ON()  GPIO_ResetBits(GPIOB, GPIO_Pin_12)
#define LED_OFF() GPIO_SetBits(GPIOB, GPIO_Pin_12)#endif

2、串口初始化(蓝牙)

// usart.c
#include "usart.h"
#include "stm32f10x_usart.h"void USART1_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);// PA9 TXGPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);// PA10 RXGPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_InitStructure.USART_BaudRate = 9600;   // HC-05 默认波特率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(USART1, &USART_InitStructure);USART_Cmd(USART1, ENABLE);// 开启接收中断USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}

3、串口中断(核心逻辑)

// usart.c(续)
#include "led.h"void USART1_IRQHandler(void)
{uint8_t data;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){data = USART_ReceiveData(USART1);if(data == '1'){LED_ON();      // 手机发 1 → LED亮}else if(data == '0'){LED_OFF();     // 手机发 0 → LED灭}}
}

4、 main.c

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"int main(void)
{LED_Init();USART1_Init();while(1){// 主循环什么都不用做}
}

参考代码 STM32蓝牙接收让LED亮 www.youwenfan.com/contentcnv/103461.html

四、手机端操作

安卓 APP 推荐

  • 蓝牙串口助手
  • Serial Bluetooth Terminal

操作步骤

  1. 打开手机蓝牙

  2. 搜索并配对 HC‑05(密码一般是 12340000

  3. 连接成功后

  4. 发送:

    1  → LED 亮
    0  → LED 灭
    

五、常见问题排查

现象 原因
没反应 波特率不是 9600
乱码 晶振不是 8MHz
能配对但收不到 TX/RX 接反
LED 不亮 引脚不对 / 没接电阻
只能接收一次 没清中断标志
http://www.jsqmd.com/news/954377/

相关文章:

  • 零基础入门:在快马平台上手YOLOv8目标检测第一课
  • vue2 + vue3差异点
  • 【X5】快速调试验证MIPI摄像头
  • 告别卡顿与闪退:Quartus II 13.1在Win10/Win11下的稳定运行与性能优化配置全攻略
  • MATLAB行星齿轮动力学仿真脚本:含ode45求解器与完整系统建模函数
  • 别再只调参了!遗传算法解VRP时,这3个编码细节才是性能关键
  • 你的产品能过EMC认证吗?一文搞懂CS/RS传导辐射抗扰、ESD静电、EFT群脉冲测试要求
  • 企业AI编程解决方案:2026最新权威AI编程工具必看开篇
  • 遗传算法工业实战:四大核心杠杆调优指南
  • 2026 张家界防水补漏三家品牌横向测评:厨卫屋面地下室修缮哪家靠谱?吉修匠 99.8 分五星稳居榜首 - 吉修匠
  • 给Jetson Nano B01换颗‘中国心’:手把手教你配置清华源并安装Python全家桶
  • MinerU2.5 Pro技术解析:1.2B参数SOTA PDF解析模型,完整部署教程(Transformers/vLLM/SGLang/Docker)
  • DenseNet实战:用TensorFlow 2.x在小型数据集上做图像分类,参数少效果也不错
  • 嵌入式新手福音,用快马生成带详解的dma示例代码,轻松攻克直接内存访问
  • 跳出传统 Agent 桎梏,浅析代码即智能体的底层运行逻辑与落地实践
  • 计算机毕业设计之基于Django和Vue的汽车销量数据分析系统的设计与实现
  • 不只是驱动问题:深度解析TI XDS100仿真器EEPROM数据损坏的根源与预防
  • C#上位机开发笔记:封装一个稳定可靠的欧姆龙NX PLC通信类库(附源码)
  • 新手福音:基于快马平台轻松上手吴恩达claude中文手册实践
  • 从‘炼丹’到‘工程’:深度学习中权重初始化和输入归一化的实战避坑指南
  • Anaconda安装后必做的三件事:验证、配环境变量、创建你的第一个Python 3.8虚拟空间
  • 别再死磕D-H参数了!用Matlab Robotic Toolbox 10.4快速复现一个四轴机械臂(附完整代码)
  • MuleSoft企业级AI编排:让大模型真正融入ERP/CRM核心业务流
  • LLM投毒:大模型数据层精准攻击与七道防御体系
  • 2026年高县亲子水上乐园选型指南:龙源溪山泉水乐园深度评测 - 企业名录优选推荐
  • 用NodeMCU和Blinker自制万能红外遥控器,手把手教你让旧家电秒变智能(附完整代码)
  • 不止是游戏!HMS Core 5.2.0的CG Kit体积云特效,还能这样用在你的App里
  • 2687183396@qq.com
  • 别再傻傻分不清了!SCI、EI、IEEE到底该投哪个?给研究生和工程师的选刊避坑指南
  • 正统传承视角下的汕头高端私房菜核心技术标准拆解 - 奔跑123