当前位置: 首页 > news >正文

Keil ”品“(Manage Project Items)功能介绍

一、Project Items 界面

Manage Project Items是 Keil µVision 中用于系统化管理项目结构、文件、工具路径、文档及项目信息的核心功能窗口。它通过Project Items、Folders/Extensions、Books、Project Info/Layer四个标签页,全方位控制项目组织与编译环境。

区域1:Project Targets

概述:

在嵌入式开发中,我们经常会遇到这样的场景:同一套代码,需要为不同硬件版本、调试 / 发布模式,或者不同配置进行编译。如果每次都新建工程,会造成大量代码冗余和维护困难。Project Targets 正是为了解决这个问题而生的功能

  • 它允许在同一个工程中创建多套独立的编译配置方案,而无需复制多份代码。
  • 所有 Target共用同一份源代码文件,修改一处,所有 Target 都会同步更新,保证了代码的一致性。
  • 每个 Target 都拥有一套独立的编译环境(也就是 Keil 里的 “魔术棒” 配置),可以单独设置:
    • 目标芯片型号
    • 编译优化等级
    • 预编译宏定义
    • 内存布局(Flash/RAM 地址)
    • 调试接口、链接脚本等
  • 还可以为不同 Target 单独控制文件的编译权限,通过Exclude from Build选项,指定哪些文件参与当前目标的构建。

使用方法:

新建项目目标:

按照下图新建项目目标完成后需要电机 OK,才保存下来。

完成创建后就会发现在菜单栏中就可以选择不同的Target。

使用案例:

不同 Project Target 配置不同的魔法棒配置:

区域2:Groups、Files

概述:

随着嵌入式项目规模变大,代码文件会越来越多。如果所有.c/.s文件都堆在同一个列表里,会变得杂乱无章,难以查找和维护。尤其是用户自己新增的.c/.s文件,如果不做分类管理,后期修改、调试时,找文件的成本会越来越高。为了解决这个问题,Keil 提供了 Groups(文件组)和 Files(文件列表)功能。

Groups 相当于工程里的虚拟文件夹,我们可以按照功能、文件类型自由创建分组,用来分类管理代码,让工程结构清晰直观。

Files 则用于给分组添加具体的源文件,即使你在电脑文件夹里分好了 .c 和 .h,也必须通过这里手动添加到分组中,才能参与编译、被工程识别和使用。

使用案例:

案例1:源文件(.c)和头文件(.h)在同一个文件夹,添加进工程项目使用。

打开 Keil 工程后,按照下图步骤进行操作。

注意:在 Groups 下新建的分组名称,要与第一步在电脑文件夹中创建的文件夹名称保持一致,方便结构对应、便于管理。

源文件已添加成功,接下来是添加头文件。

案例2:源文件(.c)和头文件(.h)不在同一个文件夹,添加进工程项目使用。

步骤跟上面的都一样,不同的是代码里的头文件路径,要具体到哪个文件夹下。

注意:上述添加的头文件步骤都找不到头文件的话,就需要到 “ 魔术棒”里的 C/C++ 界面→ Include Paths 里添加这个.h所在的文件夹路径。步骤如下:

二、Folders/Extensions 界面

该界面主要用于配置 Keil 编译工具链的基础根目录、BIN/INC/LIB/Regfile 等子文件夹路径,也能自定义 C 语言、汇编、头文件、库文件的默认后缀格式;支持调用 TOOLS.INI 配置文件沿用默认安装路径,方便工程换电脑也能正常编译,普通开发者保持默认即可,仅在工具路径异常、更换编译工具链时才需手动调整。

1. Use Settings from TOOLS.INI

作用:让Keil去读取TOOLS.INI文件里的全局工具路径配置,而不是当前工程自己存的路径。

  • 勾选:路径由TOOLS.INI这个全局文件说了算,工程不 “硬写死” 路径,换电脑时只要 Keil 装在同一路径,工程就能直接用。
  • 不勾选:路径就直接写在当前工程的配置里,换电脑如果 Keil 路径不一样,就会报错 “找不到编译器”。

2. 工具路径配置

这部分是给Keil “指路” 的,告诉它编译工具、头文件、库文件都放在哪里,官方给出了具体示例(以C51为例),我们逐一拆解。

  • Tool Base Folder(工具基础根目录):指定工具链的根路径,比如C51的默认路径是C:\Keil_v5\C51\,相当于告诉Keil“编译工具的总文件夹在这里”。

  • BIN:工具链的二进制文件夹路径,比如C:\Keil_v5\C51\BIN\,里面是可执行的编译工具(相当于Keil的“核心工具库”)。

  • INC:头文件文件夹路径,比如 C:\Keil_v5\C51\INC\,Keil编译时会在这里找我们写的.h头文件。

  • LIB:库文件文件夹路径,比如 C:\Keil_v5\C51\LIB\,存放编译所需的库文件(相当于“辅助工具包”,不用我们自己写)。

  • Regfile:寄存器定义文件文件夹路径,比如 C:\Keil_v5\C51\REG\,存放单片机的寄存器定义文件,方便我们调用寄存器。

