stm32+freeRTOS+printf重映射串口

stm32Cub极大的方便了我们对于stm32单片机的使用,包括GPIO、freeRTOS、FATFS(文件管理)等功能,但有些设置还须我们手动配置,如串口打印映射问题,下面我们以串口2为例,重新映射。

在main() 函数之前 添加以下代码

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif 

之后添加

PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart2,(uint8_t *)&ch,1,0xFFFF);
    
    return ch;
}

huart2可更改,freeRTOS系统初始化定义。

串口打印在调试时十分有用,但串口打印极大的耗费系统资源,影响系统实时性,因此在release 版本中需要将串口打印去掉,如何方便的进行设置,请看如下代码:

#define  configDebugPrintf   1
#if   (1 == configDebugPrintf)
    #define  Debug_printf(fmt,args...)   printf(fmt"----[file name = %s  line num = %d]""\n",__FILE__,__LINE__,##args)
#else
    #define  Debug_printf(fmt,args...)
#endif

--FILELINE为stm32库自定义的文件和行号

你可能感兴趣的:(stm32+freeRTOS+printf重映射串口)