stm32cubeide之内存到内存,外设到内存,内存到外设的DMA传输

注意

>>网上有很多DMA的操作的教程,但是随着后面的学习与,记忆力衰退,我觉得还是参考借鉴用户手册写程序效果对我好点
>>该博客带领大家用官方用户手册操作DMA模块

准备工作

>>UM1718STM32CUBEMX官方中文用户手册
>>STM32CUBEIDE
步骤结果截图与步骤讲解
1:创建工程在这里插入图片描述
2:选择外部晶振,配置RCC时钟在这里插入图片描述
3:为了进行上位机调试,我们需要用到uart,对异步uart进行配置在这里插入图片描述
4:对DMA进行配置由于我们不知道DMA怎么配置,我们打开UM1718手册,搜索DMA,可以查找到在这里插入图片描述
5:配置内存到内存模式1)内存to内存模式不需要使用外设,所以我们直接在DMA选项里面可以直接勾选,软件会自动为我们分配一条流通道(内存到内存模式只能使用FIFO模式) ==> 2)将目的地址与源地址的自动增加功能都打开,数据宽度可以选择Bite,half word,word三个种 在这里插入图片描述
6:在函数((内存种))种创建src数组与dst数组实现DMA传输,在这里插入图片描述
7:调试验证内存与内存之间的DMA传输在这里插入图片描述
实验:外设到内存的DMA传输与内存到外设的DMA传输步骤讲解与结果截图
1:我们这里的外设选取串口Usart1)在uart的DMA中,将串口的发送线与接受线都使能DMA,来测试外设与内存和内存与外设的DMA通信 2)由于外设数据寄存器的地址是不变的,所以外设的地址自动增加功能我们关掉,由于dma的传输转瞬即逝,所以我们模式选择循环模式,保持DMA通道一直打开 3)使能串口外设的DMA后,我们能在DMA中看到我们使能的DMA通道在这里插入图片描述在这里插入图片描述在这里插入图片描述
2:测试函数1)我们在内存中创建了2个数组空间,一个用来内存数据的DMA传输到串口外设,一个用来接收外设通过DMA发送来的数据 2)因为两个DMA的模式是循环模式,并且DMA是脱离CPU进行工作的,所以两个DMA会一直处于工作状态 3)由于我们的传输大小选的是字节大小,所以我们10次才能发送完,所以函数里面填10!在这里插入图片描述
3:结果验证内存中的数据通过循环模式源源不断的发送到串口,串口每隔2ms通过DMA将数据传到内存在这里插入图片描述
>>看完有收获的朋友,点个赞呗┭┮﹏┭┮

>>时间::2020-6-15

欢迎关注我的微信公众号(里面同步更新了CSDN的博客)

在这里插入图片描述

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值