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

DMA寄存器学习

以下是 DMA1_Channel4 的各个寄存器详细设置说明(基于STM32F1系列):


DMA1_Channel4 寄存器总览

寄存器 地址 功能描述 复位值
CCR 0x40020044 通道配置寄存器 0x0000
CNDTR 0x40020048 通道传输数量寄存器 0x0000
CPAR 0x4002004C 通道外设地址寄存器 0x0000
CMAR 0x40020050 通道内存地址寄存器 0x0000

1. 通道配置寄存器 (DMA_CCR) - 0x40020044

名称 功能描述 设置值
14 MEM2MEM 内存到内存模式:
0=禁用
1=启用
通常为0
13:12 PL[1:0] 通道优先级:
00=低
01=中
10=高
11=最高
根据需求设置
11 MSIZE[1:0] 内存数据大小:
00=8位
01=16位
10=32位
匹配数据宽度
10 PSIZE[1:0] 外设数据大小:
00=8位
01=16位
10=32位
匹配外设宽度
9 MINC 内存地址增量模式:
0=固定地址
1=地址递增
通常为1
8 PINC 外设地址增量模式:
0=固定地址
1=地址递增
通常为0
7 CIRC 循环模式:
0=普通模式
1=循环模式
接收常用1
6 DIR 数据传输方向:
0=从外设到内存
1=从内存到外设
根据用途设置
5 TEIE 传输错误中断使能 根据需求
4 HTIE 半传输中断使能 根据需求
3 TCIE 传输完成中断使能 根据需求
2 EN 通道使能 最后设置为1

2. 通道传输数量寄存器 (DMA_CNDTR) - 0x40020048

位域 功能描述
[15:0] 指定要传输的数据项数量

特性:

  • 传输过程中自动递减
  • 写入新值前必须先禁用通道
  • 循环模式下自动重载

3. 通道外设地址寄存器 (DMA_CPAR) - 0x4002004C

位域 功能描述
[31:0] 外设数据寄存器地址

USART1发送地址:

DMA1_Channel4->CPAR = (uint32_t)&USART1->DR;

4. 通道内存地址寄存器 (DMA_CMAR) - 0x40020050

位域 功能描述
[31:0] 内存数据缓冲区地址

设置示例:

DMA1_Channel4->CMAR = (uint32_t)tx_buffer;
http://www.xdnf.cn/news/1482985.html

相关文章:

  • B.50.10.11-Spring框架核心与电商应用
  • 拯救珍贵回忆:AI照片修复让老照片重获新生
  • 推荐的Java服务环境:JDK17+ZGC(JDK 21的ZGC支持分代回收,性能更高)
  • 一阶低通滤波:从原理到实践,平滑数据的艺术
  • 备份压缩与存储优化:智能数据管理全攻略
  • 读写锁 shared_mutex 共享互斥量介绍
  • Dart HashMap:不保证顺序的 Map 实现
  • (二).net面试(static)
  • MySQL--索引和事务
  • simd学习
  • esbuild入门
  • Cursor安装使用 与 Cursor网页端登录成功,客户端怎么也登陆不上
  • 解析噬菌体实验核心:从材料选择到功能验证的标准化操作框架
  • 数据结构——队列(Java)
  • 基于STM32单片机的酒驾检测设计
  • OpenAvatarChat项目在Windows本地运行指南
  • 【基础-单选】关于自定义组件的生命周期下列说法错误的是
  • 四款主流深度相机在Python/C#开发中的典型案例及技术实现方案
  • vant组件
  • 昇腾310i Pro固件说明
  • Vue3中SCSS的使用指南
  • 数据结构与算法1 第一章 绪论
  • AI工具深度测评与选型指南 - AI工具测评框架及方法论
  • Gitea:轻量级的自托管Git服务
  • 【左程云算法06】链表入门练习合集
  • GDAL 读取影像元数据
  • SQL-窗口函数
  • 单词分析与助记之数据建表(以production为例)
  • 鸡兔同笼问题求解
  • 手撕C++ list容器:从节点到完整双向链表实现