stm32f407 6个串口dma_stm32之DMA

本文介绍了STM32F407如何利用DMA配置6个串口,详细阐述了DMA通道的配置过程,包括设置外设和存储器地址、数据传输方向、数据宽度等。此外,还提供了常用的DMA初始化和使能函数,并通过串口1发送DMA的实验举例,解释了如何在串口数据中加入自动换行。资料分享旨在辅助STM32学习者深入理解DMA搬运数据及串口应用。
摘要由CSDN通过智能技术生成

  一. 对于大容量的STM32芯片有2个DMA控制器,控制器1有7个通道,控制器2有5个通道

  每个通道都可以配置一些外设的地址。

v2-02ece89d98e790c7c4facd29ae8ae429_b.jpg

v2-9262545aa85826c0bf448e7fae282b67_b.jpg

  二. 通道的配置过程:

v2-32d1a5fbbb3cfcad9705b3340f09e4a0_b.jpg

  1. 首先设置CPARx寄存器和CMARx寄存器。

  通过DMA控制器把一个地址的值复制到另外一个地址,通过DMA控制器自动开启一条通道完成。

  CPARx寄存器存放的是外设的地址

  CMARx寄存器存储的是存储器的地址

  2. 设置数据传输方向,是否循环模式,是不是开启外设和存储器的增量模式,还有数据宽度,是8位,16位还是32位。

  比如设置成存储器的地址增量,那么传输一个数据过去后它的地址自动递增。

  3. 设置要传输的数据量

  4. 设置通道的优先级

  5. 全部设置好后就可以启动DMA通道。

  启动后数据就开始传输,传输的过程中可以读CNDTRx寄存器,可知道当前还剩多少个数据。数据传输到一半或全部传输完毕后有响应的标志位置1,如果开启了中断,可以进入相应的中断程序。

  一。常用的DMA函

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值