关于在Ubuntu下开发STM32程序printf函数的重映射问题

最近使用STM32CubeMX加Ubuntu18.0来进行STM32相关程序的开发,在使用串口打印的使用出现了如下问题:

  1. printf函数按照Keil中的方式进行映射后,在软件仍然无法正常使用Printf函数
  2. 使用了__io_putchar() 和 int putc()都无法解决问题

我是使用的时makefile项目来通过命令行进行编译的,在网上查了,并且亲自测试后得出结论,在STM32CubeMX生成的makefile项目文件缺少syscalls.c文件,进一步查询发现这个主要是进行系统调用的。结合其中的函数,在使用int __io_putchar(int ch)进行printf重映射的时候还需加入系统调用的相关函数,如图所示:

关于在Ubuntu下开发STM32程序printf函数的重映射问题

经过上述的重映射之后printf函数就可以使用了,我这边使用了FreeRTOS操作系统,如图:

关于在Ubuntu下开发STM32程序printf函数的重映射问题

串口接收到的数据如下图所示:

关于在Ubuntu下开发STM32程序printf函数的重映射问题

希望对需要的小伙伴能有所帮助,有喜欢使用开源开发工具进行STM32开发的小伙伴,可以多交流交流,第一次写技术博客,有错误还希望及时指正。关于在Ubuntu下开发STM32程序printf函数的重映射问题关于在Ubuntu下开发STM32程序printf函数的重映射问题