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

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

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

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

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

c 复制代码
//串口重定向函数
//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;
}
相关推荐
禅口魔心10 小时前
边缘网关开发计划(一):在 Rock 5T 上部署 Docker
物联网·docker·rk3588·边缘网关
LingLong_roar12 小时前
STM32 启动流程
stm32·单片机·嵌入式硬件
weixin_5206498712 小时前
短距离硬件通信
单片机·嵌入式硬件
海雅达手持终端PDA12 小时前
行业数字化应用解决方案中,包含哪些IT技术?
物联网·能源·制造·零售·交通物流·政务
ManThink Technology13 小时前
22107-DSOD705 溢油监测 通过EdgeBus 接入ThinkLink
物联网
振南的单片机世界14 小时前
HAL慢、ODR中、BSRR快:GPIO翻转速度的三重境界
单片机·嵌入式硬件
实在太懒于是不想取名14 小时前
STM32N6的开发日记(7):摄像头+NPU联动,完成 YOLO 实时目标检测与显示
stm32·嵌入式硬件·yolo
Joseph Cooper15 小时前
STM32MP157 Linux驱动学习笔记(四):典型总线与设备模型(SPI/USB)
linux·stm32·学习
小柯博客16 小时前
STM32MP2安全启动技术深度解析
c语言·c++·stm32·嵌入式硬件·安全·开源·github
实在太懒于是不想取名16 小时前
STM32N6的开发日记(8):在N6中部署自训练的火焰检测模型
stm32·单片机·嵌入式硬件