野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15005|回复: 4

新手提问,求教~

[复制链接]
发表于 2015-3-26 22:13:34 | 显示全部楼层 |阅读模式
火哥,在STM32-MINI 开发板  串口通信的例程中,程序中是用  int fputc(int ch, FILE *f)  重定向 printf 函数的方式向PC打印数据,那为什么不能直接用 int fputc 函数呢?   fputc 和 printf 什么关系呢?
int fputc(int ch, FILE *f)
{
                /* 发送一个字节数据到USART1 */
                USART_SendData(USART1, (uint8_t) ch);
               
                /* 等待发送完毕 */
                while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);               
       
                return (ch);
}




int fputc 程序的功能不就是通过串口发送数据吗? 在主程序中直接用 fputc 函数不行吗?



回复

使用道具 举报

发表于 2015-3-27 08:58:34 | 显示全部楼层
printf是标准库函数,,其函数中有引用到fputc这个函数,当然还有其他功能程序使printf功能更加强大
回复 支持 反对

使用道具 举报

发表于 2015-3-27 08:59:55 | 显示全部楼层
printf调用fputc。
printf是组织输出的内容,格式为printf("%s%d%c...),"asd",12,'z'),使用printf函数可以轻松组合各种输出,把各种类型数据统统转换成字符串形式输出。
printf组织好内容后会调用fputc,fputc重定义通过串口发送数据(其实fputc也可以重定义成用其他通信接口发送数据)。
printf和fputc是上下层关系。
如果你想用串口直接输出数据,根本不用fputc,直接USART_SendData就是了。只不过你得自己组织数据格式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-27 17:23:01 | 显示全部楼层
亽亼 发表于 2015-3-27 08:58
printf是标准库函数,,其函数中有引用到fputc这个函数,当然还有其他功能程序使printf功能更加强大

好的,感谢指教~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-27 17:23:38 | 显示全部楼层
yinhao 发表于 2015-3-27 08:59
printf调用fputc。
printf是组织输出的内容,格式为printf("%s%d%c...),"asd",12,'z'),使用printf函数可 ...

恩,懂了,感谢回答!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-28 08:28 , Processed in 0.036012 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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