打印
[STM32F4]

使用 printf会触发 HardFault 异常

[复制链接]
127|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvluoo|  楼主 | 2025-5-26 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F407VG,遇到了 STM32CubeMX IDE 的 ITMdataconsole 问题。如果我使用函数 printf,就会触发 HardFault 异常

HFSR 位也未设置为任何值

使用特权

评论回复
沙发
公羊子丹| | 2025-5-27 07:40 | 只看该作者
我之前遇到类似情况,最后发现是 _write() 没正确重定向,printf 默认找不到输出通道就挂了。

使用特权

评论回复
板凳
周半梅| | 2025-5-27 07:41 | 只看该作者
你有没有打开 ITM 和 SWO 输出?如果 printf 输出不到地方,很容易触发 HardFault。

使用特权

评论回复
地板
帛灿灿| | 2025-5-27 07:42 | 只看该作者
建议先用 ITM_SendChar 单字节测试下,看 SWV Console 能不能正常显示。

使用特权

评论回复
5
童雨竹| | 2025-5-27 07:42 | 只看该作者
检查一下是否开启了 Trace 端口,有时候 ITM 通道没打开也会触发异常。

使用特权

评论回复
6
万图| | 2025-5-27 07:43 | 只看该作者
如果是 newlib-nano 的 libc,printf 会依赖 _write(),你实现这个函数了吗?

使用特权

评论回复
7
Wordsworth| | 2025-5-27 07:44 | 只看该作者
printf 里有 float 吗?float 支持没开也有可能导致 printf 崩溃。

使用特权

评论回复
8
Bblythe| | 2025-5-27 07:45 | 只看该作者
printf 的堆栈消耗比较大,尝试调大一下栈的大小看看问题是否改善。

使用特权

评论回复
9
Pulitzer| | 2025-5-27 07:45 | 只看该作者
试下用 sprintf 到缓存区,看看是不是 ITM 输出部分出的问题。

使用特权

评论回复
10
Uriah| | 2025-5-27 07:46 | 只看该作者
你的 IDE 配置里 Debug 模式下 SWO 设置对了吗?默认可能没启用 trace。

使用特权

评论回复
11
Clyde011| | 2025-5-27 07:47 | 只看该作者
实在不行就先用简单的 USART 打印调试,printf + ITM 有时候踩坑太多。

使用特权

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

本版积分规则

19

主题

20

帖子

0

粉丝