KEIL工程目标选项配置

发布者:正在搬砖的河马71最新更新时间:2018-12-14 来源: eefocus关键字:KEIL  工程目标  选项配置 手机看文章 扫描二维码
随时随地手机看文章

打开目标选项的两种方法


1.点击目标选项快捷按钮,如下图:



2.从菜单中打开,Project -> Options for Target,如下图:



1.Device设备(器件)


新建工程第一个就是选择设备(器件)。强调一点就是:器件可以通过输入查找,也可以通过列表查找。



2.Target目标



第1处:晶振频率。


这个值主要用于仿真调试用,一般我们使用硬件调试可以不用管这个值。


第2处:操作系统。


很好理解,是否选择Keil自带的RTX操作系统,一般我们都不选。


第3处:系统预览文件。


这里我们一般是默认使用系统自带,不选择自己定义的。


第4处:生成代码所选择的编译器。


第5处:使用交叉模块优化、使用微库。


交叉模块一般我们不使用,微库这个功能常用与printf函数。


第6处:ROM存储地址。


这里的ROM存储指的是程序储存的地址,分片外和片内两种。


程序存储在片内好理解(初学者一般下载程序都是下载到片内FLASH),片外存储程序对于初学者来说比较少见,一般都是项目做大了,或有特殊要求时,片内不够使用了才将程序存储在片外。常见使用片外的例子“外部NorFlash存储程序代码”就会用到片外的存储地址。


第7处:RAM存储地址。


RAM存储地址和ROM道理一样,可以分片内和片外。常见例子“外部SRAM作为运行内存”。


3.Output输出


从选项名“Output”可以知道该选项里面内容的主要意思,就是输出一系列相关的内容。输出分两类:


1.输出(创建)可执行文件,我们下载到处理器里面的程序就是该类;


2.输出库,对于初学者来说一般不使用库,但对于很多从事特殊行业技术开发的公司来说,可能比较常用该功能。



第1处:输出路径。


输出路径就是在工程编译的过程中,输出这些文件保存的文件夹。Keil V5一般默认是保存在Objects文件夹下面,我建立工程一般也使用这个默认的路径。【其内容可以全部删除,最好配置在单独一个文件夹下面,代码备份时方便删除】


第2处:输出可执行文件名。


输出的可执行文件和库的名称就是在这里定义。比如我们常见输出Hex文件,其名称就是这里定义的。


第3处:输出可执行文件(重点)。


这里和输出库是二选一,选择了输出可执行文件就不能选择输出库。重要一点:输出这些信息都很费时间,如果都不勾选这些选项,编译速度会很快。


Debug Infomation:输出调试信息。勾选上这个选项,我们才可以进行调试。


Create HEX File:输出可执行Hex文件,很多初学的朋友问:“在哪里设置生成Hex?”,这里勾选上就行了。


Browse Information:输出浏览信息。勾选上这个我们才能使用go to definition of这个功能。很多人问:“为什么我不能跟踪代码了”,原因就在这里。


第4处:输出库。


拓展一点:这里输出(生成)的是静态库,并非动态库。初学者可以不用去理解。


4.Listing列表


这个选项是关于生成列表相关的选项,对代码分析比较透彻的工程师就需要了解这个选项。常见的就是map地址的分布,就是在这里配置生成的



第1处:输出路径、宽高。


选择列表文件输出的文件夹。可设置文件页面的宽度,长宽。


第2处:输出汇编列表。


勾选上会输出汇编列表信息(产生后缀为 .lst的文件)。如果工程中没汇编文件,则不会输出信息。


第3处:C编译列表。


C编译程序列表选项,勾选上可生成.txt, .i文件。


第4处:链接列表。


可选择生成或禁止生成.map文件。可设置生成代码的详细信息。可选择性的选取输出MAP文件。


5.User用户选项


这个选项是针对用户而设计的,一般不常用,方便用户执行一些程序。比如:编译完代码之后,我要将生成的Hex文件拷贝到其它地方。


纵观下图可以看见,第1、2、3处作用相同,都是让用户运行程序,只是运行的条件不同而已。上面说的用户程序,勾选上,可以“DOS16模式”运行。



