OpenEdv-开源电子网

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

各位大神们,最近使用printf函数有一些问题!在主题上说不清,请看正文!

[复制链接]

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
发表于 2014-3-3 22:10:19 | 显示全部楼层 |阅读模式
我现在想使用这两个函数

1  int fputc(int ch, FILE *f)// 发送数据
{
  /* Place your implementation of fputc here */  
/*             实现             fputc函数 */  
  /* e.g. 写一个字符到USART */
  USART_SendData(USART2, (uint8_t) ch);

  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
  {

}
  return ch;
}



2   PUTCHAR_PROTOTYPE
{
  
  sFONT *cFont = LCD_GetFont();
  uint32_t idx;
  
  if(LCD_Lock == DISABLE)
  {
    if((LCD_ScrollActive == ENABLE)||(LCD_ScrollActive == ENABLE))
    {
      LCD_CacheBuffer_yptr_bottom = LCD_CacheBuffer_yptr_bottom_bak;
      LCD_CacheBuffer_yptr_top    = LCD_CacheBuffer_yptr_top_bak;
      LCD_ScrollActive = DISABLE;
      LCD_Scrolled = DISABLE;
      LCD_ScrollBackStep = 0;
      
    }
    
    if(( LCD_CacheBuffer_xptr < LCD_PIXEL_WIDTH /cFont->Width ) &&  ( ch != '\n'))
    {
      LCD_CacheBuffer[LCD_CacheBuffer_yptr_bottom].line[LCD_CacheBuffer_xptr++] = (uint16_t)ch;
    }   
    else 
    {
      if(LCD_CacheBuffer_yptr_top >= LCD_CacheBuffer_yptr_bottom)
      {
        
        if(LCD_CacheBuffer_yptr_invert == DISABLE)
        {
          LCD_CacheBuffer_yptr_top++;
          
          if(LCD_CacheBuffer_yptr_top == LCD_CACHE_DEPTH)
          {
            LCD_CacheBuffer_yptr_top = 0;  
          }
        }
        else
        {
          LCD_CacheBuffer_yptr_invert= DISABLE;
        }
      }
      
      for(idx = LCD_CacheBuffer_xptr ; idx < LCD_PIXEL_WIDTH /cFont->Width; idx++)
      {
        LCD_CacheBuffer[LCD_CacheBuffer_yptr_bottom].line[LCD_CacheBuffer_xptr++] = ' ';
      }   
      LCD_CacheBuffer[LCD_CacheBuffer_yptr_bottom].color = LCD_LineColor;  
      
      LCD_CacheBuffer_xptr = 0;
      
      LCD_LOG_UpdateDisplay (); 
      
      LCD_CacheBuffer_yptr_bottom ++; 
      
      if (LCD_CacheBuffer_yptr_bottom == LCD_CACHE_DEPTH) 
      {
        LCD_CacheBuffer_yptr_bottom = 0;
        LCD_CacheBuffer_yptr_top = 1;    
        LCD_CacheBuffer_yptr_invert = ENABLE;
      }
      
      if( ch != '\n')
      {
        LCD_CacheBuffer[LCD_CacheBuffer_yptr_bottom].line[LCD_CacheBuffer_xptr++] = (uint16_t)ch;
      }
      
    }
  }
  return ch;
}

错误是.\STM324xG-EVAL\STM324xG-EVAL_HS.axf: Error: L6200E: Symbol fputc multiply defined (by lcd_log.o and main.o).

我看了一下stdio.h,发现这种定义的格式是不允许改变的,但是我想两个函数都使用,怎么办呢???


求大神!!!










正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-3-3 22:13:33 | 显示全部楼层
重复定义当然不可取   一个人叫张三  又赋名叫李四。。。
学无止境
回复 支持 反对

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
 楼主| 发表于 2014-3-3 22:20:37 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
那我想两个函数都用,怎么做呢?
回复 支持 反对

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-3-3 22:22:44 | 显示全部楼层
回复【3楼】雪雪:

回复【2楼】jermy_z:
---------------------------------
那我想两个函数都用,怎么做呢?

---------------------------------
。。。。你见过相同的函数名函数吗?反正我没见过
学无止境
回复 支持 反对

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
 楼主| 发表于 2014-3-3 22:29:07 | 显示全部楼层
回复【4楼】jermy_z:
---------------------------------
所以我想问问你啊,怎么改一下就可以了?
回复 支持 反对

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
 楼主| 发表于 2014-3-3 23:19:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-3-4 09:10:05 | 显示全部楼层
回复【5楼】雪雪:
---------------------------------

看提示 你的 fputc 是在 头文件里面定义的?

放到 .c文件下, 然后在头文件 声明
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-1-12
在线时间
0 小时
发表于 2015-3-13 18:18:46 | 显示全部楼层
你好 那你这个问题怎么解决的呢? 你是在用USB么?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 20:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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