这是IAR的Dmp程序,我移到keil后出现这么多错误,解决不了,在iar是可以编译成功的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是IAR的Dmp程序,我移到keil后出现这么多错误,解决不了,在iar是可以编译成功的相关的知识,希望对你有一定的参考价值。

这是很正常的啦。keil能够识别你的芯片,能够找到你的main函数是因为有启动文件。而启动文件是跟着编译器走的。51单片机就是startup那个汇编文件。iar我没用过,不过肯定也有这类似的文件。arm我手上的启动文件叫startup_stm32f429_439xx.s。。你看arm对于不同型号启动文件都是不一样的。

启动文件包含了堆栈地址,堆栈大小,中断向量表,复位函数,寻找main函数句柄,默认系统函数弱定义(弱定义就是你不定义它用他自己的,你有定义他就用你的,不算重复定义)等等。

不同的编译器对于数据类型可能都有不一样,所以程序移植可不是复制黏贴那么简单的事哦~追答

我看你还说有些定义找不到对吧。这很可能又是编译器的问题。举个例子,在keil的options for target中,target标签找到use micro lib复选框。microlib是keil编译器的c库备选库。如果你的keil程序用到这个库中的函数,移植到iar就是要粗错的。反之亦然。所以你一定要读懂你的iar中的dmp程序才行。

参考技术A 注意下头文件的包含或定义追问

错误大多数是,expected a ;

explicit type is missing

追答

就是头文件里面有些定义找不到,或是有些头文件没找到

一般不能这么直接转的,你得把所有文件都找出来

追问

这是官方的程序,所有文件都在工程里了

追答

起码工程文件会不一样吧,iar的是eww文件,keil不是这个吧

STM32的keil移植到IAR的问题。

Fatal Error[Pe1696]: cannot open source file "stdint.h" C:\Users\Administrator\Desktop\新建文件夹\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 90
东西在KEIL编译成功、在IAR里就显示这个问题。而且文件夹里也没stdint.h,看样子像是KEIL自己生成的、、、、求高手解释

这个多半是CMSIS出的问题
IAR的安装路径下是有CMSIS的

可能和你找的源文件的CMSIS版本不一样,就是有冲突
在options->general->library configuration里的CMSIS你看Use CMSIS是不是被勾选了

可以勾选这个选项,不用你的CMSIS文件
还有stdint.h是定义数据类型的文件,是标准化的文件,非KEIL生成。
参考技术A 把这个头文件复制到新工程里,并设置好包含路径。追问

问题也在这里、我文件里并没有这个、H文件、我也不知道是不是KEIL自己产生的

追答

KEIL编译完成以后,在源文件左侧会出现一个小+,点击展开,找到这个头文件,并打开。
在顶部会有一排你已打开的文件列表,找到这个头文件,右键可以打开文件所在的路径。然后复制

参考技术B 关注这个问题

以上是关于这是IAR的Dmp程序,我移到keil后出现这么多错误,解决不了,在iar是可以编译成功的的主要内容,如果未能解决你的问题,请参考以下文章

keil编译没有显示未定义,但是iar显示

STM32的keil移植到IAR的问题。

IAR工程可以引用keil编译的函数库文件吗?如何引用?

Keil MDK 和 IAR 两款ARM开发工具哪个比较好

keil里面data怎么会变大?

如何将keil(MDK)的文件方便的转为IAR