野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13975|回复: 2

关于串口通信实验的几个疑问(Printf重定向问题等),求教

[复制链接]
发表于 2014-12-12 17:46:37 | 显示全部楼层 |阅读模式
做串口通信实验时,在主函数中使用printf()函数将一些字符串通过串口打印到串口助手上,看了例程的两个实验,
有几个问题想不明白,还望各路高手指点!
问题一:
可不可以不使用printf()函数而使用自己编写的fputc()函数来将字符串输出到电脑上?
问题二:
我们没法看到printf()函数的定义,那我们怎么知道应该在fputc()函数中进行重定向?
  1. int fputc(int ch, FILE *f)
  2. {
  3.                 /* ·¢Ëíò»¸ö×Ö½úêy¾Yμ½USART1 */
  4.                 USART_SendData(USART1, (uint8_t) ch);
  5.                
  6.                 /* μè′y·¢Ëííê±Ï */
  7.                 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);               
  8.        
  9.                 return (ch);
  10. }
复制代码


问题三:
我在例程中看见有个fgetc()函数,应该也是重定向的,但是却没有找到例程中在哪地方使用到。
关于使用中断接收的那个实验,在中断函数中只有将接收到的字符串发送到电脑上的功能啊,那接收的那部分是
在哪实现的(我找了好久没找到)?????
  1. void USART1_IRQHandler(void)
  2. {
  3.         uint8_t ch;
  4.        
  5.         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  6.         {        
  7.             //ch = USART1->DR;
  8.                         ch = USART_ReceiveData(USART1);
  9.                   printf( "%c", ch );    //½«½óêüμ½μÄêy¾YÖ±½ó·μ»Ø′òó¡
  10.         }
  11.          
  12. }
复制代码


回复

使用道具 举报

 楼主| 发表于 2014-12-12 19:51:41 | 显示全部楼层
刚刚试了下,好像fgetc()函数真的用不到,就是不用这个也可以完成实验
回复 支持 反对

使用道具 举报

发表于 2015-1-20 16:01:05 | 显示全部楼层
我也碰到了同样的问题,求大神
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 14:32 , Processed in 0.046127 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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