为什么而且也没有指出f指针的指向程序中用printf输出的语句如下

// Printf 调用函数
int fputc(int ch, FILE *f)
{
return(Usart1_Txd(ch)); // 发送并返回数据
}
程序中既没有声明,也没看出怎么调用的但去掉就不行

printf("Period: %u ", TIM2->CCR2); // 输出周期,清除CC2IF
if(TIM2->SR & 2) // CC1IF=1
printf("Width: %u\r\n", TIM2->CCR1); // 输出宽度,清除CC1IF

泛舟湖上清波郎朗
浏览 104回答 2
2回答

繁星点点滴滴

这个fputc是你平台特定的实现,不是标准实现,参数f的存在只是为了兼容其他的实现而已。你这个平台实现是调用一个串口输出函数(Usart1_Txd)直接输出字符到硬件。有的平台是经过文件系统的,FILE* f就要发挥作用了。

翻过高山走不出你

1 平台a实现可能是这样的 int fputc(int ch, FILE *f) {     fprintf(f, "%c", ch); } 2 平台b实现可能是这样的 int fputc(int ch, FILE *f) {     write(stdout,  &ch, 1);  }  3 还有些平台可能就是像你这样的  所以,为了兼容所有实现,参数肯定得保留,你最多不用。
打开App,查看更多内容
随时随地看视频慕课网APP