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库自定义的文件和行号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,724评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,534评论 19 139
  • 整体思路ESP8266作为TCP服务器,,手机作为TCP客户端,自己使用Lua直接做到了芯片里面,省了单片机,,节...
    杨奉武阅读 11,144评论 0 5
  • 跟朋友聊天谈到兴趣爱好,就引发了一个讨论,关于兴趣爱好的讨论 一 朋友的朋友法国留学归来,四年的法国生活可能让他稍...
    三娴儿阅读 2,750评论 1 0
  • 广州人 25岁 178cm 72kg 阳光型,平时爱运动 打篮球 游泳等,性格开朗,体贴,喜欢让身边女生开心,会开...
    onlyloveclub阅读 3,902评论 2 1