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

串口DMA收发出现ORE错误

[复制链接]
龙龙龙ww 提问时间:2026-2-2 11:31 / 未解决

芯片:STM32L496

库:HAL库

问题描述:在使用HAL库时发现串口在进行DMA发送数据的同时接收DMA数据,有时候会出现串口ORE错误。

通过查阅手册和网上相关问题的资料,发现是DMA发送和接收的HAL库函数都会给DMA上锁(都会调用HAL_DMA_Start_IT 这里边会有__HAL_LOCK(hdma))。然后当出现ORE错误的时候这个锁就无法解开了,然后接收的数据会出现接收到0并且不再向接收数组后边插入值而是往前面插入值。

我发现当我在检测这个到这个错误手动将DMA的Lock和State恢复,就可以避免此问题,串口DMA恢复正常接收数据。

我这样做是对的嘛?为什么这里使用HAL库会给DMA上锁,这不就相当于全双工变为了半双工。

收藏 评论2 发布时间:2026-2-2 11:31

举报

2个回答
xmshao 回答时间:2026-2-3 10:40:03

这里的LOCK是针对各个独立的DMA通道的,应该没有全双工变半工的说法。

加LOCK的目的主要防止发生对同一DMA 通道进行重复启动,或说对正在工作中的DMA进行再启动。

在出现ORE错误后,在相应事件或中断里应该对各种标志或状态位进行清零或回归无错、就绪的状态,以开启后续的传输。 这个环节按理是用户在相关回调函数里完成,你手动操作并没什么不合理的地方。

xiaohutusen 回答时间:1 小时前

你有可能在DMA发送处理中调用了HAL_UART_DMAStop;这个函数会把串口的

发送DMA和接收DMA都关掉。。。。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版