OpenEdv-开源电子网

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

原子的例程编译报错

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-6-6
在线时间
6 小时
发表于 2016-6-6 14:28:04 | 显示全部楼层 |阅读模式
5金钱
我用的是探索者的开发板,由于前一段时间一直在用K60,很长时间没用原子的库了,最近在调用原子的库的时候,uart.c里总是有个函数出现警告,警告也就没什么,关键是编译的时候说这有错误。开始以为是库的问题,又重新下了个最新的库,调用的时候还是有问题,以为自己调用出了问题。后来直接打开库直接编译,例如跑马灯等,但所有工程的uart.c里都报错了,还是老样子。

出问题的函数位于uart.c的47行,函数如下:
//定义_sys_exit()以避免使用半主机模式   
_sys_exit(int x)                                 
{                                                     
        x = x;                                      
}                                                   


编译结果如下:
*** Using Compiler 'V5.06 update 2 (build 183)', folder: 'e:\Keil_v5\ARM\ARMCC\Bin'
Build target 'LED'                                                                                          
compiling usart.c...                                                                                       
..\SYSTEM\usart\usart.c(47): error:  #260-D: explicit type is missing ("int" assumed)
  _sys_exit(int x)                                                                                          
..\SYSTEM\usart\usart.c: 0 warnings, 1 error                                                     
"..\OBJ\LED.axf" - 1 Error(s), 0 Warning(s).                                                      
Target not created.                                                                                      
Build Time Elapsed:  00:00:04                                                                        


最后附上全屏截图。。。

所有情况都在截图里了。。。
求大神解答,这是怎么回事,该怎么解决。
2.jpg

最佳答案

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

这个错误应该是说这个函数缺少类型,你试试在函数名前面加个类型,比如void,再编译看看。 我还不懂这个函数的作用,而且奇怪的是,我的keil编译这些程序是没有问题的,连警告都没有,只是在程序里跟你一样有个警告的标志。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2016-3-20
在线时间
22 小时
发表于 2016-6-6 14:28:05 | 显示全部楼层
这个错误应该是说这个函数缺少类型,你试试在函数名前面加个类型,比如void,再编译看看。
我还不懂这个函数的作用,而且奇怪的是,我的keil编译这些程序是没有问题的,连警告都没有,只是在程序里跟你一样有个警告的标志。
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-6-6
在线时间
6 小时
 楼主| 发表于 2016-6-6 22:54:55 | 显示全部楼层
xiakemoon 发表于 2016-6-6 17:07
这个错误应该是说这个函数缺少类型,你试试在函数名前面加个类型,比如void,再编译看看。
我还不懂这个函 ...

那个函数是什么并不重要,重要的是编译语句的翻译是:显式类型丢失(“int”假设)。并不是函数类型的问题,一看就知道这是个特殊的函数,不需要类型。
问题的原因我已经找到了,我用的不是原子提供的STM32F4 的器件支持包,而是从Keil官网下载的最新的STM32F4 的器件支持包,原本以为新版的会兼容旧版,可目前来看并不是这么回事。
原子提供的是1.0.8版本的,而我从官网下载的是2.90版本的,估计uart里的那个函数本来就写的有问题,所以才显示警告吧,更新了器件包后就报错了。
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-6-6
在线时间
6 小时
 楼主| 发表于 2016-6-6 22:56:06 | 显示全部楼层
xiakemoon 发表于 2016-6-6 17:07
这个错误应该是说这个函数缺少类型,你试试在函数名前面加个类型,比如void,再编译看看。
我还不懂这个函 ...

虽然你回答的对我没什么帮助,但总之谢谢你了
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2016-3-20
在线时间
22 小时
发表于 2016-6-7 23:58:17 | 显示全部楼层
q836549027 发表于 2016-6-6 22:56
虽然你回答的对我没什么帮助,但总之谢谢你了

学习了,以后有机会多交流
回复

使用道具 举报

7

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2016-6-30
在线时间
49 小时
发表于 2016-7-6 23:21:13 | 显示全部楼层
唉,我也是搞了一个晚上,这个真的要强调一下,必须强调
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2016-7-18
在线时间
2 小时
发表于 2016-7-18 10:42:30 | 显示全部楼层
原来是这样
回复

使用道具 举报

3

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
414
金钱
414
注册时间
2014-11-22
在线时间
92 小时
发表于 2016-7-18 11:50:55 | 显示全部楼层
应该是编译器选择了C99了吧,前面加void类型就可以了
尽自己的能力,把事情做到最好
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-1-17
在线时间
18 小时
发表于 2016-9-7 17:11:31 | 显示全部楼层
q836549027 发表于 2016-6-6 22:54
那个函数是什么并不重要,重要的是编译语句的翻译是:显式类型丢失(“int”假设)。并不是函数类型的问 ...

怎么没给出解决的办法啊?

我的情况和你的一致,按照你的思路,我继续解决。  就是删除2.90的器件支持包,已给后来者参考。
点击工具栏的pack installer,进入后在右列中找到Device Specific选项,将KEIL::STM32F4xx_DFP2.90版本remove。

之后点击正点原子MDK5软件安装包里的STM32F4xx_DFP1.0.8。之后错误就应该解决了。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-10-9
在线时间
2 小时
发表于 2016-10-9 15:05:20 | 显示全部楼层
正解正解
回复

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2016-6-6
在线时间
22 小时
发表于 2017-4-17 16:02:08 | 显示全部楼层
我也遇到了,那加个void就没问题了,但原子的例程都是这样
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-6-6
在线时间
6 小时
 楼主| 发表于 2017-4-24 16:42:33 | 显示全部楼层
1612103064 发表于 2016-9-7 17:11
怎么没给出解决的办法啊?

我的情况和你的一致,按照你的思路,我继续解决。  就是删除2.90的器件支持 ...

我当时一激动就忘了写解决方案了,谢谢你的补充,兄弟。
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-7-16
在线时间
0 小时
发表于 2017-7-16 16:52:20 | 显示全部楼层
1612103064 发表于 2016-9-7 17:11
怎么没给出解决的办法啊?

我的情况和你的一致,按照你的思路,我继续解决。  就是删除2.90的器件支持 ...

但是我把器件包改成1.0.8的还是不行
QQ图片20170716164842.png
QQ截图20170716165205.png
回复

使用道具 举报

9

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2019-1-3
在线时间
34 小时
发表于 2019-2-26 20:29:50 | 显示全部楼层
1612103064 发表于 2016-9-7 17:11
怎么没给出解决的办法啊?

我的情况和你的一致,按照你的思路,我继续解决。  就是删除2.90的器件支持 ...

学习了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 23:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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