打印
[Security]

请教如何在 STM32CubeIDE 的控制台中使用 ITM Printf

[复制链接]
403|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
咚了个咚|  楼主 | 2025-4-14 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想直接在 STM32CubeIDE 的控制台中使用 ITM Printf,但它在我这边不起作用。
能使用 ITM_SendChar() 在“SWC ITM data Console”中显示字符。
还有一个问题:
为了使用 printf,得更改 syscalls.c 中的 _write 函数,如下所示:
__attribute__((weak)) int _write(int file, char *ptr, int len){        int DataIdx;         for (DataIdx = 0; DataIdx < len; DataIdx++)        {                ITM_SendChar( *ptr++ );        }        return len;}
但即使进行了此更改,printf 也不起作用。
每次我想使用控制台显示时,都必须单击“SWV ITM Data Trace”上的“Start Trace”。每次新仿真,都必须这样做。
请问有没有一种简单的方法可以在仿真时启用“Start Trace”?

使用特权

评论回复
沙发
flycamelaaa| | 2025-5-13 16:25 | 只看该作者
用硬件断点。

使用特权

评论回复
板凳
powerantone| | 2025-5-13 16:25 | 只看该作者
在代码中添加一个宏或函数,用于在需要时启动跟踪。

使用特权

评论回复
地板
公羊子丹| | 2025-5-26 07:23 | 只看该作者
是的,每次启动调试后都得点“Start Trace”,我也是这么干的,确实挺麻烦。        这个简单,在编译选项里加个 -save-temps 就能生成 .s 文件了。        这个我也踩过坑,f_utime 需要在 ffconf.h 里启用 FF_FS_NORTC 和 FF_FS_READONLY 等配置,建议检查下。        感觉像是调试模式下系统时钟没跑起来,I2C总线时序乱了。试试在CubeMX里确认下debug模式下的时钟配置。        看起来 CubeMX 生成的 MAC 地址实际是从 ethernetif.c 里赋值的,改宏没用是因为代码里没用到。        线长15cm已经是极限了,确实需要注意阻抗,尤其是USB高速的话对差分阻抗要求挺严格的。        看起来不像是温度问题,你有没有实时查看TIM1的状态寄存器,看看是不是进了中断或者被强制关闭了?        是不是电流采样点跟实际导通时刻对不上,PWM死区时间确实可能让采样偏早或偏晚。        是不是SPI和I2S切换的时候有残留配置没清掉?GPIO可能还保留上一次的模式。        你那个振铃可能是走线太长或者阻抗不匹配造成的,加串联电阻是对的方向。

使用特权

评论回复
5
周半梅| | 2025-5-26 07:25 | 只看该作者
你那个 _write 实现看起来没问题,我也是这么重定向的,能打印。

使用特权

评论回复
6
帛灿灿| | 2025-5-26 07:26 | 只看该作者
要不要试试 STM32CubeIDE 的 Debug Configurations 里加个初始化脚本来自动启用 ITM?

使用特权

评论回复
7
童雨竹| | 2025-5-26 07:27 | 只看该作者
ITM 通道是不是只启用了通道0?可以检查一下 ITM_TCR 和 ITM_TER 配置。

使用特权

评论回复
8
万图| | 2025-5-26 07:28 | 只看该作者
Trace 必须依赖 SWO 引脚,确保接线没问题,而且 Debug 配置里 Trace 口要打开。

使用特权

评论回复
9
Wordsworth| | 2025-5-26 07:29 | 只看该作者
我之前也遇到 printf 不工作的问题,最后发现是没选上 Core Clock 频率。

使用特权

评论回复
10
Bblythe| | 2025-5-26 07:30 | 只看该作者
能用 ITM_SendChar 打印说明通道是通的,估计是 printf 重定向的 timing 或时钟问题。

使用特权

评论回复
11
Pulitzer| | 2025-5-26 07:31 | 只看该作者
有个笨办法是写个 gdb 脚本,在调试开始时自动启用 SWV trace,不过设置有点麻烦。

使用特权

评论回复
12
Uriah| | 2025-5-26 07:32 | 只看该作者
SWV 的配置界面里有个“自动启动 trace”的选项,我记得某个版本加过,看看你 IDE 是不是新版?

使用特权

评论回复
13
Clyde011| | 2025-5-26 07:32 | 只看该作者
最简单的方式还是每次手动点一下吧,我也一直没找到能自动启动的稳定办法。

使用特权

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

本版积分规则

18

主题

18

帖子

0

粉丝