stm32h7 UART dma接收不到数据_Stm32HAL库开发(3) DMA控制器

本文为《Mastering STM32》第九章的学习笔记。本文一共901字。

9.1

DMA介绍

9.1.1 DMA的必要性与其在内部总线中的作用

Stm32中的每个外设都需要和内核进行数据交换,有的是SPI,UART接口类使用具体协议与外界通信的外设,有的是像GPIO改变寄存器使端口进行电平变化。这些外设的数据传输活动都会引起内核在被占用做不了其他事。 举个例子:在使用UART2接口的时候,我们在SRAM中定义一个数组uint8_t buf[20]作为串口接收数据的缓存,使用HAL_UART_Receive(&huart2, buf, 20,HAL_MAX_DELAY)接收20个字节的数据,HAL_UART_Receive()函数会20次读取huart2.Instance->DR字段的数据,于是Cortex-M内核就需要等待20次UART RXNE 标志位被置位(该标志位被置位意味着有新数据被接收)。在这个20次传输中,Cortex-M内核像下图一样,只能进行数据传输和等待标志置位。 5afdec79e749ec6010e3de2306c2002d.png

同理,在使用有些被挂在低速总线上的外设在传输数据中需要CPU等待更多时间,这就是为什么如今的高性能处理器要提供一个专门的硬件去实现外设与内部存储之间的数据传输的原因。

在学习DMA更多的细节之前,来看看从外设传输到SRAM内存中涉及到

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值