STM32 IAR没有ITM跟踪输出,除非代码中包含printf

问题描述 投票:3回答:1

我有一个小项目,我在其中添加了自己的自定义调试功能,因此我可以拥有一些额外的功能。他们工作得很好,并使用以下方法发送数据:

while(*bp)
  ITM_SendChar(*bp++);

我终于开始切换所有的printf语句以使用我自己的函数,并且所有输出刚刚停止。经过一番尝试,我发现只要编译了一个单独的printf函数,无论在哪里,ITM_SendChar都可以正常工作。

似乎在项目中使用printf时,其中编译了一些功能,使ITM_SendChar可以工作。

这没什么大不了的,但是我对此很好奇。也许还有另一种方法可以初始化ITM(仪器跟踪宏单元)系统,而不必坚持使用虚拟printf?]

embedded printf stm32 cortex-m3 iar
1个回答
0
投票

我遇到了同样的问题,我尝试了正确配置ITM寄存器的所有方法。但是我无法弄清楚。

我不使用占用大量内存的printf的解决方案,是使用putchar

while(*bp)
  putchar(*bp++);

甚至可以正常工作,当我在代码中的某个地方只有一个putchar时,它输出一个字符,然后用ITM_SendChar()输出其他内容>

我认为一旦包含putchar功能,IAR就会自动添加一些配置功能。

© www.soinside.com 2019 - 2024. All rights reserved.