小白重点:默认路径不用改!只有两种情况需要调整:重新安装Keil后路径变了;更换了编译工具链(比如从C51换成ARM),否则改了会导致编译报错。

3. Default File Extension(默认文件扩展名:自动识别文件类型)

就是给Keil设定 “识别规则”,比如告诉它:后缀是.c的是C语言文件,后缀是.h的是头文件,后缀是.s.asm的是汇编文件。

常见默认设置(小白不用改):

C Source(C语言文件):.c

ASM Source(汇编文件):.s;*.asm

Header(头文件):.h

Library(库文件):.lib

小白重点:这个设置的好处是,我们往工程里添加文件时,Keil会自动识别文件类型,不用手动选择,省时间还不容易出错

4.UseARM Compiler

  • 作用:启用 Keil 自带的ARM 编译器(ARMCC/ARMCLANG),这是 Keil MDK 默认给 ARM 单片机用的编译器。
  • 勾选后,下面的路径会自动关联到你 Keil 安装目录里的 ARM 编译器(比如图里的D:\Keil\Keil_v5\ARM\)。
  • 小白不用管它,只要勾选了,就能正常编译 ARM 工程, Setup Default ARM Compiler Version 按钮可以用来切换编译器版本(v5/v6),一般默认就好。

5. Use GCC Compiler (GNU) for ARM projects

  • 作用:给 ARM 工程启用开源的 GCC 编译器,替代 Keil 自带的 ARM 编译器。
  • Prefix:GCC 工具链的前缀(默认 arm-none-eabi-),用来识别 gcc、ld 等工具。
  • Folder:GCC 工具链的安装路径,Keil 需要在这里找到编译工具。

三、Books 界面

Books 界面是 Keil 专门用来统一管理各类开发手册、数据手册、教程文档的面板,可按通用、工具链、芯片设备三类分类管理,支持自定义文档标题、存放路径、默认根目录,还能新增、删除、排序文档,配置后可在 Keil 自带的 Books 窗口直接快速查阅,不用手动找文件夹打开资料。

1. General Books 通用文档

归类到 Keil Books 窗口µVision分区,所有工程都能看到,放通用教程、Keil 使用手册这类和芯片、编译器无关的资料。

2. Tool Specific 工具链专属文档

归类到 Books 窗口Tools User's Guide分区,只对当前所用编译器工具链生效,同工具链下所有工程共用,放编译器、汇编器、链接器官方手册。

3. Device Specific 芯片设备专属文档

归类到 Books 窗口Device Data Books分区,只在使用这款单片机的工程里显示,自动关联芯片库配置;专门放芯片数据手册、外设参考手册,是开发最常用的一类。

Default Root 默认根目录

设置所有文档的默认存放根文件夹;如果设备专属目录为空,会自动继承工具链的默认根目录。找不到本地文档时,Keil 会自动联网搜索对应手册。

操作控件功能

  • 新增 / 删除 / 上下排序:调整文档列表顺序。
  • New/Change Book:新建文档条目,或修改已有文档的名称、路径。
  • 双击列表项:快速修改文档配置。
  • 双击空白处:快速添加新文档。

Book Title / Book Path 作用

  • Book Title:自定义文档显示名称,只在 Keil Books 窗口展示,方便自己识别。
  • Book Path:填写文档绝对路径或相对路径;相对路径会自动拼接上面设置的 Default Root 根目录。

四、Project Info/Layer 界面

Project Info/Layer 是工程信息填写 + 工程分层架构配置页面,一边用来给工程填标题、描述、适配开发板、协议许可证等备注信息;另一边用来创建软件分层,把代码、组件按层级归类,主要服务 CMSIS 架构、大型模块化工程、CI/CD 自动编译流程,普通个人小白小工程基本用不上。

4.1 Project Info 工程信息板块(官方逐条白话翻译)

  1. 工程标题 Title:给整个工程起一个正式名称。
  2. 简要描述 Brief Description:写项目用途、功能简介,限制最多 100 个字符。
  3. 文档链接 Documentation:可以填项目手册、说明文档的网址或本地路径。
  4. 分类标签 Categories:给工程打分类标签,方便归类管理。
  5. 开源许可证 License:采用 SPDX 规范填写项目开源协议。
  6. 适配开发板 Board:指定这个工程是为哪款开发板、硬件平台开发的。

重点小白提示:<Project Info>这个名称是系统固定的,不能手动改名;这里所有信息都只是备注归档作用不影响编译、不影响代码运行

