尝试了解 ITM 和 SWV 以便使用有用的 printf 函数进行调试是非常值得的。但它不适用于 ST 的最新主板之一 NUCLEO-H723ZG。这是一次真正令人毛骨悚然的体验,因为 printf 在另一块主板 NUCLEO-H743ZI2 上工作得如此轻松。
我使用的是 STM32CubeIDE v 1.7.0。有没有人找到 H723ZG 芯片(或更可能的是该芯片的 ST 开发软件)解决此问题的方法?
ITM 和 printf 在 Nucleo-H723ZG 上工作。
使用STM32CubeIDE v 1.7.0(最新版本),默认板时钟为550MHz。然而,如时钟配置图所示,跟踪时钟为 275MHz。在调试配置属性中,启用 SWV 时,核心时钟频率必须设置为 275MHz(而不是 550)。
这与配置 Nucleo-H743ZI2 板的最大时钟频率 480MHz 不同。在这种情况下,将 SWV 核心时钟设置为 480MHz,而不是 Trace 时钟频率。
感谢STM的支持帮助我解决了这个难题。
我目前正在使用 H723 在 Nucleo 板上进行开发。 如果系统时钟为 550Mhz,并且在 SWV 的调试器配置的系统时钟设置中输入 275MHz,则 printf() 可以工作。
如果我将系统时钟从 550MHz 更改为任何其他值,即使将 SWV 的系统时钟值保持为该值的 1/2,我也会得到乱码。
我想以 528MHz 或 480MHz 运行,但 printf() 不起作用。 目前,我正在 550MHz 下调试所有内容,当我认为我已经完成大部分工作时,请删除所有调试 printf() 行。
其实我: #定义USEPRINTF 1
并且在程序中有: #ifdef USEPRINTF // 输入所有需要的代码 #结束
所以当我评论 #define USEPRINTF 行时,这一切都消失了(只是分享以防万一它可能有某种原因导致乱码)