第1处:编辑之前运行用户程序。


第2处:编译之前运行用户程序。


第3处:编译之后运行用户程序。


第4处:编译之后执行条件。


Run "After Build" conditionally:执行条件;


Beep When Complete:编译完成发出声音;


Start Debugging:启动调试程序。


6、C/C++选项


C/C++选项最为重要,因此部分功能需要重点强调。看选项标题“C/C++”,针对的主要就是C/C++,和后一个选项“Asm”有类似之处。



第1处:预处理(Preprocessor Symbols)

这里主要就是预定义功能,相当于在程序中的#define xxxx。我上面预定义STM32F10X_HD,在stm32f10x.h文件中就不用定义了。


第2处:语言代码生成(Language / Code Generation)


Language/code Generation语言代码生成,可以理解成编译、链接到最后生成代码。这部分功能对于代码优化比较重要,初学者可以不用过多理解,对代码大小、运行速度等性能要求较高的人就需要深入理解 


Execute only Code:只生成执行代码;


【设置编译器命令行:--execute_only】


只生成执行代码防止编译器生成任何数据访问代码部分。


Optimize:优化选择项,有Level0 - Level3四个选项。


【设置编译器命令行:-Onum】


初学者、在线调试建议使用Level0,也就是不优化,这样执行的效果才和代码一样。如果配置成Level3,在线调试可能有些地方优化而不能打断点。


Optimize for Time:优化时间,即优化代码中费时的地方。


【设置编译器命令行:-Otime】 --split_sections


比如有些算法,本身代码量就比较大,运行需要很长时间(假如需要2秒),这个时候勾选上该功能,会发现运行时间有比较明显的减少(或许不到1秒时间)。


Split Load and Store Multiple:加载和存储多个分裂。


【设置编译器命令行:--split_ldm】


非对齐数据采用多次访问方式。当 LMD/STM 指令有 4 个以上产生时,列分裂LMD 和 STM 指令,以减不中断延迟。


One ELF Section per Function:优化每一个函数 ELF 段(建议都勾选上)。


【设置编译器命令行:--split_sections】


每个函数都会产生一个 ELF 段,勾选上,允许优化每一个 ELF 段。这个选项可以减少潜在的共享地址、数据和函数之间的字符串。


直白的意思:可以减少代码量ROM的大小(内存RAM不会减小)。


举一个例子,勾选之前和勾选之后,编译后存储大小对比:


勾选之前:


Program Size: Code=2540 RO-data=336 RW-data=40 ZI-data=1024


勾选之后:


Program Size: Code=908 RO-data=320 RW-data=40 ZI-data=1024


Strict ANSI C:标准(严格)的ANSC。


【设置编译器命令行:--strict】


也就是说:编译时严格按照标准的ANSI C进行检查。


Enum Container always int:枚举总是int型


【设置编译器命令行:--enum_is_int】


很容易理解,我们枚举时成员变量类型为int型。


Plain Char is Signed:纯字符标记为字符。


【设置编译器命令行:--signed_chars】


代码举例:char a[] = “abcd”; 也就是说将“abcd”标记为字符型。


Read-Only Position Independent:为常量生成独立的代码空间。


【设置编译器命令行:--apcs=/ropi】


比如:我们定义字库变量为常量,勾选该选项,会将这些字库变量放在独立的代码空间。

 

Read-Write Position Independent:为可读写代码生成独立的代码空间。


【设置编译器命令行:--apcs=/rwpi】


Warnings:警告


【No Warnings设置编译器命令行:-W】


No Warnings:不会有警告提示和输出;


All Warnings:所有警告提示和输出。


Thumb Mode:Thumb模式。


指定设置文件或文件夹(组)为Thumb模式。


【注意:在工程中该模式为默认,也就是不能选择】

 

No Auto Includes:不自动添加头文件(一般不勾选)。


不勾选该选项,编译器就会在Keil安装路径寻找你工程中.h文件。


