[其它应用] 串口中断中使用导致printf死机怎么办?

[复制链接]
3111|15
 楼主| cr315 发表于 2023-5-6 09:19 | 显示全部楼层 |阅读模式
串口中断中使用 printf 打印就死机,使用rt_kprintf一样死机,printf使用了重定向具体如下图


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
albertaabbot 发表于 2023-5-10 20:08 | 显示全部楼层
可能单片机负荷过大,或者工作不正常。
yeates333 发表于 2023-5-10 20:42 | 显示全部楼层
为什么在中断函数中不能使用printf打印函数
i1mcu 发表于 2023-5-10 21:01 | 显示全部楼层
按正常的通信,与死机是毫无关系的
ingramward 发表于 2023-6-8 15:23 | 显示全部楼层
调整缓存区大小,在编译的时候通过修改标准库头文件中的宏定义,适当增大缓存区的大小。
biechedan 发表于 2023-6-8 15:39 | 显示全部楼层
在设计中要尽量减少中断的频率和执行时间。
robincotton 发表于 2023-6-8 15:50 | 显示全部楼层
又占资源又占时间 不就是串口吗              
phoenixwhite 发表于 2023-6-8 15:56 | 显示全部楼层
在中断中尽量避免使用printf函数,可以考虑使用其他低级别的输出方式,如直接往寄存器中写入数据等。
vivilyly 发表于 2023-6-8 16:02 | 显示全部楼层
printf是C语言最复杂的函数之一
uytyu 发表于 2023-6-8 16:11 | 显示全部楼层
在魔术棒、Targer选项页中勾选useMicroLIB,即可成功运行。
febgxu 发表于 2023-6-8 16:23 | 显示全部楼层
在使用printf函数时,可以使用无缓存的版本,如snprintf等。这样可以避免缓存数据积累的问题。
eefas 发表于 2023-6-8 16:50 | 显示全部楼层
在使用printf函数时,可以将其放到主程序中进行处理,而不是在中断中使用。
OKAKAKO 发表于 2023-11-12 19:02 | 显示全部楼层
可能是内存冲突导致的问题
中国龙芯CDX 发表于 2023-11-12 20:14 | 显示全部楼层
跟使用的环境有关系
szt1993 发表于 2023-11-12 20:16 | 显示全部楼层
按正常的通信不会导致问题的
玫瑰凋零日记 发表于 2025-8-30 15:09 | 显示全部楼层
串口中断中调用 printf 易死机,因 printf 通常带缓存且非重入。解决:1. 中断中仅将数据存入环形缓冲区,不直接 printf;2. 主循环中检查缓冲区,有数据再调用 printf 输出;3. 确保缓冲区操作加锁或用原子操作,避免竞态。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1466

主题

4964

帖子

0

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