Aily Blockly 辅助 STM32 开发教程2

发布时间:2026/7/22 1:55:31
Aily Blockly 辅助 STM32 开发教程2 Aily Blockly 辅助 STM32 开发教程2第 7 章:串口通信7.1 串口基础UART/USART(通用异步收发器)是最常用的串行通信接口,可用于:与电脑通信(调试打印)与其他模块通信(蓝牙、WiFi、GPS 等)STM32F103 有 3 个 USART 接口:串口TX 引脚RX 引脚USART1PA9PA10USART2PA2PA3USART3PB10PB11常用参数配置:波特率:9600 / 115200 / 921600 bps数据位:8 位停止位:1 位校验位:无7.2 Hello World —— 串口打印硬件连接使用 USB-TTL 模块连接 USART1:STM32F103 USB-TTL 模块 PA9 ────────► RX PA10 ◄──────── TX GND ──────── GND⚠️ 注意:TX 接 RX,RX 接 TX,交叉连接。图形化程序当启动时 ├─ 初始化串口 USART1,波特率 115200 └─ 永远重复 ├─ 串口发送文本 USART1: "Hello STM32!\r\n" └─ 延时 1000 毫秒查看串口输出将 USB-TTL 模块插入电脑打开串口调试助手(如 Serial Monitor、PuTTY、串口助手等)选择对应的 COM 端口设置波特率 115200,数据位 8,停止位 1,无校验打开串口,观察输出预期输出:Hello STM32! Hello STM32! Hello STM32! ...7.3 串口控制 LED通过电脑发送指令控制 LED 状态。积木程序当启动时 ├─ 初始化引脚 PC13 为 推挽输出 ├─ 初始化串口 USART1,波特率 115200 └─ 永远重复 ├─ 如果 串口有数据 USART1 │ ├─ 定义变量 cmd = 串口读取字符 USART1 │ ├─ 如果 cmd = '1' │ │ └─ 设置引脚 PC13 为 低电平 │ ├─ 如果 cmd = '0' │ │ └─ 设置引脚 PC13 为 高电平 │ └─ 如果 cmd = 's' │ └─ 串口发送文本 USART1: "LED 状态: " + 读取引脚 PC13 + "\r\n" └─ 延时 10 毫秒测试方法在串口调试助手中发送字符:发送1→ LED 点亮发送0→ LED 熄灭发送s→ 返回当前 LED 状态7.4 串口中断接收使用中断方式接收串口数据,避免轮询占用 CPU。定义变量 rx_buffer = "" // 接收缓冲区 定义变量 rx_done = false // 接收完成标志 定义函数 USART1_接收中断(char_data) ├─ 如果 char_data != '\n' │ └─ rx_buffer = rx_buffer + char_data └─ 否则 └─ rx_done = true 当启动时 ├─ 初始化串口 USART1,波特率 115200,启用接收中断 └─ 永远重复 ├─ 如果 rx_done = true │ ├─ 串口发送文本 USART1: "收到: " + rx_buffer + "\r\n" │ ├─ rx_buffer = "" │ └─ rx_done = false └─ 延时 10 毫秒第 8 章:中断与事件响应8.1 什么是中断?中断是单片机中一种重要的机制:当某个事件(如引脚电平变化、定时器溢出、串口收到数据)发生时,CPU 暂停当前执行的程序,转而去执行"中断服务函数",处理完后再回到原来的程序继续执行。中断的优势:⚡实时响应:事件发生立即处理💤节省 CPU:主程序可以做其他事甚至休眠🔄并行处理:"看起来"同时做多件事8.2 外部中断(EXTI)STM32 的每个 GPIO 引脚都可以配置为外部中断源,支持:上升沿触发(低电平→高电平)下降沿触发(高电平→低电平)双边沿触发(任意跳变)实验:按键触发中断定义变量 count = 0 定义函数 EXTI_PA0_中断处理 └─ count = count + 1 当启动时 ├─ 初始化引脚 PC13 为 推挽输出 ├─ 初始化引脚 PA0 为 输入下拉,下降沿中断