举例:我们定义uint8_t是定义在stdint.h文件里面的,但是我们工程目录下一般是没有stdint.h文件。这时候,编译器就会在Keil路径下去寻找stdint.h文件。


C99 Mode:C99标准模式。


【设置编译器命令行:--c99】


C语言有标准有多个版本,如C89、C90、C99等。


第3处:包含路径(Include Paths)


包含路径是使用Keil(及类似)软件必须掌握的一项。包含路径就是指定我们工程中使用文件所在的位置,让编译器找到相应的文件。是初学者、高级软件工程师都必须掌握的一项。



第4处:多功能控件(Misc Controls)


指定没有单独的对话框控件。例如:错误消息用日本语言来显示消息。【不常用】


第5处:编译器控制字符串(Compiler control string)


这里是针对编译器执行的命名,显示当前在编译器命令行指令。


在上面“第2处:语言代码生成”中有一个中括号【设置编译器命令行:】


里面的命名就显示在这里。


7、Asm选项


从这个选项的排版和结构可以知道,和前面一个选项“C/C++”类似,只是这里针对的是Asm。因此,这一章节只简述,不会重点强调,可以参看上一章节进行对比,第3、4、5处和C/C++选项一样,这里不讲述。



第1处:有条件的装配控制符号(Conditional Assembly Control Symbols)


指定汇编条件,这里类似上一章节C/C++选项中的预处理。


第2处:语言代码生成(Language / Code Generation)


和上一章节类似。


Read-Only Position Independent:为常量生成独立的代码空间。


Read-Write Position Independent:为可读写代码生成独立的代码空间。


Thumb Mode:Thumb模式。


Split Load and Store Multiple:加载和存储多个分裂。


Execute only Code:只生成执行代码;


No Auto Includes:不自动添加头文件(一般不勾选)。


8、Linker选项


这个选项Linker链接,也就是是链接器配置选项。可以修改、编辑和查看链接的文件。第1、2处是重点,第3、4处和C/C++选项一样,这里不讲述。



第1处:使用分散文件加载对话框Target页面(Use Memory Layout from Target Dialog)


Make RW Sections Position Independent:使RW段独立。


【设置编译器命令行:--rwpi】


启用时:变量区域(包含RW和ZI)具有独立地址。


禁用时:变量区域(包含RW和ZI)位于绝对的内存地址。


 Make RO Sections Position Independent:使RO段独立。


【设置编译器命令行:--ropi】


启用时:常量和代码区域(RO)具有独立地址。


禁用时:常量和代码区域(RO)位于绝对的内存地址。


 Don't Search Standard Libraries:不搜索标准库。


【设置编译器命令行:--noscanlib】


禁用默认编译器运行时库的扫描。


 Report 'might fail' Conditions as Errors:报告'might fail'条件认为是错误。


【设置编译器命令行:--strict】


报告的条件可能导致失败的错误,而不是警告。


 X/O Base:X/O基地址。


【设置编译器命令行:--xo_base=address】


R/O Base:R/O基地址。


【设置编译器命令行:--ro_base=address】


R/W Base:R/W基地址。


【设置编译器命令行:--rw_base=address】


disable Warnings:警用警告。


【设置编译器命令行:--diag_suppress】


第2处:分散文件(Scatter File)


这里可以加载、查看和编辑分散文件。点击后面就的三点“...”可以加载文件;点击“Edit...”查看和编辑对应的文件。



9、Debug选项


这个选项比较重要,主要用于(软件仿真、硬件在线)调试使用。由于软件仿真和硬件在线调试配置界面基本一致,而现在我们基本都是硬件在线调试。因此,只选择硬件在线调试界面进行讲述。



第1处:选择硬件在线调试


下载调试器的选择不用多说,主要说一下后面“Setting”。很多人常用J-Link下载调试器,而调试STM32时,可以使用四线SWD模式。如果使用J-Link进行SWD调试。这个时候就需要在“Setting”里面选择“SW”模式,如下如:



第2处:选择硬件在线调试


Load Application at Startup:启动时加载应用程序。


Run to main():程序执行到main()函数。


进入调试模式时,程序自动运行到main函数处。


Initialization File:加载、编辑初始化文件。


