使用Clion开发STM32串口调试遇到问题之重定向printf不显示(已解决问题)

为什么要使用重定向printf

C语言中经常使用printf来输出调试信息,打印到屏幕。由于在单片机中没有屏幕,但是我们可以重定向printf,把数据打印到串口,从而在电脑端接收调试信息。这是除了debug外,另外一个非常有效的调试手段

但是由于使用编译的c语言不是官方定义的哪个版本

直接跳转解决方案:解决问题的方法

开发环境

  • Clion 24年版本
  • 使用STM32cubeMX进行项目初始化
  • HAL官方库
  • arm-none-eab

问题

使用Clion进行串口调试的时候发现 已经进行fputc的重写还是没有向串口控制台返回数据

经过查资料发现都是配置keil的教程 但是还是找到了稚晖君的文章找到了原因 具体不赘述可以看稚晖君的文章他使用的是标准库 我这边使用的是hal库 hal库里面syscalls.c重写了稚晖君文章里的函数

使用KEIL设置是需要勾选USE MicroLIB

但是Clion并没有这个功能所以我们需要手动配置

解决问题的方法

cpp 复制代码
#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, HAL_MAX_DELAY);
    return ch;
}

直接粘贴到hal库的usart.c文件的里面

接着回到main方法里

cpp 复制代码
 HAL_Delay(1000);
      printf("你好!!\n");
      printf("%.2f\n",1.52);

还是这几句代码 接着编译烧录

问题解决

相关推荐
水饺编程9 小时前
第5章,[Win32 章节] :Polygon 函数和多边形填充模式
c语言·c++·windows·visual studio
wuminyu9 小时前
Java FFM处理网络读写事件源码剖析
java·linux·c语言·jvm·c++
Messy create10 小时前
【储能系统三大核心】
网络·stm32·单片机·算法·能源
一木 之林10 小时前
C/C++ 面向对象编程(OOP)(进阶)
java·c语言·c++
Nomarsgo10 小时前
生产车间产线巡检解决方案:基于联控 Lionconit PTC-1006 工业手持平板电脑打造移动化、数字化车间巡检终端
单片机·嵌入式硬件·电脑
IT实战课堂之秋老师10 小时前
基于IOT技术的太阳能板表面清洁程度检测系统设计
单片机
智购科技无人售货机厂家10 小时前
2026自动售货机出货口防夹手设计:从红外检测到电机反转的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信
2601_9667990410 小时前
酷嗨米J300:多平台同步直播的硬件级解法,一台相机三路输出不卡顿
嵌入式硬件
CHENKONG_CK11 小时前
晨控CK-FR08系列与欧姆龙NX系列PLC配置MODBUSTCP例程使用手册
网络·单片机·嵌入式硬件
XiHongShi201611 小时前
51基础学习视频分享(2),三极管,点亮LED灯
单片机·学习