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

[复制链接]
6736|35
 楼主| 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个程序访问一个资源的问题。一般是通过锁解决(信号量)
先检测信号量可用,不可用,等待
可用,占用信号量,使用资源
资源使用完成,释放信号量
albertaabbot 发表于 2025-5-21 15:24 | 显示全部楼层
定时器中断优先级过高,导致主程序长时间无法执行串口发送。
stormwind123 发表于 2025-5-21 15:49 | 显示全部楼层
中断优先级冲突?定时器中断优先级高于串口中断(如果使用了)。
probedog 发表于 2025-5-21 15:50 | 显示全部楼层
printf函数和中断服务程序同时访问串口外设导致的?
classroom 发表于 2025-5-21 15:50 | 显示全部楼层
可能是缓冲区溢出导致的。
cr315 发表于 2025-5-21 15:54 | 显示全部楼层
检查重定向实现是否正确实现了_write或fputc。
elephant00 发表于 2025-5-21 15:55 | 显示全部楼层
检查时钟配置是否正确,特别是在启用定时器后没有影响串口时钟。
flycamelaaa 发表于 2025-5-21 16:23 | 显示全部楼层
检查中断优先级配置,串口中断(如果使用)的优先级高于或等于定时器中断。
updownq 发表于 2025-5-21 16:32 | 显示全部楼层
用示波器观察串口波形,确认波特率、信号幅度是否符合要求。
powerantone 发表于 2025-5-21 17:20 | 显示全部楼层
用环形缓冲区,实现一个发送缓冲区,在中断外填充数据,在中断内发送数据。
hilahope 发表于 2025-5-21 17:20 | 显示全部楼层
电源不稳导致串口通信异常。              
timfordlare 发表于 2025-5-21 18:00 | 显示全部楼层
必要时添加电阻匹配或电容滤波。              
jcky001 发表于 2025-5-21 18:20 | 显示全部楼层
临时禁用中断发送关键数据。
beacherblack 发表于 2025-5-21 18:27 | 显示全部楼层
在STM32中,可以通过设置中断优先级组和中断优先级来调整中断的优先级。
usysm 发表于 2025-5-21 19:12 | 显示全部楼层
波特率、数据位、停止位等参数不一致。
probedog 发表于 2025-5-21 21:00 | 显示全部楼层
可能重定向函数没有正确处理中断环境。
pentruman 发表于 2025-5-21 21:46 | 显示全部楼层
未正确配置串口              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

1505

帖子

1

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