移植 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 !!! 注意位置和前面的冒号!!!

 
 

原文地址:https://www.cnblogs.com/humain/p/9007314.html

时间: 2024-10-15 04:37:43

移植 STM32 Keil 工程到 IAR遇到的常见问题的相关文章

在IAR(EWARM)中移植STM32固件库

一.移植环境说明 (1).win10系统 (2).IAR(EWARM)7.7 (3).STM32标准固件库3.5.0 http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32054.html 二.移植步骤 (1).首先建立一个C语言的main工

STM32 KEIL不能输入仿真引脚端口error 65: access violation at 0x40021000 : no 'read' permission

使用MDK自己创建一个STM32F103ZE核的项目 加入源码后编译,正常,在线仿真单步执行出现如下问题 error 65: access violation at 0x40021000 : no 'read' permission 发现是Debug里面的设置有问题 http://www.cnblogs.com/xiaobo-Linux/ 主要是下面2项设置 Dialog DLL默认是DCM3.DLL Parameter默认是-pCM3 应改为 Dialog DLL默认是DARMSTM.DLL

ffplay播放器移植VC的工程:ffplay for MFC

本文介绍一个自己做的FFPLAY移植到VC下的开源工程:ffplayfor MFC.本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下.并且使用MFC做了一套简单的界面.它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出.此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等:以及一些简单的视频码流分析功能:视频解码分析和音频解码分析.通过本程序可以学习视频播放器原理,以及SDL和Windows

GitHub使用整理——关于上传Keil工程一些注意的点

git上传警告warning: LF will be replaced by CRLF 在上传keil工程时,会遇到warning: LF will be replaced by CRLF警告: warning: LF will be replaced by CRLF in <file-name>. The file will have its original line endings in your working directory. 同时下面这句话很重要,即“在工作区里,这个文件会保持

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

IAR和keil两个开发平台都是arm开发当中比较流行的平台,keil4的版本之间,可以兼容,但是版本4和版本5还是不兼容的,但是IAR的兼容性更加差,好像6.30.x之间是能够兼容的吧,没有实测过,以下是网上摘录的,根据其一步步,笔者实际测试成功,只是有一点小小的不一样需要更改. ================================================== 第一步 建立工程 首先建立一个工程,命名选择路径保存 文件名可以随便取第二步加载文件在工程路径下新建三个文件夹,分

ucosii 移植STM32笔记

今天接触了ucosii在STM32上面的移植,就碰到的几个问题进行总结: 1.工程输出文件出现错误,原因是没有添加相应设备芯片的启动文件: 2.出现undefined symbol ...  refered from ...,原因是OS_CPU_A.ASM这个文件没有添加: 3.启动函数(如下),主要用于系统启动之后进行调用的,也叫启动任务: static void startup_task(void *p_arg) { systick_init(); /* Initialize the Sys

STM32 Keil C++编写单片机程序

C++ 属于面向对象的编程语言,OOP的思想不必多说,特别对于复杂的软件工程来说,利用OOP绝对是事半功倍,相对于传统的C来说: 当然用C来写单片机程序无可厚非,已经延续了一个传统,从大学时学的开始到工作岗位,好多人都是一直用C来做,但是既然Keil支持C++编译, 可以用C++来编写你的代码,可以利用高级语言来结构化,清晰化你的程序,为嘛不用呢!哈哈,个人看法!下面进入正题: C++ 兼容C,所以STM32的库都是可以被C++使用的,既然这样,那就简单了!在建立好新的STM32工程时候,那就可

STM32建立工程库函数方法

(1)打开keilMDK主界面可以看到工程中有一个默认的工程,点击这个工程名字,然后选择菜单Project->Close Project,就关闭掉这个工程了!这样整个 MDK 就是一个空的了,接下来我们将建立我们的工程模版. (2)在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为 STM32CODE (3)点击 Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建

KEIL项目迁移IAR向导(中文)

项目迁移向导 从Keil µVision® forARM平台转为 IAR Embedded Workbench® for ARM平台 本文使用的项目例程所采用的IDE版本如下: 项目迁移概述 从现有的Keil µVision项目的进行迁移需要收集关于当前的项目信息,并使用这些信息创建新的IAR Embedded Workbench项目.此外,还需要对实际源代码进行一些修改.本指南介绍一种简化了这一过程的方法. 注:IAREmbedded Workbench的基本介绍以及IDE项目管理和ARM项目