搜索
bottom↓
回复: 13

stm32h7用dma+串口空闲中断:断点取消后数据就不会更新。

[复制链接]

出10入4汤圆

发表于 2022-5-14 02:36:51 | 显示全部楼层 |阅读模式
stm32h7系列工程,发现串口接收数据异常。我用dma+串口空闲中断的方式来进行数据接收。
现象是这样的:在空闲中断处理中打断点。然后单步执行的时候,执行到相应的数据buff的时候,在观测窗口。串口接收的数据buff会更新,显示的为我发送的数值。当把断点取消。我一直发送,显示是进中断的,但是数据就不会更新。
然后我又试了一下,把ETH功能去掉。串口的接收数据表现是正常的。脑袋疼,想不出来啊!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入4汤圆

发表于 2022-5-14 13:18:33 | 显示全部楼层
I、D   Catch 关掉看看?

出10入4汤圆

 楼主| 发表于 2022-5-14 17:33:12 | 显示全部楼层
SCREA 发表于 2022-5-14 13:18
I、D   Catch 关掉看看?
(引用自2楼)

大佬,确实是d catch造成的。
之前就怕有问题。我加了SCB->CACR|=1<<2;开了透写模式然后就感觉肯定没问题了。
怎么开了透写还卡数据啊?

出10入4汤圆

 楼主| 发表于 2022-5-15 09:21:28 | 显示全部楼层
achild 发表于 2022-5-14 17:33
大佬,确实是d catch造成的。
之前就怕有问题。我加了SCB->CACR|=1
(引用自3楼)

自问自答来了,实验表明,透写就是处理器写的数据会直接到ram,但是dma写ram的数据,d-cache是不会同步更新的,cpu去读,其实还是读d-cache。所以dam传进去的数据,cpu读的时候,需要先将d-cache失效

出0入0汤圆

发表于 2022-5-15 09:33:08 | 显示全部楼层
H7你几钱能搞到?我这边都头大,当初50多元

出10入4汤圆

 楼主| 发表于 2022-5-15 21:37:41 | 显示全部楼层
mypear 发表于 2022-5-15 09:33
H7你几钱能搞到?我这边都头大,当初50多元
(引用自5楼)

我们产品里面电子学不算大头,产品单价高一点,上不了量,稍微贵点几百一片还承受的住。

出105入79汤圆

发表于 2022-5-16 00:35:23 | 显示全部楼层
把MPU设置一下,DMA的buffer用之前无效+清除cache,看我的贴子折腾了很久 https://www.amobbs.com/thread-5750715-1-1.html

出0入0汤圆

发表于 2022-5-16 06:58:39 来自手机 | 显示全部楼层
这个硬汉eric讲得很清楚的,可以搜一下看看

出16170入6148汤圆

发表于 2022-5-16 08:34:21 来自手机 | 显示全部楼层
“stm32串口诡异现象!求教!  ”标题不合格。已经帮你修正

帖子标题必须能充分说明帖子的内容。如你要问AVR的ADC如何才能测量得比较准确,“AVR的ADC如何消除干扰测量得比较准确?”是合格的标题。不合格举例:
    1:小女子冰天雪地裸体跪求解决方法
    2:救命啊...
    3:高手请出招,一个无法解决的AVR问题
    4:一个困扰学习单片机初学者,惊动单片机开发者的难题
    5:AVR的ADC测量   (点评:你到底是问问题,或是有技术心得与大家分享?)

出15入178汤圆

发表于 2022-5-16 09:22:50 | 显示全部楼层
分享2个理解点:
1. DMA通道CPU不参与,不与Cache产生关联
2. 非CPU更新的数据,读Cache的区间的内容里有可能不是最新的,写也类似,这样角度思考就很好理解。

出10入4汤圆

 楼主| 发表于 2022-5-16 10:13:32 | 显示全部楼层
qwe2231695 发表于 2022-5-16 00:35
把MPU设置一下,DMA的buffer用之前无效+清除cache,看我的贴子折腾了很久 https://www.amobbs.com/thread-5 ...
(引用自7楼)

好的,谢谢,看来设置mpu来编辑ram的属性是更好的办法

出10入4汤圆

 楼主| 发表于 2022-5-16 10:44:19 | 显示全部楼层
armok. 发表于 2022-5-16 08:34
“stm32串口诡异现象!求教!  ”标题不合格。已经帮你修正

帖子标题必须能充分说明帖子的内容。如你要问 ...
(引用自9楼)

好的,下次一定注意

出0入4汤圆

发表于 2022-5-16 12:40:48 | 显示全部楼层
本帖最后由 SCREA 于 2022-5-16 12:46 编辑
achild 发表于 2022-5-14 17:33
大佬,确实是d catch造成的。
之前就怕有问题。我加了SCB->CACR|=1
(引用自3楼)


看7楼,MPU 折腾下,不然带DMA的Debug H7更容易跑飞。

出10入4汤圆

 楼主| 发表于 2022-5-16 14:15:33 | 显示全部楼层
SCREA 发表于 2022-5-16 12:40
看7楼,MPU 折腾下,不然带DMA的Debug H7更容易跑飞。
(引用自13楼)

嗯,已经改了,确实好用。我感觉我又行了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 08:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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