OpenEdv-开源电子网

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

不使用microlib,重定向printf后,FILE __stdout 这行报错

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-5-12
在线时间
5 小时
发表于 2016-5-12 18:51:18 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 tan143 于 2016-5-13 11:39 编辑

请教高手:
      我用的MDK5.14,库函数版本3.5,Mini板,STM32F103RCT6;
      自己新建的工程,用原子哥的参考代码 SYSTEM 里面的usart.c,
//加入以下代码,支持printf函数,而不需要选择use MicroLIB         
#if 1
#pragma import(__use_no_semihosting)            
//标准库需要的支持函数                 
struct __FILE
{
        int handle;


};


//FILE __stdout;      
//定义_sys_exit()以避免使用半主机模式   
_sys_exit(int x)
{
        x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
    USART1->DR = (u8) ch;      
        return ch;
}
#endif
在不勾选 use microlib后,进行编译,会弹出如下错误:
linking...
.\OBJ\HostDriver.axf: Error: L6200E: Symbol __stdout multiply defined (by stdio_streams.o and usart.o).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 1 error messages.
".\OBJ\HostDriver.axf" - 1 Error(s), 0 Warning(s).


如果我注释掉 FILE __stdout 这一行则会报出其他的错误:
linking...
.\OBJ\HostDriver.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _sys_open was referenced
.\OBJ\HostDriver.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced
Finished: 0 information, 0 warning and 2 error messages.
".\OBJ\HostDriver.axf" - 2 Error(s), 0 Warning(s).


奇怪的是,如果直接用原子哥的模板工程则不会报错。
刚才我又试过直接用原子哥的模板,然后将自己的APP程序文件夹添加工程目录下,再编译,发现会弹出同样的错误。

然后我再删除掉我自己的APP目录又好了,我怀疑是不是我的APP程序里面有用到什么不该用的函数?
还是说我的APP文件夹放的位置不对?(我是将APP文件夹、SYSTEM文件夹、CORE、USER在一个目录下的)
再次补充::

            我发现问题出在哪了,但是不知道怎么解决:情况如下:
            在我的APP文件夹里面有一个文件 cybtldr_parse.c,这个文件是解析其他文件流的函数,其中有一个定义:static FILE* dataFile;应该是这一个定义和其他的定义冲突了;
            这个问题能解决吗?还是说这两者不能同时存在?

最佳答案

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

原因就是我最后发现的那个,有一个解析文件的地方,定义了:static FILE* dataFile,这样就出现冲突了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-5-12
在线时间
5 小时
 楼主| 发表于 2016-5-12 18:51:19 | 显示全部楼层
正点原子 发表于 2016-5-13 20:42
上传你的工程,我看看。

原因就是我最后发现的那个,有一个解析文件的地方,定义了:static FILE* dataFile,这样就出现冲突了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-5-13 20:42:56 | 显示全部楼层
上传你的工程,我看看。
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2016-7-16
在线时间
30 小时
发表于 2016-7-29 23:37:23 | 显示全部楼层
我现在也是报同样的 错误  楼主解决了嘛  能教下我嘛?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 19:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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