关于STM32串口DMA发送的问题的疑问
假如我把串口DMA设置为NORMAL模式,当我调用下面这个函数时,如果传入的Size大于pData的大小,那么串口打到pData最后一个字节后是拐弯从头开始还是打到缓冲区外边。HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
这个好像跟你的配置有关 DMA配置为Normal模式时,DMA会继续从内存中读取数据,而不会自动拐弯从头开始吧;
这种操作可能会导致内存越界访问?所以如果需要这种方法,最好是在应用层对入参Size做个边界检查,防止超过pData的长度。
dffzh 发表于 2025-6-9 11:28
DMA配置为Normal模式时,DMA会继续从内存中读取数据,而不会自动拐弯从头开始吧;
这种操作可能会导致内存 ...
研究了一下,无论哪种模式都不会自动拐弯从头开始,需要自己做逻辑 qinlu123 发表于 2025-6-9 14:59
研究了一下,无论哪种模式都不会自动拐弯从头开始,需要自己做逻辑
循环模式也不行吗?研究很深入嘛,可以的。 dffzh 发表于 2025-6-9 15:07
循环模式也不行吗?研究很深入嘛,可以的。
循环模式是不停地从起始地址打印size个字节,不是打印到队尾自动从头开始。 要自己处理逻辑吧 qinlu123 发表于 2025-6-9 18:44
循环模式是不停地从起始地址打印size个字节,不是打印到队尾自动从头开始。 ...
好的{:victory:} 这样会顺着地址往下读 6楼说的感觉是靠谱的,可以自己做几个收发小实验看一下就知道了
页:
[1]