关于STC8H芯片 想要重定向printf函数问题
关于STC8H芯片 想要重定向printf函数问题User\main.c(5): error C141: syntax error near '*', expected ')'
如上图,但我想重定义fputc函数时,c51编译器会报错,C51编译器并不支持C标准库中所有的函数和特性,比如对FILE类型的支持就有限,这可能是我遇到问题的原因
这个该如何解决呢。
还有一个问题:
我看的《STC32位8051单片机原理及C语言程序设计视频教程》
里面有c语言printf函数这一章,但是里面的实现原理好像没有讲
原理应该也是重定向,但是源代码是不是被封装到库里了。
第一个问题已经解决了!! 第一步:
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);
}
} 如果想使用USB CDC库进行printf输出的话,在“usb.h”头文件里开启以下定义即可:
#define PRINTF_HID //printf输出直接重定向到USB HID接口 第一步 文件头文件引用#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;
} 乘风飞扬 发表于 2023-8-2 18:25
如果想使用USB CDC库进行printf输出的话,在“usb.h”头文件里开启以下定义即可:
#define PRINTF_HID ...
感谢大佬的解惑,我难为在printf里面好长时间了,偶然看到大佬额解惑,豁然开朗
页:
[1]