keil5MDK 怎么新建工程(有图 超详细)

一 建一个工程框架

1.在电脑中新建一个文件夹,命名为Template

2.

点击 MDK 的菜单: Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹
Template 之下,在这个目录下面建立子文件夹 USER( 我们的代码工程文件都是放在 USER
目录)工程命名为 Template,点击保存。

 3.选择芯片型号(一定要安装对应的器件 pack 才会显示这些内 容哦!

 点击 OK,如若出现其他界面,点击取消即可;MDK 会弹出 Manage Run-Time Environment 对话框,这里我们不做介绍,点击Cancel即可

 得到如下界面,这里我们只做了一个框架,还需要添加启动代码,以及.c 文件等

 此时USER文件夹会是如下图情况(Template.uvprojx 是工程文件,非常关键,不能轻易删除。Listings Objects 文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件)我们选择把Listings和Objects这两个文件夹删除,在下一步重新建立文件夹。

 二在 Template 工程目录下面,新建 3 个文件夹 CORE, OBJ 以及 STM32F10x_FWLib。

用来存放核心文件和启动文件,OBJ 是用来存放编译过程文件以及 hex 文件,STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。USER 目录用来放工程文件,以及存放主函数文件 main.c,以及其他包括 system_stm32f10x.c 等等。

 

 三  将官方的固件库包里的源码文件复制到我们的工程目录(CORE, OBJ ,STM32F10x_FWLib)文件夹下面

STM32F10x_FWLib文件夹

打开官方固件库包,定位到我们之前准备好的固件库包的目录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,
将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。
src 存放的是固件库的 .c 文件, inc 存放的是对应的.h 文件,您不妨打开这两个文件目录过目一
下里面的文件,每个外设对应一个 .c 文件和一个 .h 头文件

2.  CORE文件夹(启动文件)

(1)  官方固件库包,定位到目录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c 和文件 core_cm3.h 复制到 CORE 下 面 去 。
(2)  然 后 定 位 到 目 录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下面,将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面。
现在看看我们的 CORE 文件夹下面的文件:

3 USER文件夹 

(1)

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面
将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h ,复制到我们的 USER 目录之下。
(2)
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个文 件
main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。
总共9个,除了自带的两个外,4个.h,3个.c

四 将这些文件(CORE USER FWILD)加入我们的工程中去
右键点击 Target1,选择 Manage Project Items——> Project Targets 一栏,我们将
(1)Target 名字修改为 Template
2)删一加三   
Groups 一栏删掉一个 Source Group1
建立三个 Groups USER,CORE,FWLIB
然后点击 OK ,可以看到我们的 Target 名字以及 Groups 情况。

 

五 向Group里面添加我们所需要的文件

1 FWLID

右键点击点击
Tempate ,选择选择 Manage Project Itmes ,然后选择需要添加文件的 Group ,这里第一步我
们选择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的目录STM32F10x_FWLib/src 下面,将里面所有的文件选中( Ctrl+A),然后点击 Add,然后 Close.
可以看到 Files 列表下面包含我们添加的文件。

 2 CORE

用同样的方法,将 Groups 定位到 CORE USER 下面,添加需要的文件。这里
我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s ( 注意,默认添加的
时候文件类型为 .c, 也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型
All files 才能看得到这个文件 )

3 USER

USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c, system_stm32f10x.c.

这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK,回到工程主界面。 

 六 生成编译文件

点击魔术棒,然后选择“ Output ”选项下面的“ Select folder for objects… , 然后选
择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么
默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。

七 添加头文件

这里大 家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到
进来。 回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++ 选项 . 然后点击
Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添
加进去。记住, keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path
一定要定位到最后一级子目录。然后点击 OK.

 

 

 八 配置全局宏定义变量

定位到 c/c++ 界面,然后填写 “STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面 ( 请注意,两个标识符 中间是逗号不是句号,如果您不能确定您输入的是正确的,请直接打开我们光盘任何一个 库函数实例,然后复制过来这串文字即可 )

 打开工程 USER 下面的 main.c 文件在编译之前复制下面覆盖main.c里的程序,记得在最后一行回车(enter),不然编译时有警告。

