printf在TrueSTUDIO不起作用,不知道如何设置。在Keil中可以通过使能MicroLIB来重映射fputc函数来使用printf。
只要 修改3点:
1. 添加:
#include <stdio.h> /* 不要写成 #include ”stdio.h“ , 教训*/
2. 加入:
int __io_putchar(int ch)
{
ITM_SendChar(ch);
return ch;
}
3. 加入:
int _write(int file, char *ptr, int len)
{
int DataIdx;
for (DataIdx = 0; DataIdx < len; DataIdx++)
{
__io_putchar(*ptr++);
}
return len;
}
------------------------------------------------------------------------------
附件是截图.
这样就可以用了。
另外在工程属性设置的[C/C++ Build]->[Settings]->[Tool Settings]->[MCU G++ Linker]->[Miscellaneous]->[Linker flags]中添加[-u _printf_float]参数就可以了。
评分
查看全部评分
谢谢, 最权威的.
另外, swstm32的 ,
在菜单 Help / help Contents/SystemWorkbench for STM32 User Guide > Advanced/ SWOTraces 下面.
还有,根据swstm32文档, 还可以设置 Semihosting, 支持调试. 可以不需要 swo 线.
谢谢。你说的很对,得使用__io_putchar进行重映射。在TrueSTUDI上试了试,还是不知道怎么设置。最后找到了解决办法,需要调用一个叫syscalls.c的源文件,配合__io_putchar来实现。
是的,我居然把syscalls.c的事情给忘记了,不好意思哈!另外可能printf如果不输出浮点数的话,那个Linker的参数可以不加。毕竟加上以后会占掉差不多10K的空间。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
按照你说的进行了__io_putchar 的实现,以及包含syscalls.c的文件,进行编译,当调用printf,死掉了。。。可否贡献一个helloworld供参考,多谢
在项目设置里面,如图
评分
查看全部评分