OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7394|回复: 6

分享一个刚刚踩过的坑,记录一下,同时也帮助大家免于重蹈我的覆辙

[复制链接]

50

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
556
金钱
556
注册时间
2020-3-6
在线时间
77 小时
发表于 2022-4-21 16:24:58 | 显示全部楼层 |阅读模式
本帖最后由 jeff001101 于 2022-4-21 17:25 编辑

之前发了一个求助帖,在调试串口DMA接收的时候,采用轮询的方式采集多个终端设备的数据,可是当把所有终端设备都拔掉以后,原本的设计意图是收不到数据就超时退出,可是调试发现DMA传输完成标志任然置起来了,这就影响了整个程序的走向了。查了很长时间始终找不到原因,总不可能是芯片硬件BUG吧?没办法又重新把英文版和中文版datasheet拿出来仔细看,相关段落来回翻了多遍,终于找到问题所在,看来看文档还是要仔细啊,重点内容每句话都得分析一下才行,我也是翻了好多遍才定位问题,之前看得还是囫囵吞枣,这里也标记一下,时刻提醒自己。好了,看问题点: 155319.png
这是英文版
155640.png
这是中文版
重点就在颜色加深的那一小行字,就这么几个字耽误我整整两天
一开始想当然的认为,没有产生数据传输就不应该会置传输完成标志,可是实时并非如此,我们知道DMA每次传输都要先打开,完成后再关闭。就是关闭这条语句造成了上面的所说的现象,因为手册上说的很明白:“传输结束前禁止了数据流”也会置传输完成标志,换句话说,就是打开DMA传输后,没有数据传输发生就代表本次传输没有完成,这时候关闭DMA通道也会同样置起传输完成标志,所以并不是简单做一个超时退出就完事了。这里做个标记,提醒自己的同时也希望给大家不要和我踩同样的坑,当然,高手除外



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-4-21 16:39:50 | 显示全部楼层
专治疑难杂症
回复 支持 反对

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2022-4-21 17:05:07 | 显示全部楼层
外部中断 在上电的一瞬间也会有可能产生中断
回复 支持 反对

使用道具 举报

4

主题

456

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
1072
注册时间
2021-4-26
在线时间
352 小时
发表于 2022-4-21 17:23:26 | 显示全部楼层
帮顶  
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-5-3
在线时间
4 小时
发表于 2022-4-23 10:04:25 | 显示全部楼层
是否将DMA关闭,清除标志后,不再打开DMA就可以了?
回复 支持 反对

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3345
金钱
3345
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-4-23 14:57:39 | 显示全部楼层
还真没关注这个问题,感谢分享
回复 支持 反对

使用道具 举报

50

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
556
金钱
556
注册时间
2020-3-6
在线时间
77 小时
 楼主| 发表于 2022-4-24 13:49:06 | 显示全部楼层
为梦奔跑 发表于 2022-4-23 10:04
是否将DMA关闭,清除标志后,不再打开DMA就可以了?

我的做法是在每次打开Dma之前先判断一下,标志是否已经置位,如果已经置位就先清一下,再打开Dma
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 23:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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