最近使用STM32CubeMX加Ubuntu18.0来进行STM32相关程序的开发,在使用串口打印的使用出现了如下问题:
- printf函数按照Keil中的方式进行映射后,在软件仍然无法正常使用Printf函数
- 使用了__io_putchar() 和 int putc()都无法解决问题
我是使用的时makefile项目来通过命令行进行编译的,在网上查了,并且亲自测试后得出结论,在STM32CubeMX生成的makefile项目文件缺少syscalls.c文件,进一步查询发现这个主要是进行系统调用的。结合其中的函数,在使用int __io_putchar(int ch)进行printf重映射的时候还需加入系统调用的相关函数,如图所示:
经过上述的重映射之后printf函数就可以使用了,我这边使用了FreeRTOS操作系统,如图:
串口接收到的数据如下图所示:
希望对需要的小伙伴能有所帮助,有喜欢使用开源开发工具进行STM32开发的小伙伴,可以多交流交流,第一次写技术博客,有错误还希望及时指正。