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

  1. 去Keil官网下载MDK-ARM(需要注册账号,免费的评估版够用)
  2. 运行安装包,一路Next,注意安装路径不要有中文
  3. 安装完成后,打开Keil,点击 File → License Management
  4. 如果是评估版,有32KB代码限制;建议购买正版或使用学校/公司授权
  5. 安装对应芯片的器件包(Pack Installer里搜索STM32F1)

避坑指南

我曾经因为安装路径带了中文,结果编译死活报错找不到头文件。折腾了两小时才发现是路径问题。记住:Keil、CubeMX、工程路径,全部用英文,不要出现中文和空格。

1.3.2 安装STM32CubeMX

  1. 从ST官网下载STM32CubeMX(同样需要注册)
  2. 安装时需要Java运行环境(JRE),如果电脑没有,安装包会提示下载
  3. 安装完成后,打开CubeMX,点击 Help → Manage embedded software packages
  4. 选择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:硬件搬运工 串口:异步通信 ADC:模数转换 基础篇(1-5章) DMA篇(6-12章) 串口+ADC篇(13-26章) 综合实战(27-30章) Keil MDK安装 STM32CubeMX安装 硬件平台介绍 本章搭建好环境后,后续所有章节的代码都可以直接编译下载运行 建议先花30分钟把Keil和CubeMX装好,后面会省很多事

这张图把第一章的内容分成了三大块:技术概览、课程路径、环境搭建。你顺着箭头看,就能明白咱们这门课的逻辑——先知道要学什么,再知道怎么学,最后把工具准备好。

第一章小结

  • DMA是硬件级的数据搬运,能解放CPU
  • 串口+ADC+DMA是嵌入式采集系统的黄金组合
  • 课程分四个阶段:基础→DMA→串口/ADC→综合实战
  • Keil MDK和STM32CubeMX是必备工具,安装时注意路径不要有中文
  • 硬件平台用STM32F103C8T6,性价比高,资料丰富