STM32串口DMA通信

前言

STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。

一、DMA介绍

DMA,全称Direct Memory Access,即直接存储器访问。
DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。

在这里插入图片描述

DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。

DMA框图

在这里插入图片描述

二、创建CubeMX项目生成代码

选择芯片
在这里插入图片描述
设置RCC,选择Cystal
在这里插入图片描述
设置串口
在这里插入图片描述
使能中断
在这里插入图片描述
DMA设置
点击DMA Settings的Add添加通道,传输速率设置为中速Medium,模式设置为Normal,右侧选择Memory
在这里插入图片描述
在System view下选择DMA
在这里插入图片描述
时钟设置如图所示
在这里插入图片描述

之后生成项目即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、代码补充

main.c中添加代码

uint8_t Senbuff[] = "Hello world!";  //定义数据发送数组

在这里插入图片描述
添加代码在while循环里:

  HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
  HAL_Delay(1000);

在这里插入图片描述
编译无误,生成HEX文件
在这里插入图片描述

四、串口发送数据

将芯片BOOT0置1,烧录程序
在这里插入图片描述
然后打开串口助手,将BOOT0置0,按下复位键,即可接收数据

在这里插入图片描述

五、总结

通过本实验,可能不能直观的看出查询方式和DMA方式的区别,因为是潜在的速度区别和功能区别,DMA传输过程不占用CPU资源,可以边传输边运行其他任务,更加高效。

六、参考资料

【STM32】 DMA原理,步骤超细详解,一文看懂DMA
DMA数据传输

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值