使用Keil5:识别项目文件

Keil(MDK-ARM)项目文件结构通常包含多个关键文件和文件夹,这些文件和文件夹协同工作来实现项目的编译、链接和调试。

一、初始项目文件物理结构

Keil 项目创建成功后,项目物理文件结构如下图所示:

Keil 项目有两个核心文件,文件扩展名为.uvprojx和.uvoptx,这两个文件一个是项目的主文件,一个是项目的用户配置文件。

.uvprojx是Keil 项目的主文件(XML 格式),包含项目配置信息(如目标芯片型号、编译器版本、文件列表、编译选项等),是项目的入口文件,双击可直接打开项目。

.uvoptx是项目的用户配置文件,存储用户界面相关设置(如窗口布局、断点信息、调试状态等),与.uvprojx配合使用,确保每次打开项目时恢复用户习惯的环境。

Objects目录存放编译生成的目标文件(.o)和中间文件(.d,依赖文件,记录源文件与头文件的关联)。默认也存放最终生成的可执行文件,包括:.hex:Intel Hex 格式文件,用于烧录到芯片。

Listings目录存放列表文件(.lst),包含汇编代码、符号表等调试信息,用于分析编译过程。

DebugConfig目录主要用于存储调试相关的配置文件,该目录由Keil MDK开发环境自动生成,包含以.dbgconf为扩展名的调试配置文件,这些文件记录了包括调试器类型(如ST-Link、J-Link)、接口协议(SWD或JTAG)、用户设置的代码断点、目标芯片型号以及Flash下载算法配置在内的多种调试参数。

二、初始项目文件逻辑结构

前面说的是项目文件的物理结构,我们再来看项目文件的逻辑结构。下图是项目文件的逻辑结构:

Project窗口以树结构方式来展示项目文件的逻辑结构,树的根节点是项目文件名称,子节点是Target1,Target1是新建工程时自动创建的默认编译目标名称(可以编辑修改名称),它代表一组特定的编译和调试配置集合,用于管理针对特定单片机型号的项目设置。

通过右键点击Target1,可以修改目标名称、添加或删除文件分组。每个Target对应不同的硬件配置,例如当项目需要适配同一系列但存储容量不同的单片机型号时,可以创建多个Target来管理各自的编译参数。

Target1节点下的Source Group1(可编辑修改名称)是默认创建的源文件分组,属于逻辑容器,用于组织和管理代码文件(如.c、.asm等),通过分组将不同功能模块的源文件归类,例如将驱动代码、应用逻辑等分到不同分组,提升项目结构的清晰度和可维护性。‌

分组本身不包含实际文件,需用户手动添加。另外,每个分组可独立设置编译选项(如优化级别、警告等级)和包含路径(Include Paths),便于针对不同模块进行差异化配置。‌

右键点击Source Group1可选择“Add Files to Group”添加文件,或通过“Options for Group”来配置编译参数。‌

三、划分项目物理目录

下面以基于STM32单片机点亮LED项目为例,具体说明如何划分项目物理目录。

在项目根目录下,新建四个目录,目录名称分别为USER、FWLib、CMSYS、Output。项目文件物理结构如下图所示:

USER目录主要用来存放用户编写的应用程序代码,例如main.c、中断服务程序文件(如stm32f10x_it.c)以及工程配置文件。

FWLib目录主要用来存放STM32库里面的inc和src这两个文件夹,这两个文件夹包含了芯片上的所有驱动,这两个文件夹下面的文件我们不需要修改。

CMSIS目录用来存放CMSIS层文件,包括启动文件。

Output目录用来存放软件编译后输出的文件。

、源文件与头文件

通常按功能或模块分类存放,常见文件夹结构:

Src/:存放 C/C++ 源文件(.c/.cpp),如主程序(main.c)、外设驱动(gpio.c)、算法模块等。

Inc/:存放头文件(.h),与Src中的源文件对应,包含函数声明、宏定义、结构体定义等,需在项目中配置头文件路径(Options for Target → C/C++ → Include Paths)。

ASM/(可选):存放汇编源文件(.s),如启动文件(startup_stm32f103xe.s,不同芯片启动文件不同)。

五、划分项目逻辑分组

回到工程,选中Target右键选中Add Group选项新建4个组,分别命名为STARTCODE、USER、FWLib、CMSYS,见下图:

FWLib组用来存放库外设驱动文件。

USER组用来存放用户编写的应用程序代码。

STARTCODE组用来存放芯片启动文件。

CMSIS组用来存放CMSIS层文件。

至此,一个完整的项目文件结构已经创建完成。后续工作就是根据项目规模大小,或创建子目录,或直接复制文件到相关目录,并将文件添加到相关分组。

发表评论

滚动至顶部
0

Subtotal