打印
[技术问答]

HC32L196 使用 sprintf 会进入HardFault

[复制链接]
1448|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Luxuff|  楼主 | 2024-8-23 13:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HC32L196 使用 sprintf 会进入HardFault,为啥啊大佬们

使用特权

评论回复
沙发
huquanz711| | 2024-8-24 11:15 | 只看该作者
多半是内存溢出了

使用特权

评论回复
板凳
suncat0504| | 2024-8-25 10:24 | 只看该作者
仔细看看代码,看看逻辑上有没有问题。有没有可能是自身中断没处理好?

使用特权

评论回复
地板
daichaodai| | 2024-8-26 07:41 | 只看该作者
进入hardfault多半是软件问题,导致内存溢出了。

使用特权

评论回复
5
elephant00| | 2024-8-28 14:44 | 只看该作者
栈溢出导致的?

使用特权

评论回复
6
两只袜子| | 2024-8-28 15:26 | 只看该作者
如果传递给 sprintf 的目标缓冲区指针无效(例如,指向了只读内存区域或未分配的内存区域),或者缓冲区大小不足以容纳生成的字符串,则可能引发内存访问违规。

使用特权

评论回复
7
jcky001| | 2024-8-28 18:03 | 只看该作者
中断干扰把

使用特权

评论回复
8
laocuo1142| | 2024-8-28 19:46 | 只看该作者
检查栈大小

使用特权

评论回复
9
cr315| | 2024-8-28 19:56 | 只看该作者
有时编译器或链接器的设置(如优化级别、堆栈大小等)可能不足以支持 sprintf 的使用。

使用特权

评论回复
10
flycamelaaa| | 2024-8-28 20:26 | 只看该作者
使用 snprintf 替代 sprintf。snprintf 允许你指定目标缓冲区的大小,这有助于防止缓冲区溢出。

使用特权

评论回复
11
powerantone| | 2024-8-28 21:12 | 只看该作者
检查编译器的优化级别和链接器的堆栈大小设置,确保它们适合你的应用程序。

使用特权

评论回复
12
stormwind123| | 2024-8-28 22:23 | 只看该作者
暂时禁用中断试试

使用特权

评论回复
13
probedog| | 2024-8-28 23:00 | 只看该作者
使用调试器来跟踪 sprintf 调用时的堆栈状态和寄存器值。
在代码中添加日志记录,以帮助识别在发生 HardFault 之前系统的状态。

使用特权

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

本版积分规则

2

主题

3

帖子

0

粉丝