news 2026/7/22 0:00:22

Aily Blockly 辅助 STM32 开发教程2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Aily Blockly 辅助 STM32 开发教程2

Aily Blockly 辅助 STM32 开发教程2

第 7 章:串口通信

7.1 串口基础

UART/USART(通用异步收发器)是最常用的串行通信接口,可用于:

  • 与电脑通信(调试打印)
  • 与其他模块通信(蓝牙、WiFi、GPS 等)

STM32F103 有 3 个 USART 接口:

串口TX 引脚RX 引脚
USART1PA9PA10
USART2PA2PA3
USART3PB10PB11

常用参数配置:

  • 波特率: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 毫秒
查看串口输出
  1. 将 USB-TTL 模块插入电脑
  2. 打开串口调试助手(如 Serial Monitor、PuTTY、串口助手等)
  3. 选择对应的 COM 端口
  4. 设置波特率 115200,数据位 8,停止位 1,无校验
  5. 打开串口,观察输出

预期输出:

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 为 输入下拉,下降沿中断
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 20:26:09

Markdown-Edit高级功能揭秘:实时预览、主题定制与图片拖拽上传

Markdown-Edit高级功能揭秘:实时预览、主题定制与图片拖拽上传 【免费下载链接】Markdown-Edit My attempt at a markdown editor for windows 项目地址: https://gitcode.com/gh_mirrors/ma/Markdown-Edit Markdown-Edit是一款专为Windows用户设计的轻量级M…

作者头像 李华
网站建设 2026/7/21 23:59:44

【74LS151三人表决+153全减器+183串行进位加法器+32编码器】2024-12-12

缘由数电实验设计组合逻辑电路实验思考题_其他-CSDN问答 利用两个74LS32实现编码器 利用两个74LS183设计串行进位加法器 利用双四选一数据选择器74ls153实现全减器电路 用八选一数据选择器74ls151实现三人表决电路 用八选一数据选择器74ls151实现三人表决电路:011 …

作者头像 李华
网站建设 2026/7/20 20:23:44

【206】图书管理系统

--基于Springboot图书管理系统的设计与实现 功能包含: 首页, 个人中心, 用户管理, 图书分类管理, 图书信息管理, 图书借阅管理, 图书续借管理, 图书归还管理, 反馈类型管理…

作者头像 李华
网站建设 2026/7/20 20:15:54

解决问题:Vscode 自动更新不匹配远程服务器版本

如有侵权或其他问题,欢迎留言联系更正或删除。 避免自动更新: 1. 打开:文件 - 首选项 - 设置 - 应用程序 - 更新; 2. 设置下列选项: 如果已自动更新,如何回退至原有的历史版本 : 去官网下载…

作者头像 李华
网站建设 2026/7/20 20:15:02

co-wechat-api完全指南:如何用Node.js快速对接微信公共平台API

co-wechat-api完全指南:如何用Node.js快速对接微信公共平台API 【免费下载链接】co-wechat-api Wechat API. Support Async Functions 项目地址: https://gitcode.com/gh_mirrors/co/co-wechat-api co-wechat-api是一款专为Node.js开发者打造的微信公共平台A…

作者头像 李华
网站建设 2026/7/20 20:14:36

M2N2 解读

如有侵权或其他问题,欢迎留言联系更正或删除。 出处:AAAI 2024 代码链接:carrtesy/M2N2: Official repository for the paper "When Model Meets New Normals: Test-time Adaptation for Unsupervised Time-series Anomaly Detection&…

作者头像 李华