打印

关于STM32串口DMA发送的问题的疑问

[复制链接]
700|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qinlu123|  楼主 | 2025-6-9 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如我把串口DMA设置为NORMAL模式,当我调用下面这个函数时,如果传入的Size大于pData的大小,那么串口打到pData最后一个字节后是拐弯从头开始还是打到缓冲区外边。
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)


使用特权

评论回复

相关帖子

沙发
爱情海玩偶| | 2025-6-9 10:59 | 只看该作者
这个好像跟你的配置有关

使用特权

评论回复
板凳
dffzh| | 2025-6-9 11:28 | 只看该作者
DMA配置为Normal模式时,DMA会继续从内存中读取数据,而不会自动拐弯从头开始吧;
这种操作可能会导致内存越界访问?所以如果需要这种方法,最好是在应用层对入参Size做个边界检查,防止超过pData的长度。

使用特权

评论回复
地板
qinlu123|  楼主 | 2025-6-9 14:59 | 只看该作者
dffzh 发表于 2025-6-9 11:28
DMA配置为Normal模式时,DMA会继续从内存中读取数据,而不会自动拐弯从头开始吧;
这种操作可能会导致内存 ...

研究了一下,无论哪种模式都不会自动拐弯从头开始,需要自己做逻辑

使用特权

评论回复
5
dffzh| | 2025-6-9 15:07 | 只看该作者
qinlu123 发表于 2025-6-9 14:59
研究了一下,无论哪种模式都不会自动拐弯从头开始,需要自己做逻辑

循环模式也不行吗?研究很深入嘛,可以的。

使用特权

评论回复
6
qinlu123|  楼主 | 2025-6-9 18:44 | 只看该作者
dffzh 发表于 2025-6-9 15:07
循环模式也不行吗?研究很深入嘛,可以的。

循环模式是不停地从起始地址打印size个字节,不是打印到队尾自动从头开始。

使用特权

评论回复
7
zjsx8192| | 2025-6-10 08:07 | 只看该作者
要自己处理逻辑吧

使用特权

评论回复
8
dffzh| | 2025-6-10 08:44 | 只看该作者
qinlu123 发表于 2025-6-9 18:44
循环模式是不停地从起始地址打印size个字节,不是打印到队尾自动从头开始。 ...

好的

使用特权

评论回复
9
ayb_ice| | 2025-6-10 08:47 | 只看该作者
这样会顺着地址往下读

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

1925

帖子

14

粉丝