[STM32F0] stm32f070串口不能发送数据

[复制链接]
1055|10
 楼主| 地瓜patch 发表于 2025-3-26 20:36 | 显示全部楼层 |阅读模式
在程序里实现了两个功能,ADC采集数据,串口发送数据
ADC采用DMA中断采集数据。
数据处理后用串口发送出去。
实际测试ADC采集正常,但是串口不能发送数据。

最后查找是因为ADC中断频繁,导致串口发送失败
在程序中将ADC中断注释掉,串口收发正常。
最终使用定时器读取ADC数据解决该问题
记录一下测试情况
公羊子丹 发表于 2025-4-2 07:44 | 显示全部楼层
这个问题说明了 ADC 中断和串口发送的竞争,DMA 频繁触发可能会导致串口无法正常工作,定时器方式解决得很好!
周半梅 发表于 2025-4-2 07:45 | 显示全部楼层
我遇到类似的问题时,也通过定时器来间隔读取 ADC 数据,这样可以避免中断频繁冲突。
帛灿灿 发表于 2025-4-2 07:46 | 显示全部楼层
频繁的 ADC 中断占用了 CPU 资源,影响了串口发送的时序,这种情况可以考虑调低 ADC 中断优先级。
童雨竹 发表于 2025-4-2 07:47 | 显示全部楼层
你使用 DMA 进行 ADC 采集,理论上 CPU 应该不怎么占用资源,这可能是 DMA 的传输方式和串口的发送逻辑冲突了。
万图 发表于 2025-4-2 07:48 | 显示全部楼层
这个问题我之前也碰到过,定时器轮询 ADC 确实能有效避免高频中断对串口的影响。
Wordsworth 发表于 2025-4-2 07:49 | 显示全部楼层
我试过优化 DMA 的传输,减少每次传输的数据量,也能有效缓解中断过多导致的问题。
Bblythe 发表于 2025-4-2 07:50 | 显示全部楼层
通过定时器代替 ADC 中断是一种常见的解决方法,尤其是当你不需要实时采样时。
Pulitzer 发表于 2025-4-2 07:50 | 显示全部楼层
如果需要实时传输数据,可以考虑 双缓冲 或 FIFO 来处理 ADC 数据和串口传输的冲突。
Uriah 发表于 2025-4-2 07:52 | 显示全部楼层
你有没有检查过 DMA 和串口的优先级配置?调优这两个模块的优先级也可能有帮助。
Clyde011 发表于 2025-4-2 07:53 | 显示全部楼层
你的思路很正确,定时器读取 ADC 数据避免了高频中断,性能也得到了保证。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1988

主题

15391

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部