移植 STM32 Keil 工程到 IAR遇到的常见问题

Posted WOFY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移植 STM32 Keil 工程到 IAR遇到的常见问题相关的知识,希望对你有一定的参考价值。

常见问题一:Fatal Error[Pe1696]: cannot open source file "core_cm3.h" 

解决方案:

IAR的安装路径下已有CMSIS,不需要添加额外的文件,

如果包含了自己的CMSIS文件就会有冲突而会报很多错
在options->general->library configuration里的CMSIS你看Use CMSIS是不是被勾选了

可以勾选这个选项,不用你的CMSIS文件,这样就解决了


  

常见问题二 :Error[Pe020]: identifier "FILE" is undefined
解决方案:如果工程中是用了串口,需要在IAR的Options -> General Options ->Library Configuration里设置一下函数库,
不然printf函数不对,将Library Configuration 中的Library 设置由"Normal"改为"Full"就可以了。




常见问题三:如果你的IAR工程是从别人那里复制而来,如果编译器版本不一致可能会出现各种问题,

例如Error[Ta097]: Cannot call intrinsic function "__nounwind __DSB" from Thumb mode in this architecture  啥啥的,很多。

解决方案:在打开别人的工程后最后还是要按自己的实际情况设置一下工程选项,

例子中的问题就是因为没有选芯片型号导致的,具体的操作是按自己的实际情况把工程选项都设置好了再编译。

 

 

 

常见问题四:还是IAR版本不同造成的,例如有时可能出现:Warning[25]: Label \'Reset_Handler\' is defined pubweak in a section implicitly declared root 

解决方案:7.1版本之前,section默认是noroot,但现在是root。所以可以将SECTION .text:CODE:REORDER(1)改成SECTION .text:CODE:REORDER:NOROOT(1)或SECTION .text:CODE:REORDER:ROOT(1)。

注意 NOROOT和 ROOT 的区别,NOROOT表示如果符号没有被关联的时候是被优化掉的,如果想不被优化则使用ROOT。

解决办法就是在SECTION .text:CODE:REORDER(1) 这句的REORDER 与(1)之间添加 :NOROOT !!! 注意位置和前面的冒号!!!

 

 

 

 

 

 

以上是关于移植 STM32 Keil 工程到 IAR遇到的常见问题的主要内容,如果未能解决你的问题,请参考以下文章

uc/os iii移植到STM32F4---IAR开发环境

uC/OS-II在STM32F103上的移植

如何用keil5创建stm32的工程

基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)

Keil中的工程移植到IAR中需要做哪些修改?

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