🔬 实验12:串口——接收
📌 实验目标
- 掌握 USART 中断接收的配置方法
- 学会编写串口接收中断服务函数
- 实现串口接收命令控制 LED
- 理解接收缓存区和数据帧格式
一、实验内容
- 配置 USART1 为接收模式,开启接收中断
- 编写 USART1 中断服务函数
- PC 发送字符控制开发板 LED 开关
- 实现简单的命令帧解析
二、中断接收示例
串口中断接收
#include "stm32f10x.h"
volatile uint8_t rx_data; // volatile 关键字!
void USART1_IRQHandler(void)
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
rx_data = USART_ReceiveData(USART1);
USART_SendData(USART1, rx_data); // 回显
// 根据收到的字符控制 LED
if (rx_data == '1')
GPIO_SetBits(GPIOB, GPIO_Pin_0);
else if (rx_data == '0')
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}
}
💡 这段代码怎么用?
- 串口中断接收:数据一到
USART_IT_RXNE中断立刻响应,比轮询更及时、不阻塞主程序 volatile必不可少——中断里修改、主程序里读取的变量必须用它,否则编译器可能优化掉读取(实验 10 重点)- 收到 '1'/'0' 控制 LED 是一种最简单的「串口命令」,课设里扩展成帧协议即可实现远程控制
三、参考资料
| 资料 | 文件 |
|---|---|
| 串口接收 PPT | 实验五 串口—接收.pptx |
| 实验指导文档 | 实验5 串口—接收.docx |