0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fputc重定义为printf

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-18 20:30 次阅读

描述

C 库函数 int fputc(int char, FILE *stream)参数 char 指定的字符(无符号 char)写入指定的流,并推进流的位置指示器。

声明

下面是 fputc() 函数的声明。

int fputc(int char, FILE *stream)

参数

char − 这是要写的字符。这将作为其 int 升级传递。

stream − 这是指向 FILE 对象的指针,该对象标识要写入字符的流。

返回值

如果没有错误,则返回已写入的同一字符。如果发生错误,则返回 EOF 并设置错误指示器。

下面的示例演示 fputc() 函数的用法。

#include 

int main () {
   FILE *fp;
   int ch;
   fp = fopen("file.txt", "w+");
   for( ch = 33 ; ch <= 100; ch++ ) {
      fputc(ch, fp);
   }
   fclose(fp);
   return(0);
}

下面将重定义为printf函数

///重定向c库函数printf到串口,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
		/* 发送一个字节数据到串口 */
		USART_SendData(USART3, (uint8_t) ch);
		
		/* 等待发送完毕 */
		while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);		
	
		return (ch);
}
 
///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
		/* 等待串口输入数据 */
		while (USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET);
 
		return (int)USART_ReceiveData(USART3);
}
pYYBAGKtxKuANlFDAAJNElE9sWE213.png

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288303
  • printf函数
    +关注

    关注

    0

    文章

    30

    浏览量

    5826
收藏 人收藏

    评论

    相关推荐

    用IAR测试stm8s003的printf,无法打印小数点是怎么回事?

    如题,无法输出小数点,IAR还要怎么设置?? double y=0; y=34.56; printf(\"rn Printf_Number1 = %0.1f rn\", y
    发表于 04-07 06:01

    STM32的疑难杂症之一:Printf的使用

    一、Printf简介Printf是一个标准的C库API,用来打印信息显示的。Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putcha
    的头像 发表于 04-02 08:09 187次阅读
    STM32的疑难杂症之一:<b class='flag-5'>Printf</b>的使用

    求助,关于STM32CUBEIDE1.5.0使用Printf函数的疑问

    基于eclipse的,就把工程弄到STM32CUBEIDE中,但怎么都不OK 自己从新从STM32CUBEMX到STM32CUBEIDE建工程,发现可以烧录进去,LED跑起来了,但是printf函数怎么都不行! 网上
    发表于 03-22 06:47

    TLE9854 printf函数无法输出是怎么回事?

    ttywrch(int ch) { stdout_putchar(ch); } 我把sint32 stdout_putchar(sint32 Char)注释,改为 int fputc(int ch, FILE *f),printf可以用,这是怎么回事,是哪里我没配置吗
    发表于 02-02 16:05

    解决printf无法打印输出的问题

    FreeRTOS中直接使用newlib库是有问题的,相信使用过freertos进行printf都能发现这个问题,这个问题网上有两种方法:1、使用printf.stdarg.c,问题在于,这个库没有
    的头像 发表于 01-04 08:00 734次阅读
    解决<b class='flag-5'>printf</b>无法打印输出的问题

    AWorksLP应用笔记:重定向printf函数

    printf函数作为标准库定义的格式化输出方式,本文将介绍其在AWorksLP下默认适配以及重映射至热拔插设备端口的实现。默认适配AWorksLP中默认已经对printf函数完成相关适配工作,且默认
    的头像 发表于 11-25 08:24 249次阅读
    AWorksLP应用笔记:重定向<b class='flag-5'>printf</b>函数

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的头像 发表于 10-27 09:27 438次阅读
    AT32 MCU <b class='flag-5'>Printf</b>的功能使用方法

    如何实现Printf()接口重定向到UART

    ;。所谓的重定向,就是重新定义Printf()接口函数里调用的与输出设备相关的函数,eg:使用Printf()接口将MCU中的信息,通过串口或者Ethernet输出到终端上位机。
    的头像 发表于 10-01 10:13 634次阅读
    如何实现<b class='flag-5'>Printf</b>()接口重定向到UART

    stm32怎么用printf函数?

    使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中定义函数 如下
    发表于 07-31 10:16

    keil5.14在debug模式下Debug(printf)Viewer窗口无串口输出,要怎么配置?

    用的是NuTiny-SDK-Nano130开发板,示例代码中,printf最终输出的数据函数fputc是通过UART0输出的,我外接串口到PC后,能在PC上的串口终端看到printf的输出信息,但是Debug(
    发表于 06-28 07:49

    NDA102EC1中更改UUART1作为调试串口打印输出调试信息未能成功的原因?

    printf()函数和fputc()函数的定义位置。 最终发现printf()函数在stdio.h头文件中定义,属于标准C的
    发表于 06-27 07:11

    请问N76E003如何添加使用printf?

    N76E003 第一次使用,编译完例程,想试试printf,不能用,不知道该如何定义
    发表于 06-25 07:01

    【瑞萨RA MCU创意氛围赛】2. KEIL下串口重定向printf和scanf

    和scanf都是通过命令行窗口来执行的,单片机上如何做呢? 其实对于不同的IDE,具体做法是不一样的,本文以KEIL例,讲述如何将串口打印和接收功能重定向到printf和scanf。 1. 串口硬件连接 如下
    发表于 05-26 13:41

    如何使用带有DEBUG_UART的printf/DEBUTOUT() 而不是SemiHosting?

    () 宏,一切都会正确编译。如果我尝试使用 DEBUGOUT() 宏或 printf() 我会收到以下错误: 这些符号在哪里定义的?board_api.h 将 DEBUGOUT() 宏重新定义
    发表于 05-18 10:52

    printf调试的技巧

    printf调试是嵌入式调试的基本手段,而且是非常重要的手段,我认为相比单步调试更加有用有效
    的头像 发表于 05-10 09:31 533次阅读
    <b class='flag-5'>printf</b>调试的技巧