关于STM32cube_IDE printf重定向
关于这部分网上大部分的教程都是如图1所示,但是有些时候设置并不能生效,其实只需要如下几步。
图1重定向printf
(1)重新实现int __io_putchar(int ch)函数,在syscall.c文件中可以看到如图2接口。
图2函数接口
我们只需要在相应文件中比如main.c实现该函数即可如图3所示
图3函数实现
(2)经过第1步设置这时候printf已经可以正常使用了,但是发现打印中文会乱码,和不能打印浮点数的问题,网上大部分教程都是如图4所示的设置,但是一般不建议这么操作,一来我们一般都是使用UTF-8编码这样改成GBK就容易造成我们的代码注释乱码,再来就是这样做还是有几率乱码,甚至不生效。这里建议做如图5、6设置。
图4一般设置
图5添加打印中文环境设置
图6添加打印浮点数环境设置
(3)注意事项,经过第1步、第2步设置,printf已经可以正常使用了。但是如果你使用了RTOS在线程中使用printf如果出现HardFault_Handler,可能是因为栈空间分配的太小,导致栈溢出,可以增大栈空间试试。