STM32/STM8技术论坛
直播中

李明

8年用户 1355经验值
私信 关注
[问答]

STM32 HAL使用带DMA的ADC会影响UART传输

我正在使用STM32 Nucleo F334R8板。我使用UART以异步模式将一些数据传输到我的PC,使用:
HAL_UART_Transmit_IT(&huart2, &data, sizeof(data));
我注意到在DMA模式下启用ADC后,微控制器开始通过UART发送错误数据。
当我只是评论出来时:
HAL_ADC_Start_DMA(&hadc1, adc_dma_values, 2);
UART传输发送正确的数据。
当我HAL_UART_Transmit_IT()用HAL_UART_Transmit()它替换它也令人惊讶地运作良好。
我不明白HAL_ADC_Start_DMA()可能会有什么影响HAL_UART_Transmit_IT()。
这是main.c的完整代码,也许会有所帮助。

回帖(4)

李娜

2018-9-18 15:18:42
我在代码中看不到任何与UART相关的中断配置,你是否在某处处理UART发送中断?同样使用DMA移动两个字节似乎有点矫枉过正。检查从DMA中获取中断的频率,也许它会压低UART IT。您可以尝试优先考虑优先级,为UART提供更高的prio
举报

李明

2018-9-18 15:19:10
你是对的。原来我的问题与优先事项有关。随意做出最终答案。我会接受的。谢谢!
举报

王艳

2018-9-18 15:24:56
基于以下内容:
如果你在没有中断的情况下使用UART,UART正在工作,并且
如果不使用DMA,则UART可以处理中断。
DMA中断可能经常发生,因为CPU始终忙于处理DMA中断,因此不会执行UART IRQ。
优先考虑UART IRQ应解决问题。
举报

李明

2018-9-18 15:25:11
是我的问题。我改变了中断的优先级,现在效果很好。谢谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分