请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G0,空闲中断异常,且DMA接收不到数据?

[复制链接]
一页百 提问时间:2022-4-23 16:56 / 已解决

板子:STM32G0B1

方式:UART2空闲中断+DMA接收

问题:烧写程序后,板子一上电就自动进入空闲中断,但此时没有数据发送,当采用上位机发送数据时,可以进入空闲中断,但DMA接收不到数据?

求帮助,感谢感谢!

收藏 评论10 发布时间:2022-4-23 16:56

举报

10个回答
xmshao 最优答案 回答时间:2022-4-24 16:33:54
我这边做了验证的确会出现你说的现象,个人认为库函数在处理跟空闲有关的中断处理代码部分有些问题。你这样,在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,__HAL_UART_CLEAR_FLAG(&huart2, UART_CLEAR_IDLEF);不要留到后面让库代码处理,这个地方它处理得有点问题。
一页百 回答时间:2022-4-23 16:57:48
想问问是什么原因造成的
废鱼 回答时间:2022-4-24 08:36:14

DMA接收数据长度,只有到达指定长度后才能产生中断,在线仿真模式下,断点可以看一下DMA使用的缓冲区中,是否有数据。

butterflyspring 回答时间:2022-4-24 11:46:21

最好是模拟一个上位机通讯,这样容易调试。先发一个字节看看是否能正常接收,然后再增加。

如果一个字节都不正常,那就调试检查基本配置了。

若果多个字节不正常,那要看看逻辑上是不是有问题,调试一下就找到了。

xmshao 回答时间:2022-4-24 17:33:27

你这样,在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,__HAL_UART_CLEAR_FLAG(&huart2, UART_CLEAR_IDLEF);不要留到后面让库代码处理,这个地方它处理得有点问题。

一页百 回答时间:2022-5-6 15:32:59

废鱼 发表于 2022-4-24 08:36
DMA接收数据长度,只有到达指定长度后才能产生中断,在线仿真模式下,断点可以看一下DMA使用的缓冲区中 ...

[md]感谢,问题已解决

一页百 回答时间:2022-5-6 15:33:19

butterflyspring 发表于 2022-4-24 11:46
最好是模拟一个上位机通讯,这样容易调试。先发一个字节看看是否能正常接收,然后再增加。</p>
<p>如果一个字 ...

[md]感谢,问题已解决

一页百 回答时间:2022-5-6 15:33:36

xmshao 发表于 2022-4-24 17:33
你这样,在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,_<em>HAL</em> ...

[md]感谢,问题已解决

啊源股 回答时间:2022-8-23 17:28:38
请问咋解决的?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版