硬汉嵌入式论坛

 找回密码
 立即注册
查看: 90|回复: 3
收起左侧

[UART] 求助:串口dma双缓冲接收数据无法进入中断。

[复制链接]

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 7 天前 | 显示全部楼层 |阅读模式
我要在stm32H743II的平台上实现串口的DMA 双缓冲数据接收。
我的实现流程是
      DMA配置双缓冲和传输完成中断,
      串口配置空闲中断。
      DMA传输的个数是32字节。

当DMA完成1次数据传输,就在DMA传输完成中断中将数据存储到队列中。
当串口发生空闲中断,就根据DMA的传输个数,将缓冲中剩余的数据加入到队列中。

现在我配置完成后 DMA能将串口 接收的数据存储到对应的内存地址中。 但是DMA的计数器 DMA_SxNDTR 不会变动,
这就导致我无法进入传输完成中断,不能实现数据接收功能。
希望大家能帮帮我。

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121120
QQ
发表于 5 天前 | 显示全部楼层
方便的话,分享配置和应用代码看下,另外注意一点,如果你的NDRT寄存器没动,DMA应该没有工作才对。

难道是串口中断方式接收的,DMA没有正常运行?
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 4 天前 | 显示全部楼层
谢谢。 我搞定了。 因为我是自己写的驱动,所以没有配置dmamux导致的。 我详细的看了你的关于dmamux的文档。 就修改正确了。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121120
QQ
发表于 3 天前 | 显示全部楼层
cuijunling00 发表于 2026-2-20 19:45
谢谢。 我搞定了。 因为我是自己写的驱动,所以没有配置dmamux导致的。 我详细的看了你的关于dmamux的文档 ...

好的,谢谢告知最终原因。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-2-24 07:23 , Processed in 0.053811 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表