3.串口printf调试输出

在stm32中先配置使能一个uart串口,保存自动生成uart的.h .c 文件

接着在头文件中包含stdio.h

再在c文件中添加重定向:

  GCC和keil等不同编译器调用printf时候是不同的

  可以定义一个宏保证他们的兼容性,即使printf函数重定向

 

1
2
3
4
5
6
7
8
9
10
11
12
#ifdef __GNUC__    //选择gcc编译时才会定义的宏
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f)    //单片机字符也是int类型保存
#endif
 
 
PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);
    return ch;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  

串口浮点数输出:

  由于单片机硬件资源限制(内存小),STM32单片机里C语言标准库的printf()并不支持浮点数的输出

  可以在Properties Settings中添加 -u _printf_float解决

 

posted @   面筋玄师  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示