4.2 Project Layers 工程分层板块(核心作用)

分层是干嘛的:

Layer 就是软件逻辑分层,可以把预配置好的软件组件、工程文件分到不同层里,用途:

  • 把官方评估套件的程序,快速移植到自己定制硬件上
  • 把官方例程快速适配多款单片机、多款目标板
  • 配合 CMSIS-Build 做 CI/CD 自动化批量编译、多硬件适配工程

小白一句话:就是给大型工程做模块化分层、方便移植和批量编译的高级功能

小白关键知识点:

工程分层主要用在CMSIS-Build 流程,普通 Keil 日常单工程开发,几乎用不到、不用配置

4.3 如何创建工程分层(极简流程,博客可简写)

  1. 打开 Manage Project Items 切换到 Project Info/Layer;
  2. 点 New 新建一个分层,比如 Board 板级层、Driver 驱动层、App 应用层;
  3. 给分层填标题、描述、文档链接、分类、开源协议、提供接口、依赖接口、适配目标芯片 / 开发板;
  4. 保存完成分层创建。

4.4 把文件 / 组件分配到对应分层

  1. 在工程窗口右键代码文件或软件组件,打开选项;
  2. 切换到属性页,找到 Layer 下拉框;
  3. 选择建好的对应分层,确定即可绑定归类。

4.5 分层信息导出 CPRJ 工程格式

Keil 默认工程格式不带分层信息,想要保留分层配置、用于 CI/CD 编译:通过Project — Export — Save Project to CPRJ format导出为.cprj格式,用于 CMSIS 自动化构建。

4.6 Use Settings from TOOLS.INI 同样适用

和前面三个界面逻辑一模一样:

  • 不勾选:工程信息、分层结构只保存在当前工程,独立互不影响;
  • 勾选:从 Keil 全局 TOOLS.INI 读取配置,所有工程共用一套信息和分层模板。

小白建议:保持默认不勾选,完全不用碰这一页任何配置

http://www.jsqmd.com/news/695833/

相关文章:

  • PyTorch实现Transformer英法机器翻译系统
  • 华为交换机实战:从办公室网络隔离到服务器互通,一套配置搞定Access、Trunk、Hybrid混合组网
  • Go语言高性能HTTP路由器Chipper:零依赖轻量级路由解决方案
  • C++:模板精讲
  • Aetina AIE-CP1A-A1边缘AI系统解析与工业应用
  • CUDA 13.0与Jetson Thor平台:边缘计算新纪元
  • YOLOv8炼丹笔记:用ECA注意力模块提升小目标检测精度(附三种YAML配置)
  • Pytest及相关测试工具实战指南
  • ChatGPT Images 2.0 技术升级与全场景落地实操指南
  • 深度学习实现图像自动描述生成的技术解析
  • Linux kernel 5.10+下C++ MCP网关偶发丢包率突增300%?eBPF trace发现glibc malloc隐式锁争用黑洞
  • 云服务器配置远程桌面
  • AI 多智能体 Agent+Unity 虚拟仿真:数字孪生 3D 场景智能调度教程
  • 神经形态硬件在强化学习机器人控制中的低功耗实践
  • 我们有最牛的数据系统,却输给了一个“没人回复的推送”
  • DeepEar开源对话系统:从语音识别到多轮对话的完整实践指南
  • VSCode实时协作优化进入深水区:E2E加密延迟、光标冲突消解算法、离线变更合并队列——这3个底层机制你必须今天就掌握
  • Hyperf 开箱即用的多语言、多币种、多时区、国际支付、全球物流PHP标准化组件
  • 【进程间通信】————匿名管道、模拟实现进程池
  • NREL风速数据API参数详解:从wkt坐标到interval间隔,新手避坑指南
  • 机器学习模型方差问题分析与实战解决方案
  • 嵌入式——认识电子元器件——三极管系列
  • 以线性代数的行列式理解数学应用备忘
  • 从 LangGraph 死循环到 Skill 驱动:我把 Text2SQL 升级成了SKILL模式
  • 2026宝鸡高端装修设计实测:宝鸡市,宝鸡,渭滨宝鸡装修(核心词),宝鸡靠谱家装公司,排行一览! - 优质品牌商家
  • 2026年比较好的硅酸钙板建材专业公司推荐 - 品牌宣传支持者
  • 差分放大器在高速信号链中的关键作用与设计实践
  • keil未指定 PY32F0 具体芯片型号导致编译报错及无法烧录问题
  • 为什么92%的CVE-2025高危漏洞仍源于C内存错误?——2026年NASA、Linux内核与AUTOSAR联合验证的4类零容忍写法
  • 数据标准:梳理业务主题、对象和事件的粒度应如何把握(干货)