[STM32F4] DMA 无法接收 USART3 数据

[复制链接]
80|38
ccook11 发表于 2026-6-6 12:32 | 显示全部楼层
当 DMA 接收完指定的数据长度后,它需要触发 DMA 中断,在中断服务函数中调用 HAL_DMA_IRQHandler,HAL 库才能知道传输完成,进而去调用 HAL_UART_RxCpltCallback。
hilahope 发表于 2026-6-6 13:18 | 显示全部楼层
检查DMA配置与关联性              
phoenixwhite 发表于 2026-6-6 13:44 | 显示全部楼层
使用 HAL_UART_Receive_DMA 而非 HAL_UART_Receive_IT 启动DMA接收。
uytyu 发表于 2026-6-6 14:05 | 显示全部楼层
DMA传输完成和传输错误中断需在DMA初始化时使能
jackcat 发表于 2026-6-6 14:23 | 显示全部楼层
DMA 在搬数据 ≠ 会触发 UART 回调。
chenci2013 发表于 2026-6-6 14:47 | 显示全部楼层
HAL 库的设计是依靠 UART 的 IDLE中断 来判断一帧不定长数据的结束,然后由 UART 中断去主动停止 DMA 并调用 HAL_UART_RxCpltCallback
sesefadou 发表于 2026-6-6 15:08 | 显示全部楼层
DMA配置是否与中断优先级匹配?
ulystronglll 发表于 2026-6-6 15:26 | 显示全部楼层
如何在循环DMA模式下实现数据接收回调?
albertaabbot 发表于 2026-6-6 15:46 | 显示全部楼层
不定长 DMA + IDLE 的完整工程模板
everyrobin 发表于 2026-6-6 17:10 | 显示全部楼层
只开启 USART3_IRQn,没有开启 DMA 流的中断。如果没有 DMA 中断,HAL 库根本不知道数据接收完了。
wilhelmina2 发表于 2026-6-7 20:12 | 显示全部楼层
UART_DMAReceiveCplt与RxCpltCallback关系是什么?
vivilyly 发表于 2026-6-7 21:49 | 显示全部楼层
动态调整接收长度              
belindagraham 发表于 2026-6-7 22:13 | 显示全部楼层
DMA 模式决定“什么时候回调”
loutin 发表于 2026-6-7 22:31 | 显示全部楼层
判断 USART3 + DMA1 Stream1 是否真的匹配
AloneKaven 发表于 2026-6-8 10:35 | 显示全部楼层
DMA接收使能位检查过吗?
FranklinUNK 发表于 2026-6-8 17:58 | 显示全部楼层
检查DMA接收使能位是否正确设置,同时确认NVIC中断优先级和使能是否正确配置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0