找回密码
 立即注册
查看: 1366|回复: 5

关于STC8H芯片 想要重定向printf函数问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-01-27 13:25:26

14

主题

18

回帖

175

积分

注册会员

积分
175
发表于 2023-8-2 11:53:20 | 显示全部楼层 |阅读模式
关于STC8H芯片 想要重定向printf函数问题



关于STC8H芯片 想要重定向printf函数问题-1.png


关于STC8H芯片 想要重定向printf函数问题-2.png

User\main.c(5): error C141: syntax error near '*', expected ')'


如上图,但我想重定义fputc函数时,c51编译器会报错,C51编译器并不支持C标准库中所有的函数和特性,比如对FILE类型的支持就有限,这可能是我遇到问题的原因
这个该如何解决呢。


还有一个问题:
我看的《STC32位8051单片机原理及C语言程序设计视频教程》


里面有c语言printf函数这一章,但是里面的实现原理好像没有讲
原理应该也是重定向,但是源代码是不是被封装到库里了。
关于STC8H芯片 想要重定向printf函数问题-3.png




回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-01-27 13:25:26

14

主题

18

回帖

175

积分

注册会员

积分
175
发表于 2023-8-2 13:45:50 | 显示全部楼层
第一个问题已经解决了!!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-01-27 13:25:26

14

主题

18

回帖

175

积分

注册会员

积分
175
发表于 2023-8-2 13:49:02 | 显示全部楼层
第一步:
int putchar(int dat) {
    UART1_WriteBuffer(dat);
    while(!TI);
    UART1_ClearTxInterrupt();
    return dat;
}


第二:
#include<stdio.h>

void main()
{
   
    SYS_SetClock();
    // UART1, baud 115200, baud source Timer1, 1T mode, no interrupt
    UART1_Config8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200);
   
   


    while(1)
    {
       printf("fantastic");
       SYS_Delay(1000);
    }

}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-8-2 18:25:08 | 显示全部楼层
如果想使用USB CDC库进行printf输出的话,在“usb.h”头文件里开启以下定义即可:
#define PRINTF_HID            //printf输出直接重定向到USB HID接口
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:372
  • 最近打卡:2025-05-01 10:53:48

12

主题

125

回帖

1685

积分

金牌会员

积分
1685
发表于 2023-8-4 20:21:03 | 显示全部楼层
第一步      文件头文件引用  #include<stdio.h>
第二步      添加以下2个函数    重构发送函数 UartPutc    putchar   就可以了  会优先使用重构函数
void UartPutc(u8 dat)   
{
    SBUF = dat;
    TX1_Busy = 1;
    while(TX1_Busy);
}

char putchar(char c)
{
    UartPutc(c);
    return c;
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-05-02 07:51:43

3

主题

125

回帖

1270

积分

金牌会员

积分
1270
发表于 2023-10-4 14:31:01 | 显示全部楼层
乘风*** 发表于 2023-8-2 18:25
如果想使用USB CDC库进行printf输出的话,在“usb.h”头文件里开启以下定义即可:
#define PRINTF_HID      ...

感谢大佬的解惑,我难为在printf里面好长时间了,偶然看到大佬额解惑,豁然开朗
You can you up!~No can no BB!~
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 21:04 , Processed in 0.160792 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表