最经典的 STM32 蓝牙入门实验逻辑非常简单手机蓝牙发送指令 → STM32 串口接收 → 控制 LED 亮灭STM32F103 HC‑05 蓝牙模块一、硬件连接非常重要1、HC‑05 蓝牙模块 ↔ STM32F103HC‑05STM32F103说明VCC5V蓝牙功耗较大GNDGNDTXDPA10 (USART1_RX)蓝牙 → 单片机RXDPA9 (USART1_TX)单片机 → 蓝牙注意HC‑05 是3.3V 电平容忍RX 可直接接 STM32如果不确定串 1k 电阻更安全2、 LED 连接LEDSTM32正极PB12串联 220Ω 电阻负极GND二、软件设计思路手机蓝牙APP ↓ HC-05 串口 ↓ USART1 接收中断 ↓ 判断收到 1 / 0 ↓ PB12 输出高 / 低三、核心源码标准外设库1、LED 初始化// led.c#includeled.h#includestm32f10x_gpio.h#includestm32f10x_rcc.hvoidLED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_PinGPIO_Pin_12;GPIO_InitStructure.GPIO_ModeGPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOB,GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_12);// 默认熄灭}// led.h#ifndef__LED_H#define__LED_HvoidLED_Init(void);#defineLED_ON()GPIO_ResetBits(GPIOB,GPIO_Pin_12)#defineLED_OFF()GPIO_SetBits(GPIOB,GPIO_Pin_12)#endif2、串口初始化蓝牙// usart.c#includeusart.h#includestm32f10x_usart.hvoidUSART1_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_PinGPIO_Pin_9;GPIO_InitStructure.GPIO_ModeGPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStructure);// PA10 RXGPIO_InitStructure.GPIO_PinGPIO_Pin_10;GPIO_InitStructure.GPIO_ModeGPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,GPIO_InitStructure);USART_InitStructure.USART_BaudRate9600;// HC-05 默认波特率USART_InitStructure.USART_WordLengthUSART_WordLength_8b;USART_InitStructure.USART_StopBitsUSART_StopBits_1;USART_InitStructure.USART_ParityUSART_Parity_No;USART_InitStructure.USART_HardwareFlowControlUSART_HardwareFlowControl_None;USART_InitStructure.USART_ModeUSART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,USART_InitStructure);USART_Cmd(USART1,ENABLE);// 开启接收中断USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);NVIC_InitStructure.NVIC_IRQChannelUSART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority1;NVIC_InitStructure.NVIC_IRQChannelSubPriority1;NVIC_InitStructure.NVIC_IRQChannelCmdENABLE;NVIC_Init(NVIC_InitStructure);}3、串口中断核心逻辑// usart.c续#includeled.hvoidUSART1_IRQHandler(void){uint8_tdata;if(USART_GetITStatus(USART1,USART_IT_RXNE)!RESET){dataUSART_ReceiveData(USART1);if(data1){LED_ON();// 手机发 1 → LED亮}elseif(data0){LED_OFF();// 手机发 0 → LED灭}}}4、 main.c#includestm32f10x.h#includeled.h#includeusart.hintmain(void){LED_Init();USART1_Init();while(1){// 主循环什么都不用做}}参考代码 STM32蓝牙接收让LED亮www.youwenfan.com/contentcsv/103461.html四、手机端操作安卓 APP 推荐蓝牙串口助手Serial Bluetooth Terminal操作步骤打开手机蓝牙搜索并配对HC‑05密码一般是1234或0000连接成功后发送1 → LED 亮 0 → LED 灭五、常见问题排查现象原因没反应波特率不是 9600乱码晶振不是 8MHz能配对但收不到TX/RX 接反LED 不亮引脚不对 / 没接电阻只能接收一次没清中断标志
手机蓝牙发送指令STM32串口接收控制 LED 亮灭
发布时间:2026/6/6 9:36:25
最经典的 STM32 蓝牙入门实验逻辑非常简单手机蓝牙发送指令 → STM32 串口接收 → 控制 LED 亮灭STM32F103 HC‑05 蓝牙模块一、硬件连接非常重要1、HC‑05 蓝牙模块 ↔ STM32F103HC‑05STM32F103说明VCC5V蓝牙功耗较大GNDGNDTXDPA10 (USART1_RX)蓝牙 → 单片机RXDPA9 (USART1_TX)单片机 → 蓝牙注意HC‑05 是3.3V 电平容忍RX 可直接接 STM32如果不确定串 1k 电阻更安全2、 LED 连接LEDSTM32正极PB12串联 220Ω 电阻负极GND二、软件设计思路手机蓝牙APP ↓ HC-05 串口 ↓ USART1 接收中断 ↓ 判断收到 1 / 0 ↓ PB12 输出高 / 低三、核心源码标准外设库1、LED 初始化// led.c#includeled.h#includestm32f10x_gpio.h#includestm32f10x_rcc.hvoidLED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_PinGPIO_Pin_12;GPIO_InitStructure.GPIO_ModeGPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOB,GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_12);// 默认熄灭}// led.h#ifndef__LED_H#define__LED_HvoidLED_Init(void);#defineLED_ON()GPIO_ResetBits(GPIOB,GPIO_Pin_12)#defineLED_OFF()GPIO_SetBits(GPIOB,GPIO_Pin_12)#endif2、串口初始化蓝牙// usart.c#includeusart.h#includestm32f10x_usart.hvoidUSART1_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_PinGPIO_Pin_9;GPIO_InitStructure.GPIO_ModeGPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStructure);// PA10 RXGPIO_InitStructure.GPIO_PinGPIO_Pin_10;GPIO_InitStructure.GPIO_ModeGPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,GPIO_InitStructure);USART_InitStructure.USART_BaudRate9600;// HC-05 默认波特率USART_InitStructure.USART_WordLengthUSART_WordLength_8b;USART_InitStructure.USART_StopBitsUSART_StopBits_1;USART_InitStructure.USART_ParityUSART_Parity_No;USART_InitStructure.USART_HardwareFlowControlUSART_HardwareFlowControl_None;USART_InitStructure.USART_ModeUSART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,USART_InitStructure);USART_Cmd(USART1,ENABLE);// 开启接收中断USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);NVIC_InitStructure.NVIC_IRQChannelUSART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority1;NVIC_InitStructure.NVIC_IRQChannelSubPriority1;NVIC_InitStructure.NVIC_IRQChannelCmdENABLE;NVIC_Init(NVIC_InitStructure);}3、串口中断核心逻辑// usart.c续#includeled.hvoidUSART1_IRQHandler(void){uint8_tdata;if(USART_GetITStatus(USART1,USART_IT_RXNE)!RESET){dataUSART_ReceiveData(USART1);if(data1){LED_ON();// 手机发 1 → LED亮}elseif(data0){LED_OFF();// 手机发 0 → LED灭}}}4、 main.c#includestm32f10x.h#includeled.h#includeusart.hintmain(void){LED_Init();USART1_Init();while(1){// 主循环什么都不用做}}参考代码 STM32蓝牙接收让LED亮www.youwenfan.com/contentcsv/103461.html四、手机端操作安卓 APP 推荐蓝牙串口助手Serial Bluetooth Terminal操作步骤打开手机蓝牙搜索并配对HC‑05密码一般是1234或0000连接成功后发送1 → LED 亮 0 → LED 灭五、常见问题排查现象原因没反应波特率不是 9600乱码晶振不是 8MHz能配对但收不到TX/RX 接反LED 不亮引脚不对 / 没接电阻只能接收一次没清中断标志