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;
}
相关推荐
Zw-awa17 小时前
MPU6050:从原始加速度到姿态变化
stm32
少司府18 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
Zwawa21 小时前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
c语言·单片机·嵌入式
简单电磁炮21 小时前
FWD八位单片机调试问题
单片机·嵌入式硬件
wx1qq1com1 天前
一桩带几台车:共享租赁桩位配比、取电与结算闭环设计
物联网·微信小程序·小程序
菥蓂寻生1 天前
STM32移植到GD32中以105为例
stm32·单片机·嵌入式硬件
Zw-awa2 天前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
stm32
byte轻骑兵2 天前
实战 4:BlueZ 源码中添加自定义设备过滤规则
linux·物联网·bluez·电脑蓝牙·嵌入式蓝牙
橘为己有4412 天前
51单片机:定时/计数器
单片机·51单片机
杯子不吃紫菜2 天前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
单片机·嵌入式硬件·设计模式