STM32串口DMA若干问题,记得保存收藏评论

STM32之串口DMA接收不定长数据

引言

在运用stm32或者其他单片机的时候,会经常运用到串口通讯,那么怎么样有效地接管数据呢?假设这段数据是不定长的有怎么样高效接管呢?

同学A:数据来了就会进入串口中断,在中断中读取数据就行了!
中断就是打断程序正常运行,怎么样能保证高效呢?经常把主程序打断,主程序还要不要运行了?
同学B:串口可以配置成用DMA的方式接收数据,等接收完毕就可以去读取了!
这个同学是对的,我们可以使用DMA去接收数据,不过DMA需要定长才能产生接收中断,怎么接收不定长的数据呢?

DMA简介

题外话:其实,上面的问题是很有必要思考一下的,不断思考,才能进步。

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令一哥///

什么是DMA

DMA:全称Direct Memory Access,即直接存储器访问

DMA 传输将数据从一个地址空间复制到另外一个地址空间。CPU只需初始化DMA即可,传输动作自身是由 DMA 控制器来达到和完成。典型的例子就是挪动一个外部内存的区块到芯片内部更快的内存区。这样的操作并没有让处理器参与处理,CPU能够干其他事情,当DMA传输完成的时候产生一个中断,告诉CPU我已经完成了,其次CPU知道了就能够去处理数据了,这样子提高了CPU的利用率,由于CPU是大脑,主要做数据运算的工作,而不是去搬运数据。DMA 传输对于高效能嵌入式系统算

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值