当前位置: 首页 > news >正文

STM32F103 “BluePill” 上的 DMA 原理与实践

摘要:本文深入浅出地介绍什么是 DMA(直接存储器访问),它的核心原理、硬件架构,以及在 STM32F103(BluePill)上常见的几种使用场景(ADC、UART、内存拷贝等)。通过对比 CPU 轮询、中断、DMA 三种方式的数据搬运效率,结合寄存器级和 HAL 库示例代码,并附带性能测试与优化建议,帮助你在实际项目中高效地利用 DMA 降低 CPU 占用、提高实时性。


目录

  1. 引言

  2. DMA 基础概念

  3. STM32F1 系列的 DMA 控制器架构

  4. DMA 工作流程详解

  5. DMA 常见模式

  6. DMA 与 UART 串口通信

  7. DMA 与 ADC 数据采集

  8. 内存到内存拷贝:DMA 也能做 memcpy

  9. 在 BluePill 上使用寄存器级配置 DMA

  10. 用 STM32CubeMX 和 HAL 库更省心地用 DMA

  11. 性能对比与注意事项

  12. 优化建议

  13. 总结与展望

  14. 参考文献


1. 引言

在嵌入式系统中,外设与内存之间经常需要搬运大量数据——比如 ADC 连续采样、UART 收发大块报文、DMA 做内存拷贝等。如果全部依赖 CPU 轮询或中断,会带来:

  • CPU 占用高:处理每个字节都要打断或忙等。

  • 实时性差:大量中断可能导致其他关键任务丢帧。

  • 效率低下:总线利用率不佳。

STM32 家族片上集成的 DMA 控制器,可在不干扰 CPU 的情况下直接在内存和外设间搬运数据。正确使用 DMA,能将数据搬运任务交给专用硬件,CPU 只需“下达命令、收尾处理”,极大提高系统整体效率。本篇文章围绕 STM32F103(也就是常见的 “BluePill”)展开,既有底层原理,又有寄存器级、HAL 库两套实战示例,帮助你快速上手。


2. DMA 基础概念

  • DMA 控制器:片上独立模块,具有多个“通道”(Channel)或“流”(Stream)用于管理不同搬运任务。

  • 通道 Channel:用户配置源地址、目标地址、数据长度、传输方向、地址自增模式、中断使能等。每个通道相当于一条搬运“管道”。

  • DMA 请求:外设(如 UART、ADC、SPI)在准备好数据或空闲可写时,会给出硬件信号,触发 DMA 从源到目标的一次搬运。

  • 总线主控权(Bus Master):DMA 控制器可暂时接管系统总线,直接访问内存和外设寄存器,无需 CPU 干预。

优势

  • 零 CPU 干预&#

相关文章:

  • Javase 基础入门 —— 03 面向对象编程
  • 欧拉环境(openEuler 22.03 LTS SP3)安装移动磐维数据库(PanWeiDB_V2.0-S2.0.2_B01)步骤
  • 【漫话机器学习系列】219.支持向量机分类器(Support Vector Classifier)
  • 【异常解决】Spring Boot 返回排序后的 Map 但前端接收顺序不对的解决方案
  • Django 实现电影推荐系统:从搭建到功能完善(附源码)
  • Django DRF实现用户数据权限控制
  • 什么是数据库的DDL和DML,有什么区别?
  • Ollama API 应用指南
  • STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异
  • ROS 快速入门教程02
  • 游戏引擎学习第240天:将渲染器移至第三层
  • 【新能源科学与技术】MATALB/Simulink小白教程(一)实验文档【新能源电力转换与控制仿真】
  • C++入门小馆: 探寻vector类
  • 【华为】防火墙双击热备-之-主备模式-单外网线路
  • 第七节:进阶特性高频题-Vue3的ref与reactive选择策略
  • 0802api设计和实战-网络ajax请求1-react-仿低代码平台项目
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • Axios 是一个基于 Promise 的 HTTP 客户端,可用于浏览器和 Node.js 环境。以下是它的一些主要作用
  • 精益数据分析(17/126):精益画布与创业方向抉择
  • 学习记录:DAY16
  • 河南省鹤壁市人大常委会副主任李杰接受审查调查
  • 荣盛发展:拟以酒店、代建等轻资产板块业务搭建平台,并以其股权实施债务重组
  • 观察|动力电池步入“多核时代”,宁德时代新技术密集开箱有何启示
  • 国际货币基金组织报告:将今年全球经济增长预期由此前的3.3%下调至2.8%
  • 十二届上海市委第六轮巡视启动,对18家市管单位开展常规巡视
  • 新童谣童诗征稿活动在沪开启:设三个创作主题,面向全国征集