#include "stm32f10x.h"
void Delay(u32 count)
{
u32 i=0;
 for(;i<count;i++);
}
int main(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOE, ENABLE); //?? PB,PE ????
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 ????
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //????
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO ???? 50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure); //??? GPIOB.5
 GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 ???
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 ????
 GPIO_Init(GPIOE, &GPIO_InitStructure); //??? GPIO
 GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 ??? 
 while(1)
{
 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
 GPIO_SetBits(GPIOE,GPIO_Pin_5);
	Delay(3000000);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
Delay(3000000); 
} } 

 重新编译代码,我们可在OBJ文件夹里看到.hex文件。

 

 

实际上经过前面 的 步骤,我们的工程模板已经建立完成。但是在我们 ALIENTEK 提供
的实验中,每个实验都有一个 SYSTEM 文件夹,下面有 3 个子目录分别为 sys,usart,delay
存放的是我们每个实验都要使用到的共用代码,该代码是由我们 ALIENTEK 编写,该代码
的原理在我们第五章会有详细的讲解,我们这里只是引入到工程中,方便后面的实验建立
工程。
首先,找到我们实验光盘, 打开任何一个固件库的实验 ,可以看到下面有一个 SYSTEM
件夹,比如我们打开实验 1 的工程目录如下:
可以看到有一个 SYSTEM 文件夹,进入 SYSTEM 文件夹,里面有三个子文件夹分别为
delay,sys,usart ,每个子文件夹下面都有相应的 .c 文件和 .h 文件。我们接下来要将这三个目录下
面的代码加入到我们工程中去。
用我们之前讲解步骤 13 的办法,在工程中新建一个组,命名为 SYSTEM ,然后加入这三
个文件夹下面的 .c 文件分别为 sys.c ,delay.c,usart.c,如下图:
接下来我们将对应的三个目录( sys,usart,delay )加入到 PATH 中去,因为每个目录下面都有相
应的 .h 头文件,这请参考步骤 七   即可,加入后的截图是:

 

 

 

最后点击 OK 。这样我们的工程模板就彻底完成了,这样我们就可以调用 ALIENTEK 提供的
SYSTEM 文件夹里面的函数。
如有错误,欢迎私信!
希望对正在努力的你有所帮助!

 

### 如何在 Keil MDK新建工程 #### 工程创建概述 在嵌入式开发领域,Keil 是一款广泛使用的集成开发环境 (IDE),尤其适用于 ARM Cortex-M 系列微控制器的开发。以下是关于如何在 Keil MDK 中创建新工程的具体方法。 --- #### 创建新工程的步骤说明 1. **启动 Keil 软件** 打开 Keil MDK 开发工具软件界面,进入主菜单页面[^1]。 2. **选择 New μVision Project** 在主界面上方点击 `Project` -> `New μVision Project...` 或者直接按下快捷键组合 Ctrl+N。此时会弹出一个文件保存对话框,用于指定新的工程项目存储路径并命名该工程文件。 3. **设置目标芯片型号** 当完成初始配置后,系统将提示用户输入所选 MCU 的具体型号。对于 STM32F4 系列单片机而言,在弹窗中搜索对应的器件名称(例如 STM32F407VG),然后确认选定以加载相应的外设支持包和初始化脚本。 4. **添加源代码文件** 接下来需要向该项目目录下导入实际编写好的 C/C++ 文件或其他资源链接项。右击左侧项目管理窗口中的 Source Group 1 并选取 Add Existing Files to Group 'Source_Group_1' 功能来实现这一目的;也可以手动拖拽外部编辑器生成的结果至对应位置完成关联绑定操作。 5. **调整编译选项参数** 进一步定制化构建行为可以通过双击 Target Options 下面的相关条目来进行细粒度控制,比如定义宏开关 (-DDEBUG)、优化级别 (-O2/-Os) 及其他高级特性设定等均在此处完成配置工作[^2]。 6. **验证与调试准备** 完成上述全部准备工作之后即可尝试运行一次完整的 Build All 测试过程查看是否存在语法错误等问题,并连接硬件仿真器如 ST-LINK 实现在线断点跟踪分析等功能进一步完善整个解决方案框架结构设计思路。 ```c // 示例:简单的 LED 控制函数 void ToggleLED(void){ GPIOA->ODR ^= (1 << 5); // 假定 PA5 引脚接有 LED } ``` --- #### 版本控制系统推荐 为了更好地管理和协作团队成员之间的修改记录变化情况,《Using Git for Project Management with uVision》一书提供了详细的指导方案,建议开发者学习掌握 git 工具的应用技巧以便于长期维护大型复杂项目时保持良好的版本迭代节奏[^3]。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码1111

谢谢那么优秀的你来为我加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值