🔬 实验12:串口——接收

📌 实验目标
  • 掌握 USART 中断接收的配置方法
  • 学会编写串口接收中断服务函数
  • 实现串口接收命令控制 LED
  • 理解接收缓存区和数据帧格式

一、实验内容

  1. 配置 USART1 为接收模式,开启接收中断
  2. 编写 USART1 中断服务函数
  3. PC 发送字符控制开发板 LED 开关
  4. 实现简单的命令帧解析

二、中断接收示例

串口中断接收
#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);
    }
}
💡 这段代码怎么用?
  1. 串口中断接收:数据一到 USART_IT_RXNE 中断立刻响应,比轮询更及时、不阻塞主程序
  2. volatile 必不可少——中断里修改、主程序里读取的变量必须用它,否则编译器可能优化掉读取(实验 10 重点)
  3. 收到 '1'/'0' 控制 LED 是一种最简单的「串口命令」,课设里扩展成帧协议即可实现远程控制

三、参考资料

资料文件
串口接收 PPT实验五 串口—接收.pptx
实验指导文档实验5 串口—接收.docx