完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
步骤一:
打开 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 函数,所以报错了。 接下来,第二件事,让我们看看存放工程的文件夹有什么变化?打开我们刚刚建立的 TESTUSER 文件夹,可以看到里面多了 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 所示的界面 至此,我们就可以开始编写我们自己的代码了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:04 , Processed in 0.870076 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号