1. 课程导学与开发环境搭建
1.1 STM32与DMA/ADC技术概览
各位同学好,我是老周。做嵌入式开发十几年了,从51单片机一路做到现在的ARM Cortex-M系列。今天咱们开始这门《STM32串口DMA传输与ADC采集工程实战》的第一章。
先说说这门课到底要干什么。说白了,就是教你用STM32的DMA(直接存储器访问)配合串口和ADC,实现高效的数据传输和采集。你想想看,如果CPU每次都要亲自搬数据,那得多累?DMA就是那个专门搬数据的“搬运工”,CPU只管算,效率翻倍。
我个人习惯把DMA理解成一个“硬件快递员”。你告诉它:从哪取货(源地址)、送到哪(目标地址)、送多少(数据长度),它自己就跑完了,中途不用CPU操心。ADC采集也是一样,数据到了,DMA直接搬走,CPU该干嘛干嘛。
核心知识点速览
- DMA:直接存储器访问,无需CPU干预的数据搬运
- 串口(USART):异步串行通信,常用于调试、传感器、模块通信
- ADC:模数转换器,将模拟电压转为数字量
- DMA+串口:实现无阻塞的串口收发
- DMA+ADC:实现多通道、连续、高速的采样
我在项目中遇到过不少新手,上来就写阻塞式串口收发,结果主循环卡死,按键按不动,屏幕也不刷新。用了DMA之后,这些问题迎刃而解。嗯,这就是我们这门课的价值所在。
1.2 课程目标与学习路径
这门课一共30章,咱们一步一步来。第一章先把环境搭好,后面再深入每个模块。
| 阶段 | 章节范围 | 核心内容 |
|---|---|---|
| 基础篇 | 第1-5章 | 环境搭建、GPIO、时钟、中断基础 |
| DMA篇 | 第6-12章 | DMA原理、配置、内存到外设、外设到内存 |
| 串口篇 | 第13-20章 | USART配置、DMA收发、环形缓冲区、协议解析 |
| ADC篇 | 第21-26章 | ADC单次/连续/扫描、DMA传输、多通道采集 |
| 综合实战 | 第27-30章 | 双通道示波器、数据记录仪、无线传感节点 |
为什么这么安排?我个人的经验是:先会走,再会跑。基础不牢,后面遇到bug你都不知道从哪查起。尤其是时钟配置和中断优先级,这两块是STM32最容易出问题的地方。
学习建议
每章看完后,一定要动手敲代码。光看不练,等于白看。我见过太多人收藏了无数教程,结果一个工程都没跑起来。别做那种人。
1.3 Keil MDK与STM32CubeMX安装
好,现在开始搭环境。咱们用两样工具:Keil MDK(写代码、编译、下载)和STM32CubeMX(图形化配置芯片)。
1.3.1 安装Keil MDK
- 去Keil官网下载MDK-ARM(需要注册账号,免费的评估版够用)
- 运行安装包,一路Next,注意安装路径不要有中文
- 安装完成后,打开Keil,点击 File → License Management
- 如果是评估版,有32KB代码限制;建议购买正版或使用学校/公司授权
- 安装对应芯片的器件包(Pack Installer里搜索STM32F1)
避坑指南
我曾经因为安装路径带了中文,结果编译死活报错找不到头文件。折腾了两小时才发现是路径问题。记住:Keil、CubeMX、工程路径,全部用英文,不要出现中文和空格。
1.3.2 安装STM32CubeMX
- 从ST官网下载STM32CubeMX(同样需要注册)
- 安装时需要Java运行环境(JRE),如果电脑没有,安装包会提示下载
- 安装完成后,打开CubeMX,点击 Help → Manage embedded software packages
- 选择STM32F1系列,下载对应的固件包(F1的包大约200MB)
我个人习惯把CubeMX生成的代码单独放在一个文件夹里,不跟Keil工程混在一起。这样万一CubeMX重新生成,不会覆盖我手写的代码。
1.4 硬件平台介绍
咱们这门课以 STM32F103C8T6 为例。为什么选它?因为它是市面上最经典、资料最多、性价比最高的芯片之一。你淘宝搜一下,一块最小系统板才十几块钱。
| 参数 | 值 |
|---|---|
| 内核 | ARM Cortex-M3 |
| 主频 | 72MHz |
| Flash | 64KB |
| SRAM | 20KB |
| USART | 3路 |
| ADC | 2个12位ADC,最多10通道 |
| DMA | 7通道(DMA1)+ 5通道(DMA2) |
你可能会问:20KB的SRAM够用吗?说实话,跑个RTOS再加几个任务确实有点紧。但咱们这门课主要做裸机开发,DMA+串口+ADC,20KB绰绰有余。我在项目中用F103做过一个四通道数据记录仪,跑得稳稳的。
硬件连接方面,咱们需要准备:
- STM32F103C8T6最小系统板(带USB转串口芯片的更好)
- USB数据线(供电和下载用)
- 杜邦线若干(连接外设)
- 一个电位器(模拟ADC输入信号)
- 一个USB转TTL模块(如果板子不带串口芯片)
硬件选购建议
买板子时注意看有没有板载ST-Link或USB转串口。我建议买带ST-Link V2的版本,下载调试都方便,不用额外买J-Link。
1.5 本章知识体系
下面这张图把第一章的核心内容串起来了。你看了之后,应该能明白咱们这门课的整体脉络。
这张图把第一章的内容分成了三大块:技术概览、课程路径、环境搭建。你顺着箭头看,就能明白咱们这门课的逻辑——先知道要学什么,再知道怎么学,最后把工具准备好。
第一章小结
- DMA是硬件级的数据搬运,能解放CPU
- 串口+ADC+DMA是嵌入式采集系统的黄金组合
- 课程分四个阶段:基础→DMA→串口/ADC→综合实战
- Keil MDK和STM32CubeMX是必备工具,安装时注意路径不要有中文
- 硬件平台用STM32F103C8T6,性价比高,资料丰富