Luxuff 发表于 2024-8-23 13:22

HC32L196 使用 sprintf 会进入HardFault

HC32L196 使用 sprintf 会进入HardFault,为啥啊大佬们

huquanz711 发表于 2024-8-24 11:15

多半是内存溢出了

suncat0504 发表于 2024-8-25 10:24

仔细看看代码,看看逻辑上有没有问题。有没有可能是自身中断没处理好?

daichaodai 发表于 2024-8-26 07:41

进入hardfault多半是软件问题,导致内存溢出了。

elephant00 发表于 2024-8-28 14:44

栈溢出导致的?

两只袜子 发表于 2024-8-28 15:26

如果传递给 sprintf 的目标缓冲区指针无效(例如,指向了只读内存区域或未分配的内存区域),或者缓冲区大小不足以容纳生成的字符串,则可能引发内存访问违规。

jcky001 发表于 2024-8-28 18:03

中断干扰把

laocuo1142 发表于 2024-8-28 19:46

检查栈大小

cr315 发表于 2024-8-28 19:56

有时编译器或链接器的设置(如优化级别、堆栈大小等)可能不足以支持 sprintf 的使用。

flycamelaaa 发表于 2024-8-28 20:26

使用 snprintf 替代 sprintf。snprintf 允许你指定目标缓冲区的大小,这有助于防止缓冲区溢出。

powerantone 发表于 2024-8-28 21:12

检查编译器的优化级别和链接器的堆栈大小设置,确保它们适合你的应用程序。

stormwind123 发表于 2024-8-28 22:23

暂时禁用中断试试

probedog 发表于 2024-8-28 23:00

使用调试器来跟踪 sprintf 调用时的堆栈状态和寄存器值。
在代码中添加日志记录,以帮助识别在发生 HardFault 之前系统的状态。

hehhehee 发表于 2025-1-30 11:44

先看有没有溢出
页: [1]
查看完整版本: HC32L196 使用 sprintf 会进入HardFault