stm32h7 串口idle_【一个小白的STM32H7修炼之道】串口+DMA

文章内容偏向HAL库的移植和使用,以个人观点及了解为主,若与事实不符,则以www.st.com、www.stmcu.org.cn等平台为准。

历程代码:https://gitee.com/cai_xl/MyWayToLearnSTM32H7

中断方式使得CPU不用一直等待TXE和TC标志位,但每次有一个字节的数据写入TDR寄存器,都会触发一次中断(TXE或者TC)。像STM32L0这样主频很低(32MHz)的型号,通过HAL库用中断方式在较高波特率条件下发送大量数据,可能会让CPU在发送数据时卡死在中断中。STM32H7系列的主频已经让这个问题不是那么明显了,但依然有更高效的方法——DMA方式。

DMA全称Direct Memory Access,意为直接内存访问(其他翻译可能不同,但都是一个意思),是一种可以不占用CPU的数据传输方式。要使用DMA的话,只需要告诉它,从哪里把数据传输到哪里,一共传输多少数据,DMA就可以开始工作。直到所有数据全部传输完成,DMA才会用中断通知CPU,上一次的DMA传输任务已经完成了。和中断方式相比,DMA并不会每次向串口传输一个字节(9bit数据位的话,是两个字节)就产生一次中断,所以CPU开销相当小。实际上,DMA在STM32和其他微控制器中,都得到了相当广泛的应用。对于STM32,DMA几乎可以涉及到所有外设,除串口之外,SPI、TIM、I2C等外设都可以使用DMA收发数据。DMA的功能十分强大,也就使得DMA相当的复杂,所以这篇文章不会细讲DMA,只编写一个使用DMA方式通过串口发送数据的历程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值