8.8 串口项目4:蓝牙接收数据控制LED灯亮灭
# 8.8 串口项目4:蓝牙接收数据控制LED灯亮灭
本实验基于8.7节实验三(中断方式)扩展为蓝牙无线通信,通过USART3连接蓝牙模块实现远程控制LED。主要差异:
- 通信方式:有线(USART1) → 无线(USART3+蓝牙模块JDY-31)
- 适用场景:移动端/远程控制
- 硬件调整:USART3引脚PB10/PB11替代USART1的PA9/PA10
实验目标:通过手机蓝牙串口助手发送指令(R/G/B/O),STM32中断接收并控制LED亮灭。
# 8.8.1 蓝牙硬件电路设计
硬件接口:
- JDY-31蓝牙模块需连接:VCC(3.3V~6V)、GND、TXD(接STM32的PB11/USART3_RX)、RXD(接PB10/USART3_TX)
- 状态指示:
- 未连接:绿色LED以1Hz闪烁(待机)
- 已连接:LED常亮(链路建立)
- 数据传输:LED快速闪烁(通信活动)


# 8.8.2 STM32CubeMx配置
# 1. 配置USART3
- 进入
Pinout & Configuration
→Connectivity
→ 启用USART3
异步模式。 - 参数设置(与蓝牙模块一致):
- 波特率:9600
- 数据位:8 bits
- 校验位:None
- 停止位:1


# 2. 启用USART3中断
- 导航至
System Core
→NVIC
→ 勾选USART3 global interrupt
。

# 8.8.3 串口项目4软件设置
# 1. 启动中断接收
修改USART1为USART3:
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart3, &rx_char, 1); // 启动USART3中断接收
/* USER CODE END 2 */
1
2
3
2
3
# 2. 中断回调函数
仅响应USART3中断,并重启接收:
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART3) {
switch (rx_char) {
case 'R': // 红色LED亮
HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_G_GPIO_Port,LED_G_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_B_GPIO_Port,LED_B_Pin,GPIO_PIN_RESET);
break;
case 'B': // 蓝色LED亮
HAL_GPIO_WritePin(LED_B_GPIO_Port,LED_B_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_G_GPIO_Port,LED_G_Pin,GPIO_PIN_RESET);
break;
case 'O': // 关闭所有LED
HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_G_GPIO_Port,LED_G_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_B_GPIO_Port,LED_B_Pin,GPIO_PIN_RESET);
break;
default: break;
}
HAL_UART_Receive_IT(&huart3, &rx_char, 1); // 重启中断接收
}
}
/* USER CODE END 4 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 8.8.4 串口项目4下载验证
蓝牙配对:
- 手机搜索设备"JDY-31-SPP",配对密码
1234
。 - 连接成功后,蓝牙模块绿灯常亮。
- 手机搜索设备"JDY-31-SPP",配对密码
发送指令:
- 使用蓝牙调试助手发送
R/B/O
指令,LED立即响应。 - 发送
O
时整机电流从25mA降至15mA(低功耗模式)。
- 使用蓝牙调试助手发送
硬件结果:
- LED切换无抖动,引脚电平变化正确。