打印
[STM32F1]

标准库函数报错

[复制链接]
799|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llljh|  楼主 | 2019-11-21 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么修改

使用特权

评论回复
沙发
zwll| | 2019-11-21 21:08 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
llljh|  楼主 | 2019-11-21 21:10 | 只看该作者
编译显示:
main.c(31): warning:  #188-D: enumerated type mixed with another type
        RCCU_PCLKConfig(RCCU_Div_2);              //PCLK2=24MHz APB2 periph
main.c(32): warning:  #188-D: enumerated type mixed with another type
        RCCU_FCLKConfig(RCCU_Div_2);              //PCLK1=24MHz APB1 periph (fast)
main.c(74): warning:  #188-D: enumerated type mixed with another type
  HDLC_Init_Xmit(HDLC_NRZ);                  //NRZ coding used
main.c(77): warning:  #188-D: enumerated type mixed with another type
  HDLC_Init_Recv(HDLC_PAE | HDLC_R_NRZ);
main.c(95): warning:  #223-D: function "printf" declared implicitly
        printf("rcvbuffer= %s\n\r",HDLC_RECEIVEBUFFER_BASE_LO+1); //print received buffer
main.c(99): warning:  #223-D: function "printf" declared implicitly
        printf("Test 1 Loopback failed\n\r");
main.c: 6 warnings, 0 errors
compiling timers.c...
timers.c(85): warning:  #188-D: enumerated type mixed with another type
    RTC_ITConfig( RTC_AIR | RTC_GIR, ENABLE );
timers.c: 1 warning, 0 errors
assembling STR71x.s...
linking...
Program Size: Code=10404 RO-data=44 RW-data=20 ZI-data=1740  
FromELF: creating hex file...
".\hdlc.axf" - 0 Error(s), 10 Warning(s).

部分报错函数程序如下:

HDLC_Init_Xmit(HDLC_NRZ);                  //NRZ coding used

//Set up Receiver
HDLC_Init_Recv(HDLC_PAE | HDLC_R_NRZ);

使用特权

评论回复
地板
juventus9554| | 2019-11-21 21:13 | 只看该作者
标准库函数怎么定义的

使用特权

评论回复
5
llljh|  楼主 | 2019-11-21 21:16 | 只看该作者

void HDLC_Init_Xmit(HDLC_TCTL_Flags Flags);
void HDLC_Init_Recv(HDLC_RCTL_Flags Flags);

HDLC_NRZ定义为HDLC_TCOD_ENC枚举类型

HDLC_PAE定义为HDLC_RCTL_Flags枚举类型
HDLC_R_NRZ定义为HDLC_RCOD_ENC枚举类型
这些都是标准库函数,,程序也是官方提供的函数没做任何修改

使用特权

评论回复
6
dingy| | 2019-11-21 21:19 | 只看该作者
这是警告,不是错误,应该不影响的

使用特权

评论回复
7
pengf| | 2019-11-21 21:23 | 只看该作者
当然能改更好

使用特权

评论回复
8
supernan| | 2019-11-21 21:28 | 只看该作者
警告可以暂时先不用管的!

使用特权

评论回复
9
yinxiangh| | 2019-11-21 21:31 | 只看该作者
是用哪个编译工具的?

使用特权

评论回复
10
houcs| | 2019-11-21 21:33 | 只看该作者
如果是KEIL,把C++ CODE中的 C99Mode打勾,选中后确定。

使用特权

评论回复
11
llljh|  楼主 | 2019-11-21 21:35 | 只看该作者
试了,没有,并报了两个错误

使用特权

评论回复
12
chenjunt| | 2019-11-21 21:38 | 只看该作者
什么错误,贴上来看看

使用特权

评论回复
13
zhanghqi| | 2019-11-21 21:40 | 只看该作者
warnings可以忽略,Error(s)就不行了

使用特权

评论回复
14
llljh|  楼主 | 2019-11-21 22:31 | 只看该作者

linking...
.\hdlc.axf: Error: L6218E: Undefined symbol RTC_CounterValue (referred from timers.o).
.\hdlc.axf: Error: L6218E: Undefined symbol WDG_CntOnOffConfig (referred from timers.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 2 error messages.

使用特权

评论回复
15
zhanghqi| | 2019-11-21 22:34 | 只看该作者
可以生成目标代码就OK了,警告有时候不是错误,,就是提醒

使用特权

评论回复
16
zyf部长| | 2019-11-21 22:37 | 只看该作者
这两个函数如果已经定义了,就把这两个函数声明一下。这是一个普通错误。

使用特权

评论回复
17
zwll| | 2019-11-21 22:39 | 只看该作者
void HDLC_Init_Xmit(HDLC_TCTL_Flags Flags);
HDLC_Init_Xmit(HDLC_NRZ);                  //NRZ coding used

如果HDLC_NRZ不是HDLC_TCTL_Flags类型,那么就会出现上面的警告.
严格点的编译选择,甚至视这个是个错误.

如果你确定HDLC_NRZ可以传递给HDLC_Init_Xmit()函数,那么你可以这么调用
HDLC_Init_Xmit((HDLC_TCTL_Flags)HDLC_NRZ);

至于枚举类型之间做运算动作, 加减,与或等, 绝对是非法的,^_^.

main.c(95): warning:  #223-D: function "printf" declared implicitly
是因为你在使用printf的时候,没有此函数的原型.
在这之前 #include <stdio.h>即可.

使用特权

评论回复
18
xxmmi| | 2019-11-21 22:41 | 只看该作者
看结果啊,运行正确就可以了。

使用特权

评论回复
19
kangzj| | 2019-11-21 22:44 | 只看该作者
警告不是错误,继续编译完成的。就是提示可能有错,比如数据类型不匹配。

使用特权

评论回复
20
木木guainv| | 2019-12-11 10:26 | 只看该作者
是不是有的头文件没有引用啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

11301

帖子

6

粉丝