找回密码
 立即注册
查看: 80|回复: 3

求助:STC8H2K17U单片机在某个.c文件中使用printf函数会使程序卡死。

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-02-10 20:39:46
已绑定手机

2

主题

2

回帖

14

积分

新手上路

积分
14
发表于 2026-2-10 20:39:46 | 显示全部楼层 |阅读模式
STC8H2K17U单片机在ADC.C使用printf打印时程序出现卡死情况,同个工程中的其它地方添加不会出现该情况。

截图202602102039328471.jpg
截图202602102039197793.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2026-03-06 08:05:01

9

主题

73

回帖

905

积分

高级会员

积分
905
发表于 2026-2-11 08:26:26 | 显示全部楼层
会不会你这个函数执行得太快了
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2026-03-07 15:12:16
已绑定手机

102

主题

4134

回帖

9097

积分

荣誉版主

无情的代码机器

积分
9097
发表于 2026-2-11 09:08:19 | 显示全部楼层
在某个中断中执行?要确认串口中断优先级,调高串口的。
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:634
  • 最近打卡:2026-03-06 13:57:21
已绑定手机

52

主题

2464

回帖

8728

积分

论坛元老

积分
8728
发表于 2026-2-11 09:09:26 | 显示全部楼层
单片机不过是按照编译器生成的代码,一条一条的执行。
当程序出现卡死的情况,就得好好排查一下这个函数放在这个位置会不会产生BUG。
例如串口打印函数查询一个字节是否发送完成的用户标志,如果是在串口中断里面设置的。然后又在另一个中断(例如定时器中断)里面调用串口打印函数的话,默认两个中断优先级相同,就会产生相互锁死的情况。
串口中断需要等待定时器中断执行完才能运行并设置发送完成用户标志,定时器中断要收到用户完成标志后才能继续往下执行,双方就相互锁死。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-7 15:32 , Processed in 0.105204 second(s), 58 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表