一、引言在上一篇中我们通过触摸电容传感器实现了无物理按键的 LED 控制。现在我们要挑战更高阶的交互方式——串口通信USART各位小伙伴们有没有想过不用按按钮也不用碰金属片只要在电脑上敲一个数字就能让开发板上的小灯亮起或熄灭。这就是我们今天要实现的功能在电脑的串口助手上发送0或1控制 STM32 上的 LED 亮灭。在串口助手发送1给stm32f103vet6stm32f103vet6上pb0引脚位置处的led灯亮起发送0则其熄灭。二、软硬件准备与AI指导实验过程由于我之前就已经写过这个实验的稿子我偷会懒了哈我把它截图放上来另外相关的视频也会录制出来。。图片来自于我很久之前写的实验流程三、详细的实验步骤这里也是之前编写过我也放截图了哦代码为了给大家好复制我会单独贴出来。网址https://docs.keysking.com/docs/stm32/resourcePack/usb转串口我也管它叫做usb转ttl图片要是有的地方看不清楚可以询问一下ai或者对照之前ai给的实验指导也可以关注我后期更新好的实验视频。关于nvic大家在上篇文章或者相关的视频有接触到了中断。打开main.c在/* USER CODE BEGIN PV */区域添加 uint8_t uart_rx_data; // 存储串口接收的1字节数据在main()函数的/* USER CODE BEGIN 2 */区域添加 // 启动串口1接收中断每次接收1字节 HAL_UART_Receive_IT(huart1, uart_rx_data, 1);在main.c的/* USER CODE BEGIN 4 */区域添加 // 串口接收完成中断回调HAL库自动调用 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart-Instance USART1) { //发送1时输出低电平LED亮发送0时输出高电平LED灭 if (uart_rx_data 1) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 低电平 → 亮 } else if (uart_rx_data 0) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 高电平 → 灭 } // 重新使能接收中断 HAL_UART_Receive_IT(huart1, uart_rx_data, 1); } }可能代码的格式不够美观大家可以根据实际情况调整一下。网址https://serial.baud-dance.com/由于是已经放寒假了我回了老家目前使用的笔记本电脑有一些年代了所以写文章和录制视频剪辑视频就会有点和之前不同或者混乱请大家见谅我这里会尽量做到位哈。有疑问可以在文章或者哔哩哔哩视频的评论区提问哦。