1、课程导学与开发环境搭建

1.1 课程目标与学习路径

大家好,我是你们的嵌入式讲师。做嵌入式这行十几年了,我见过太多人卡在串口通信这个坎上。说白了,串口就是嵌入式世界的「普通话」,而Modbus则是工业现场的「通用语」。这门课的目标很直接——让你从零开始,真正掌握STM32的串口通信,并且能上手实现Modbus协议。

我个人习惯把学习路径分成三个阶段:

  • 第一阶段:环境搭建与基础通信(第1-5章)——先把家伙事儿备齐,让串口能收发数据
  • 第二阶段:Modbus协议实现(第6-20章)——从协议帧结构到完整的主从机代码
  • 第三阶段:工程化与调试(第21-30章)——上机实测、异常处理、性能优化

你可能会问:「我直接看Modbus协议不行吗?」嗯,我在项目中遇到过太多次了——协议栈调通了,但串口本身就有问题,结果排查了三天。所以咱们先把基础打牢。

核心目标:学完这门课,你能独立完成基于STM32的Modbus RTU通信项目,从硬件选型到代码调试,心里有底。

1.2 STM32与Modbus协议概述

先聊聊STM32。这东西有多普及?我十年前做第一个项目用的就是STM32F103,到现在它还是出货量最大的MCU之一。为什么选它?

  • 性价比高——几十块钱的芯片,外设齐全
  • 生态成熟——HAL库、LL库、CubeMX,工具链完善
  • 资料丰富——遇到问题,网上随便一搜就有解决方案

再说Modbus。这协议诞生于1979年,比我都大几岁。但你别小看它,工业现场至今还在大量使用。为什么?

  • 简单可靠——协议帧结构清晰,实现起来不复杂
  • 开放免费——不需要授权费,谁都能用
  • 硬件兼容——串口、485、TCP都能跑

Modbus RTU的帧结构其实就四个部分:地址码(1字节)、功能码(1字节)、数据区(N字节)、CRC校验(2字节)。你想想看,这么简单的结构,却撑起了整个工业自动化通信的半壁江山。

我的经验:刚开始学Modbus时,别急着看那些复杂的协议文档。先把一个读保持寄存器的报文抓下来,对着手册一行行看,比什么都管用。

1.3 硬件准备

做嵌入式开发,硬件是绕不开的。我建议你准备以下东西:

硬件 推荐型号 用途
开发板 STM32F103C8T6(蓝色板) 主控板,跑程序用
USB转串口工具 CH340G / FT232 连接电脑和开发板
杜邦线 公对母、母对母各10根 接线用
面包板 830孔 搭建电路

这里有个坑,我曾经踩过——USB转串口工具一定要买带隔离的。便宜的CH340G模块在工业现场经常丢数据,排查起来特别头疼。

注意:接线时一定要确认TX和RX交叉连接。开发板的TX接工具的RX,开发板的RX接工具的TX。这个错误我见过不下十次。

1.4 软件安装

软件环境这块,我按安装顺序来说:

1.4.1 Keil MDK

Keil是ARM开发的主流IDE。我个人习惯用MDK-ARM V5版本,稳定,兼容性好。安装时注意:

  • 选择完整安装,包含所有器件支持包
  • 安装路径不要有中文
  • 破解时以管理员身份运行

1.4.2 STM32CubeMX

这个工具能帮你自动生成初始化代码。说白了,就是图形化配置外设,然后生成HAL库代码。我刚开始用的时候也觉得不靠谱,后来发现它生成的代码比自己手写的规范多了。

1.4.3 串口助手

推荐两个:

  • SSCOM——轻量级,功能够用
  • MobaXterm——支持串口和SSH,适合长期调试

小技巧:串口助手的波特率设置要和代码里一致。我习惯用115200,速度快,而且大多数USB转串口工具都支持。

1.5 第一个工程:点亮LED验证环境

好了,理论说完了,咱们动手。第一个工程很简单——点亮开发板上的LED。目的是验证整个开发环境是否正常。

1.5.1 硬件连接

以STM32F103C8T6蓝色板为例,板载LED通常接在PC13引脚。你只需要:

  • 用USB线连接开发板和电脑
  • 确认开发板供电正常(红色电源灯亮)

1.5.2 使用CubeMX生成工程

打开CubeMX,按以下步骤操作:

  1. 新建工程,选择STM32F103C8Tx
  2. 在Pinout视图中,找到PC13,设置为GPIO_Output
  3. 配置时钟:HSE选择8MHz晶振,系统时钟设为72MHz
  4. 生成代码,选择MDK-ARM V5工具链

1.5.3 编写代码

在生成的main.c中,找到while(1)循环,添加以下代码:

/* 用户代码开始 */
while (1)
{
  HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);  // 翻转LED
  HAL_Delay(500);                           // 延时500ms
}
/* 用户代码结束 */

这里要注意,HAL_Delay函数用的是SysTick定时器,默认是1ms中断一次。如果你改了时钟配置,记得检查HAL_Init()里的时钟源设置。

1.5.4 编译下载

在Keil中:

  • 点击编译按钮(或者按F7)
  • 如果没有错误,点击下载按钮(或者按F8)
  • 观察开发板上的LED是否以1秒的频率闪烁

验证成功标志:LED以大约1秒的频率闪烁。如果没反应,先检查电源,再检查下载器驱动,最后看代码里的引脚号对不对。

1.6 本章知识体系

为了让你更直观地理解本章的内容结构,我画了一张图:

第1章 课程导学与环境搭建 课程目标与学习路径 三个阶段:基础→协议→工程 核心目标:独立完成Modbus项目 STM32与Modbus概述 STM32:性价比高、生态成熟 Modbus:简单可靠、开放免费 硬件与软件准备 硬件:开发板、USB转串口 软件:Keil、CubeMX、串口助手 第一个工程:点亮LED验证环境 目标:验证开发环境、工具链、硬件连接全部正常

这张图把本章的核心内容串起来了。你从左上角开始看,先明确目标,再了解技术背景,然后准备硬件软件,最后用点亮LED来验证一切是否就绪。

我的建议:别急着往下走。花点时间把环境搭好,LED点亮了,后面学起来才踏实。我见过太多人环境没配好就急着写代码,结果浪费了大量时间在排查工具问题上。

专注资料整理