你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 keil软件介绍--工程目标选项配置(上)

[复制链接]
STMCU小助手 发布时间:2022-6-19 21:00
Ⅰ、写在前面

Options for Target目标选项其完全意思是工程目标选项配置,或许有些人分不清工作空间、工程、目标这三个名词的意思和区别,下面章节将简述工作空间、工程、目标他们的意思。

8 M0 ~" _: h+ w  e7 L; ^5 j5 h

由于目标配置的选项比较多,我将其分为工程目标选项配置(Ⅰ)和工程目标选项配置(Ⅱ)两篇文章来讲述。


9 o5 X2 B  o6 T9 x* A

目标选项包含了一个工程目标所有的配置信息,这些信息是保存在工程文件中的,也就是我们每次双击打开工程的文件(.uvprojx)和对应的(.uvoptx)文件。看过我(打包)代码的人应该知道,我的工程文件就保留了这两个文件,其它生成的文件我全部删除了的。

1 R% ], @) L' a7 V! a
Ⅱ、本文要点

本文主要讲述的是目标选项的配置,但为了让更多人明白什么是目标选项,首先将简述工作空间、工程、目标的意思和区别。


$ O3 X( V0 Y8 z5 O1.打开目标选项的两种方法

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

9 F. g3 C0 f1 r4 ]* M

/ P: n* k* q+ e% T 20161110112424438.png
% r3 R1 R5 O2 R# W1 [2 A8 }
) D; I8 |" s) n. N, R& R

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

3 G. I! b2 L- V; G7 n; |: Z7 C

20161110112435558.png


" _4 I  e! y( Y0 L3 `1 M' q5 R/ x2 L2.本文所讲述的目标选项
0 |+ l$ S" o2 V0 L3 o
20161110112442730.png 8 R% w: _; u6 j, _8 x5 A

由于目标选项里面内容较多,本文只讲述前五项,后五项在下一篇文章讲述。本文旨在让大部分人明白目标选项的配置,为了使文章内容精简,过于简单和不常用过于复杂的只简述。

; q; o3 A# \6 I% |! b
Ⅲ、简述工作空间、工程、目标

本章节内容与主题关系不大,若你掌握了,可以绕过。主要为了使更多的人明白这几个词的意思。本节内容这种复杂的结构,对于初学者基本使用不上,但可以适当了解。当以后项目做大了,可能会使用到工作空间。

, M! r% E+ ~( q9 K$ B

工作空间、工程、目标它们三个是从大到小,依次包含的关系,也就是说:一个工作空间可以有多个工程,一个工程可以有多个目标。工作空间下的工程可以是完全独立的,工程下的目标基本上都有共同之处(比如:共用某些代码),它们工程项目统一管理。简单示意图,如下:

9 I/ M9 [/ P+ H* r/ |6 `

20161110112502486.png

5 D3 _3 Z6 @; e5 c$ [6 l( G2 d

举个例子:一个项目,由主机和从机组成,但项目为了区分产品的高低端,将产品做成简单和复杂两个版本(简单版只保留复杂版的部分功能)。举例示意如下图:


* O+ z7 _) ?0 ^

20161110112510220.png

' V7 h( R# t6 O

本节内容不过多描述,在大型的实际项目中容易看见,一般不是很大项目,基本就是一个工程,一个目标或多个目标。初学者一般都是一个工程对应一个目标,这样简单明了。若是初学者,不能理解可以略过。


- a% L: T' C; D: NⅣ、工程目标选项配置(Ⅰ)

本节讲述工程目标前五项的配置,这里面有些内容在我们新建工程时都已经使用过,下面将详细讲述每一个选项配置的内容。

4 u2 ]3 `. Y' a: S
1.Device设备(器件)

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

( ^0 I% y  E) f2 e! ^+ @  n' m9 @

20161110112550423.png

+ l. W+ {. F0 C' U
2.Target目标

里说的目标和上面说的工程目标不一样,是工程目标的目标。从内容可以看得出来是工程目标的调试晶振频率、选择的编译器、RAM和ROM分配的地址空间等。


8 S; _- X/ r% V- p, @' c% M

20161110112609111.png


+ l5 {- a5 M: @3 F1 G" v

第1处:晶振频率。

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


* c# t5 c2 |( w2 D: y4 x" P

第2处:操作系统。

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


! K6 j( }2 G  q) R  Q" p

第3处:系统预览文件。

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


+ P- m/ P- R4 i" p

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

. u! t2 I% F) \- ]

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

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


/ }# S6 S+ X' \( h6 A4 {$ }) K

第6处:ROM存储地址。

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

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

: X; D0 f3 k8 L& M7 i% P2 `

第7处:RAM存储地址。

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


5 [& o" h3 T3 Z3.Output输出

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

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

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


3 o/ |9 w# j. `  N4 Q; ?+ {6 Z

20161110112626455.png


: F4 Y: o  P+ X! o

第1处:输出路径。

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


+ c) K0 i' G& ^1 u" b$ r( A- i& }

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

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


0 P6 E5 u( c- p# \

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

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

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

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

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

$ p% Y" s- w: t6 `1 x% J$ N$ f

第4处:输出库。

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

+ w7 \( R* r5 s
4.Listing列表

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


) r( C+ H, Y( i: u+ ]" q4 s5 M

20161110112650736.png


/ ]; J  P# C  O4 A

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

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


" N  }0 m9 Z6 ~% V. @8 M6 T- v7 C5 U

第2处:输出汇编列表。

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

第3处:C编译列表。

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

4 f8 \9 O3 d1 R  S; G% I# T

第4处:链接列表。

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


: a+ A* }: c& C) k( y2 `0 h5.User用户选项

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

* \3 R# B+ M8 w

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

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

, B3 d9 a* q- r7 E. y

20161110112715143.png


" |$ Z1 R5 ]' |0 ~

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


+ i3 G; Y* N$ J' h% y4 Q1 [

( r" I0 u7 J( e6 x4 q( Y  i' c

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


+ k$ U/ j% t3 l+ x

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

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

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

Start Debugging:启动调试程序。


7 s4 M  A# p) T! \/ e
4 J6 H& J$ Q+ k
收藏 评论0 发布时间:2022-6-19 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版