打印
[STM32F0]

stm32f070串口不能发送数据

[复制链接]
359|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 中断优先级。

使用特权

评论回复
5
童雨竹| | 2025-4-2 07:47 | 只看该作者
你使用 DMA 进行 ADC 采集,理论上 CPU 应该不怎么占用资源,这可能是 DMA 的传输方式和串口的发送逻辑冲突了。

使用特权

评论回复
6
万图| | 2025-4-2 07:48 | 只看该作者
这个问题我之前也碰到过,定时器轮询 ADC 确实能有效避免高频中断对串口的影响。

使用特权

评论回复
7
Wordsworth| | 2025-4-2 07:49 | 只看该作者
我试过优化 DMA 的传输,减少每次传输的数据量,也能有效缓解中断过多导致的问题。

使用特权

评论回复
8
Bblythe| | 2025-4-2 07:50 | 只看该作者
通过定时器代替 ADC 中断是一种常见的解决方法,尤其是当你不需要实时采样时。

使用特权

评论回复
9
Pulitzer| | 2025-4-2 07:50 | 只看该作者
如果需要实时传输数据,可以考虑 双缓冲 或 FIFO 来处理 ADC 数据和串口传输的冲突。

使用特权

评论回复
10
Uriah| | 2025-4-2 07:52 | 只看该作者
你有没有检查过 DMA 和串口的优先级配置?调优这两个模块的优先级也可能有帮助。

使用特权

评论回复
11
Clyde011| | 2025-4-2 07:53 | 只看该作者
你的思路很正确,定时器读取 ADC 数据避免了高频中断,性能也得到了保证。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1466

主题

13799

帖子

27

粉丝