这里在某些情况下可以使用,比如:在RAM中调试代码。可以参看我的文章:STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)。


第3处:复位调试会话设置(Restore Debug Session Settings)


这里复位设置就是恢复设置的意思,如果勾选上,点击一下“复位”就会恢复到之前的状态。包括:断点Breakpoints、窗口Watch Windows、性能分析器 Performance Analyzer、内存窗口Memory Window、工具箱Toolbox、系统查阅器System Viewer等。


第4处:DLL文件(最好默认)


这里的配置属于Keil自身的配置,最好不要修改。


CPU/Driver DLL - Parameter:CPU驱动文件和参数。


Dialog DLL - Parameter:会话框DLL文件和参数。


第5处:管理组件描述文件


Manage Component Viewer Description Files


这里一般不用去管理。


10、Utilities选项


本章节内容公共选项,内容比较简单。



第1处:配置FLASH菜单命名(Configure Flash Menu Command)


这里是二选一选项,一般我们使用上面的“Update Target Driver for Flash Programming”。


Use Debug Driver:使用调试驱动。


Update Target Before Debugging:调试之前更新目标。


一般都勾选上,因为我们下载程序之前检测到代码修改了,就会重新编译程序(也就是更新目标)


Setting:设置。


很多人下载程序之后,需要复位一下程序才运行,原因在于没有勾选“Reset and Run”,如下图:



第2处:配置图像文件的处理(Configure Image File Processing)


这个选项我们不常用,感兴趣的朋友可以自行了解一下。


关键字:KEIL  工程目标  选项配置 引用地址:KEIL工程目标选项配置

上一篇:STM32L431之MDK-ARM单步调试错乱
下一篇:Stm32f1 Keil5调试时候peripherals不显示的解决方法

推荐阅读最新更新时间:2024-03-16 16:20

Keil C51中函数指针的使用
  函数指针在C语言中应用较为灵活。在单片机系统中,嵌入式操作系统、文件系统和网络协议栈等一些较为复杂的应用都大量地使用了函数指针。Keil公司推出的C51编译器是事实上80C51 C编程的工业标准,它针对8051系列CPU硬件在标准ANSI C的基础上进行了扩展;但由于编译器及8051体系结构的限制,造成了在使用函数指针时有很多与ANSI C不同的地方。下面举例说明在不同的情形下函数指针的使用。以下代码均在Keil μVision3、v8.08 C51、默认优化等级的开发环境下验证通过。   1、指向固定地址的指针   在程序设计中,常需要跳转到某一特定的地址上执行,如引导程序的设计。可通过如下C语言实现: int mai
[单片机]
<font color='red'>Keil</font> C51中函数指针的使用
keil MDK编译器警告和错误详解
工作后从单片机转成ARM,刚开始用ADS1.2编译器,用了一段时间,因为我接手的项目的老程序正是用ADS编译的,部门也大都在用.在学单片机的时候用的是keil c51编译器,ads和这个编译器在易用性上真是无法比较.后来渐渐知道keil已经被arm公司收购,现在keil MDK成为了arm官方编译器,所以决定重新投奔keil,利用平时的时间,将原程序重新用mdk编译.mdk的优点就没必要说了,在这里把平时遇到的编译器给出的警告和错误信息给出详解,希望给初学者一点帮助,发现错误,需要补充的欢迎留言. 1.warning: #550-D: variable “d” was set but never used 描述:变量’d’定义
[单片机]
使用Keil MDK运行第一个STM32程序
1.1.1 使用Keil MDK运行第一个STM32F10X程序 在上一小节中已经详细介绍了使用Keil MDK和标准外设库创建一个工程的过程,下面将介绍基于这个工程来编写一个小程序,通过这个程序我们可以初步了解: STM32标准外设库的简单使用过程 STM32外设的使用方法和大致流程 程序的编译、链接、下载步骤 利用Keil MDK的在线仿真功能进行软件仿真的简要步骤 1. 程序的编写 (1)程序实现的功能 为了方便各位读者的入门和理解,这个小程序的功能非常简单,作为本书功能实践的第一个程序,其功能当然也是最为经典的“Hello World!”了,只不过不是简单的屏幕输出,而是利用硬件的串口进行输出,同时作为单片机类
[单片机]
使用<font color='red'>Keil</font> MDK运行第一个STM32程序
【C51自学笔记】闪烁灯+流水灯(四种方法) + 74HC573芯片+keil4软件仿真(debug)
AT89S52: P0:不含上拉电阻,需要外接 P1,P2,P3:内部含上拉电阻 左下方是个晶振 51单片机的复位是高电平复位(默认是高电平输出)-如何复位:赋予高电平脉冲 复位的接入方法 如何复位详解:RST含高电平脉冲 复位键断开:RST是低电平(接地) 复位键闭合:闭合回路上,RST获得高电平,计算V(rst) = 4.7 v 为高电平 搭建最小系统: 接入晶振 接入RST 接入上拉电阻并为上拉电阻提供VCC EA接入VCC(代表使用片内存储器) 接入0(代表使用片外存储器) 解释573芯片: OE上加-:低电平有效,高电平无效。 Z:高组态,既不是高,也不是低。接什么平是什么平,相当
[单片机]
【C51自学笔记】闪烁灯+流水灯(四种方法) + 74HC573芯片+<font color='red'>keil</font>4软件仿真(debug)
Keil C51中变量的使用
引言 8051内核单片机是一种通用单片机,在国内占有较大的市场份额。在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功。由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同。正确地使用变量,有利于获得高效的目标代码。下面详细介绍Keil C51中变量的使用方法。 1 CPU存储结构与变量的关系 变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同。 标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CPU内部有寄存器,外部有存储器,寄存器的访问速度大大高于存储器的访问速度。在标准C中,不加特别定义的变量是放在存储器中的,使用register可以
[工业控制]
<font color='red'>Keil</font> C51中变量的使用
keil5新建STM32工程总结--库函数版本
最近在重新系统学习嵌入式软件编程,先复习以前学过的STM32,今后会发一些自己的学习心得跟大家分享,欢迎大家一起讨论,一起来找茬 1、文件构成:库函数版本工程一共有四个文件夹:CORE、OBJ、STM32F10x_FWLib和USER ① USER用于存放工程文件(最好在新建工程之前创建): 在Kelil5中点击: project - New μVision Project后选择 USER文件夹作为工程文件路径 里面包含两个文件夹:Listings 和 Objects,以及两个文件.uvprojx和uvoptx Listings 和 Objects文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件;.uvpro
[单片机]
keil 中调用printf 的使用 在软件调试下 serial windows 下显示打印信息
1.软件编程内容 printf 要包含C的头文件#include stdio.h 标准的输入输出; printf 在调用的时候要先重写(不知道是不是重写)putchar 函数,在单片机中用下面的函数, char putchar(char s) { SBUF=s; while(TI==0) { _nop_(); } TI=0; } 在stm32 中用要写fputc 函数 int fputc(int ch, FILE *f) { while((USART1- SR&0X40)==0);//循环发送,直到发送完毕 USART1- DR = (u8) ch; r
[单片机]
<font color='red'>keil</font> 中调用printf 的使用 在软件调试下 serial windows 下显示打印信息
Keil(MDK-ARM)系列教程(六)_Configuration(Ⅱ)
Ⅰ、写在前面 本文接着上一篇文章“Configuration(Ⅰ)”进行讲述Configuration后面三项Shortcut Keys快捷键、Text Completion代码完形、Other其他的内容。 Shortcut Keys快捷键:Keil软件里面所有快捷键都可以在Configuration配置中查看的到,也可以自定义快捷键。 Text Completion代码完形:包含代码自动完成、代码模板、语法错误检测等。 Other其他:这个选项不常用,包含UVSOCK (TCP/IP)设置、打开软件设置等。 阅读本文之前建议先阅读上一篇文章: Keil(MDK-ARM)系列教程(五)_Configuratio
[单片机]
<font color='red'>Keil</font>(MDK-ARM)系列教程(六)_Configuration(Ⅱ)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved