Rob*_*obC 5 embedded printf stm32 iar cortex-m
我有一个小项目,我添加了自己的自定义调试功能,这样我就可以拥有一些额外的功能。他们一直工作得很好,并使用以下方法发送数据:
while(*bp)
ITM_SendChar(*bp++);
Run Code Online (Sandbox Code Playgroud)
我终于开始切换所有 printf 语句以使用我自己的函数,并且所有输出都停止了。稍微玩了一下,我发现只要我编译了一个 printf 函数,无论在哪里,ITM_SendChar 都能正常工作。
当在项目中使用 printf 时,似乎编译了一些功能,允许 ITM_SendChar 工作。
这不是什么大不了的事,但我很好奇为什么会这样。是否有另一种方法可以初始化 ITM(仪器跟踪宏单元)系统,而不必插入虚拟 printf?
小智 1
我遇到了同样的问题,并尝试了正确配置 ITM 寄存器的所有方法。但我无法弄清楚。
我不使用内存密集型 printf 的解决方案是使用putchar:
while(*bp)
putchar(*bp++);
Run Code Online (Sandbox Code Playgroud)
当我在代码中的某处只有一个 putchar 输出一个字符然后输出其他内容时,它甚至可以工作ITM_SendChar()
我假设一旦包含某些配置功能,IAR 就会自动添加该putchar功能。
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |