打印

STM32用串口重定向printf函数的问题

[复制链接]
3436|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Betty996|  楼主 | 2025-4-18 11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用串口重定向printf函数,在main函数里串口打印数据显示没问题,但是开了一个1s定时更新中断的定时器以后串口打印就乱码了,这是什么情况?

使用特权

评论回复
沙发
yangjiaxu| | 2025-4-18 11:45 | 只看该作者

STM32用串口重定向printf函数的问题

定时器中断优先级高于串口中断,导致串口传输被定时器中断打断。串口数据发送过程中若被高优先级中断抢占,可能引发数据不完整或乱码;
还有就是建议你把代码附上来,看看你的代码逻辑怎么写的,这样能更好的针对你的问题来解答

使用特权

评论回复
板凳
GlenX| | 2025-4-23 08:23 | 只看该作者

STM32用串口重定向printf函数的问题

用串口DMA方式,可以不用中断,批量传输

使用特权

评论回复
地板
steelen| | 2025-5-20 12:00 | 只看该作者

STM32用串口重定向printf函数的问题

用DMA方式也一样有问题的。这是2个程序访问一个资源的问题。一般是通过锁解决(信号量)
先检测信号量可用,不可用,等待
可用,占用信号量,使用资源
资源使用完成,释放信号量

使用特权

评论回复
5
albertaabbot| | 2025-5-21 15:24 | 只看该作者
定时器中断优先级过高,导致主程序长时间无法执行串口发送。

使用特权

评论回复
6
stormwind123| | 2025-5-21 15:49 | 只看该作者
中断优先级冲突?定时器中断优先级高于串口中断(如果使用了)。

使用特权

评论回复
7
probedog| | 2025-5-21 15:50 | 只看该作者
printf函数和中断服务程序同时访问串口外设导致的?

使用特权

评论回复
8
classroom| | 2025-5-21 15:50 | 只看该作者
可能是缓冲区溢出导致的。

使用特权

评论回复
9
cr315| | 2025-5-21 15:54 | 只看该作者
检查重定向实现是否正确实现了_write或fputc。

使用特权

评论回复
10
elephant00| | 2025-5-21 15:55 | 只看该作者
检查时钟配置是否正确,特别是在启用定时器后没有影响串口时钟。

使用特权

评论回复
11
flycamelaaa| | 2025-5-21 16:23 | 只看该作者
检查中断优先级配置,串口中断(如果使用)的优先级高于或等于定时器中断。

使用特权

评论回复
12
updownq| | 2025-5-21 16:32 | 只看该作者
用示波器观察串口波形,确认波特率、信号幅度是否符合要求。

使用特权

评论回复
13
powerantone| | 2025-5-21 17:20 | 只看该作者
用环形缓冲区,实现一个发送缓冲区,在中断外填充数据,在中断内发送数据。

使用特权

评论回复
14
hilahope| | 2025-5-21 17:20 | 只看该作者
电源不稳导致串口通信异常。              

使用特权

评论回复
15
timfordlare| | 2025-5-21 18:00 | 只看该作者
必要时添加电阻匹配或电容滤波。              

使用特权

评论回复
16
jcky001| | 2025-5-21 18:20 | 只看该作者
临时禁用中断发送关键数据。

使用特权

评论回复
17
beacherblack| | 2025-5-21 18:27 | 只看该作者
在STM32中,可以通过设置中断优先级组和中断优先级来调整中断的优先级。

使用特权

评论回复
18
usysm| | 2025-5-21 19:12 | 只看该作者
波特率、数据位、停止位等参数不一致。

使用特权

评论回复
19
probedog| | 2025-5-21 21:00 | 只看该作者
可能重定向函数没有正确处理中断环境。

使用特权

评论回复
20
pentruman| | 2025-5-21 21:46 | 只看该作者
未正确配置串口              

使用特权

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

本版积分规则

47

主题

1467

帖子

1

粉丝