stm32+freeRTOS+printf重映射串口
2016-08-09 本文已影响0人
FitTiger
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
--FILE和LINE为stm32库自定义的文件和行号