OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6000|回复: 11

求助串口实验中fputc(int ch, FILE *f)的理解

[复制链接]

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
发表于 2016-11-7 22:52:27 | 显示全部楼层 |阅读模式
1金钱
目前我想将32内部AD获取到的电压值传输给串口,再通过蓝牙发送出去,但是我通过观察USART.c的时候遇到一个问题,如何将AD的数字量给到串口中。
参照历程我不理解以下程序
请给位大神指教!
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
        USART1->DR = (u8) ch;      
        return ch;
}

最佳答案

查看完整内容[请看2#楼]

这个fputc是C的标准函数库里面的东西,这里是重新实现了一下。然后就可以用Printf函数来串口打印了。 printf("ADC value=%f \r\n",adc_get());
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2016-11-7 22:52:28 | 显示全部楼层
这个fputc是C的标准函数库里面的东西,这里是重新实现了一下。然后就可以用Printf函数来串口打印了。
printf("ADC value=%f \r\n",adc_get());
活到老,学到老。
回复

使用道具 举报

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2016-10-14
在线时间
10 小时
发表于 2016-11-7 23:05:40 | 显示全部楼层
计算出每一位的数字,将它对应的字符发出去就是了
回复

使用道具 举报

10

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1479
金钱
1479
注册时间
2016-1-25
在线时间
260 小时
发表于 2016-11-8 08:47:56 | 显示全部楼层
这是串口通信里面的重定向输出,这个函数实现的功能是printf("....");字符串输出。所以你想用字符串输出的形式直接输出ad量的话。你只要看你出理后的ad量是个什么值。用相对应的输出格式就好了。
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2016-11-8 09:18:24 | 显示全部楼层
sodermalm 发表于 2016-11-8 08:47
这是串口通信里面的重定向输出,这个函数实现的功能是printf("....");字符串输出。所以你想用字符串输出的 ...

这个函数我有看过含义,我定义的AD的输出量为一个浮点型的float temp  应该如何对应格式修改呢?这里我存在问题 还请大神指教,多谢!
回复

使用道具 举报

7

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-10-26
在线时间
58 小时
发表于 2016-11-8 09:28:36 | 显示全部楼层
HR GoGo 发表于 2016-11-8 09:18
这个函数我有看过含义,我定义的AD的输出量为一个浮点型的float temp  应该如何对应格式修改呢?这里我存 ...

你不用调用这个函数,你调用printf函数输出就可以了,在printf函数里设置格式控制符,printf自己会调用fputc输出。
回复

使用道具 举报

7

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-10-26
在线时间
58 小时
发表于 2016-11-8 09:30:40 | 显示全部楼层
HR GoGo 发表于 2016-11-8 09:18
这个函数我有看过含义,我定义的AD的输出量为一个浮点型的float temp  应该如何对应格式修改呢?这里我存 ...

不用修改格式,printf如何输出浮点型用%f,还不懂就去百度printf函数看看吧
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2016-11-8 09:56:37 | 显示全部楼层
邵少少 发表于 2016-11-8 09:28
你不用调用这个函数,你调用printf函数输出就可以了,在printf函数里设置格式控制符,printf自己会调用fp ...

谢谢,明白了
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2016-11-8 09:56:47 | 显示全部楼层
邵少少 发表于 2016-11-8 09:30
不用修改格式,printf如何输出浮点型用%f,还不懂就去百度printf函数看看吧

多谢多谢
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2016-11-8 09:56:58 | 显示全部楼层
kingnike 发表于 2016-11-8 09:40
这个fputc是C的标准函数库里面的东西,这里是重新实现了一下。然后就可以用Printf函数来串口打印了。
prin ...

谢谢你
回复

使用道具 举报

55

主题

151

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2018-3-12
在线时间
53 小时
发表于 2018-10-9 17:00:46 | 显示全部楼层
kingnike 发表于 2016-11-7 22:52
这个fputc是C的标准函数库里面的东西,这里是重新实现了一下。然后就可以用Printf函数来串口打印了。
prin ...

“然后就可以用Printf函数来串口打印了”printf是输出到哪里?
C语言里的printf是显示到屏幕上来,stm32的printf的是输出到哪里呢?
是不是不显示输出就不需要使用printf函数呢?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-9-1
在线时间
4 小时
发表于 2019-12-18 10:39:19 | 显示全部楼层
你好,那这个printf()函数就是串口的发送函数吗?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-21 17:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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