当前位置: 首页 > news >正文

STM32串口重定向:MDK与GCC重定向需重写的不同函数

STM32串口重定向:MDK与GCC重定向需重写的不同函数

在嵌入式开发过程中,特别是在使用STM32系列微控制器时,调试是一个不可或缺的环节。为了方便调试,通常会将printf等标准输出函数通过UART串口输出到PC端。然而,在不同的编译环境下(如MDK和GCC),实现这一功能需要重写的函数有所不同。本文旨在探讨如何在这两种环境中进行串口重定向,并指出它们之间需要重写的函数差异。

无论是MDK还是GCC环境,实现STM32串口重定向的关键都在于正确地重写相应的输出函数。尽管两个环境下的具体实现细节有所区别——MDK侧重于fputc函数的重写,而GCC则更多关注于_write函数的实现——但目的都是为了能够方便地利用串口输出调试信息。

当然为了方便可以直接复制两种重写的代码

//串口重定向函数
//keil的重定向函数
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1,2000);//重定向到对应的串口即可return ch;
}
//GCC的重定向函数
int _write(int fd, char *ptr, int len)
{HAL_UART_Transmit(&huart1, (uint8_t*)ptr, len, 0xFFFF);return len;
}

相关文章:

  • 如何使用 zRenamer 批量重命名文件后缀详细教程
  • 触摸传感器
  • CISA认证:IT审计的重要资格证书
  • Oracle高级语法篇-分析函数详解
  • 数据存储方式补码原码反码
  • RAGFlow:构建高效检索增强生成流程的技术解析
  • 大数据学习(111)-group by与partition by
  • Java—ConcurrentHashMap
  • JAVA:Web安全防御
  • CSS 记载
  • 客户端本地搭建
  • LeetCode算法题(Go语言实现)_55
  • 蓝桥杯中的知识点
  • 正点原子TFTLCD扩展
  • FreeRTOS-任务的创建删除,挂起与恢复
  • JavaFX深度实践:从零构建高级打地鼠游戏(含多物品与反馈机制)
  • Springboot 集成 RBAC 模型实战指南
  • C++IO流
  • Electron使用WebAssembly实现CRC-32 原理校验
  • 【项目】基于MCP+Tabelstore架构实现知识库答疑系统
  • 神舟十九号载人飞行任务取得圆满成功
  • 匈牙利国会通过退出国际刑事法院的决定
  • 昂立教育:去年减亏1.39亿元,今年以“利润持续增长”为核心目标
  • 三大白电巨头去年净利近900亿元:美的持续领跑,格力营收下滑
  • 葡萄牙、西班牙突发大范围停电,交通和通信服务受到严重影响
  • 特朗普声称中方领导人打了电话,外交部:近期中美元首没有通话