Ministm32新建 MDK5 工程

步骤一:

打开 MDK (以下将 MDK5 简称为 MDK )软件。然后点击 Project New uVision Project
如图 3.2.1 所示

步骤二:

在桌面新建一个 TEST 的文件夹,然后在 TEST 文件夹里面新建 USER 文件夹,将工程名字设为 test ,保存在这个 USER 文件夹里面,之后,弹出选择器件的对话框,如图 3.2.3 所示

步骤三

因为 ALIENTEK MiniSTM32 开发板所使用的 STM32 型号为 STM32F103RCT6 ,所以在这里我们选择 STMicroelectronics STM32F1 Series STM32F103 STM32F103RCT6 (如果使用的是 其他系列的芯片,选择相应的型号就可以了
特别注意: 一定要安装对应的器件 pack 才会显 示这些内容,如果没得选择,请关闭 MDK ,然后安装 光盘: 6 ,软件资料 \1 ,软件 \MDK5\ Keil.STM32F1xx_DFP.2.2.0.pack 这个安装包)。

步骤四

点击 OK MDK 会弹出 Manage Run-Time Environment 对话框,如图 3.2.4 所示:
这是 MDK5 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建
开发环境,不过这里我们不做介绍。所以在图 3.2.4 所示界面,我们直接点击 Cancel ,即可,
得到如图 3.2.5 所示界面:

步骤五

步骤六

到这里,我们还只是建了一个框架,还需要添加启动代码,以及 .c 文件等。这里我们先介
绍一下启动代码:启动代码是一段和硬件相关的汇编代码。是必不可少的!这代码主要作用如
下:
1 堆栈( SP )的初始化
2 初始化程序计数器( PC
3 设置向量表异常事件的入口地 址;
4 调用 main 函数。感兴趣的朋友可以自己去分析这部分代码
ST 公司提供了 3 启动文件给我们,分别用于不同容量的 STM32 芯片,这三个文件是:
startup_stm32f10x_ld.s
startup_stm32f10x_md.s
startup_stm32f10x_hd.s
其中, ld.s 适用于小容量 产品; md.s 适用于中等容量产品; hd 适用于大容量产品;
这里的容量是指 FLASH 的大小 . 判断方法如下:
小容量: FLASH 32K
中容量: 64K FLASH 128K
大容量: 256K FLASH
我们开发板使用的是 STM32F103RCT6 FLASH 容量为 256KB ,属于大容量产品,所以我们选择 startup_stm32f10x_hd.s 作为我们的启动文件。 这三个启动文件在开发板光盘 4 ,程序源码 STM32 启动文件 文件夹里面(也可以从我 们的论坛 下载到, 下载地 址: http://www.openedv.com/posts/list/313.htm ), 这里我 们把 startup_stm32f10x_hd.s 拷贝到刚刚新建的 USER 文件夹里面。 不过这个启动文件,我们做了一点点修改,具体是 Reset_Handler 函数,该函数修改后代码
如下:

这段代码,我们屏蔽了复位中断服务函数( Reset_Handler )对函数 SystemInit 的调用,如果是库函数版本,可以取消这个函数的注释,并在外部实现 SystemInit 函数。

步骤七:

在图 3.2.5 中,我们找到 Target1 Source Group1 双击 设置打开文件类型为 Asm Sourcefile 选择 startup_stm32f10x_hd.s 点击 Add ,如图 3.2.6 所示:

步骤八:

这里看到的 2 个文件夹: Listings Objects ,是 MDK5 自行创建的,用于保存编译过程中生成的一些文件,后续会介绍。添加完后,我们得到如图 3.2.7 所示的界面:

步骤九:

至此,我们就可以开始编写自己的代码了。不过,在此之前,我们先来做两件事:第一件, 先编译一下,看看什么情况 ? 编译后如图 3.2.8 所示:

步骤十:

3.2.8 1 处为编译当前目标按钮; 2 处为全部重新编译按钮(工程大的时候,编译耗时
较久,建议少用)。出错和警告信息在下面的 Bulilt Output 对话框中提示出来了。因为工程中没
main 函数,所以报错了。
接下来,第二件事,让我们看看存放工程的文件夹有什么变化?打开我们刚刚建立的
TEST\USER 文件夹,可以看到里面多了 3 个文件夹: DebugConfig Listings Objects ,如图
3.2.9 所示:

步骤十一:

USER 文件夹下, startup_stm32f10x_hd.s (启动文件)和 test.uvprojx MDK5 工程文件)
是我们必须用到的 2 个文件,然后 DebugConfig Listings Objects 文件夹是 MDK5 自动生
成的, DebugConfig 文件夹用于存储一些调试配置文件, Listings Objects 文件夹用来存储 MDK
编译过程的一些中间文件。
MDK5.21A 已经默认将这些文件生成在了 Listings Objects 文件夹里面,但是 MDK5.11A
及之前版本是不会自动生成这两个文件夹的,所有中间文件都是生成在工程同面目录下,也就
USER 文件夹下,这样会显得比较混乱。
这里,我们不用 MDK5 自己生成的 Listings Objects 文件夹来存放中间文件,而是在 TEST
目录下新建一个新的 OBJ 文件夹来存放这些中间文件。这样, USER 文件夹专门用来存放启动
文件( startup_stm32f10x_hd.s )、工程文件( test.uvprojx )等不可缺少的文件,而 OBJ 则用来存
放这些编译过程中产生的中间文件 ( 包括 .hex 文件也将存放在这个文件夹里面 ) 。然后把 Listings
Objects 文件夹里面的东西全部移到 OBJ 文件夹下(当然要先关闭 MDK 软件),并删除这两
个文件夹( DebugConfig 文件夹不用删除)。整理后效果如图 3.2.10 所示:
 

步骤十二:

由于上面我们还没有任何代码在工程里面,这里我们把系统代码 COPY 过来(即 SYSTEM
文件夹,该文件夹由 ALIENTEK 提供,可以在光盘任何一个实例的工程目录下找到,不过不要
拷贝错了! 不要把库函数代码的系统文件夹拷贝到寄存器代码里面用,反之亦然! 这些代码在
任何 STM32F10x 的芯片上都是通用的,可以用于快速构建自己的工程,后面会有详细介绍)。
完了之后, TEST 文件夹下的文件如图 3.2.11 所示:

步骤十三:

在上面对话框的中间栏,点新建(用红圈标出)按钮(也可以通过双击下面的空白处实现),
新建 USER SYSTEM 两个组。然后点击 Add Files 按钮,把 SYSTEM 文件夹三个子文件夹里
面的: sys.c usart.c delay.c 加入到 SYSTEM 组中。注意:此时 USER 组下还是没有任何文件,
得到如图 3.2.13 所示的界面:
 

步骤十四:

点击 OK ,退出该界面返回 IDE 。这时,我们在 Target1 树下发现多了 2 个组名,就是我们
刚刚新建的 2 个组。如图 3.2.14 所示:

步骤十五:

接着,我们新建一个 test.c 文件,并保存在 USER 文件夹下。然后双击 USER 组,会弹出
加载文件的对话框,此时我们在 USER 目录下选择 test.c 文件,加入到 USER 组下。得到如图
3.2.15 所示的界面
至此,我们就可以开始编写我们自己的代码了。

猜你喜欢

转载自blog.csdn.net/m0_46383618/article/details/113743286