Keil MDK是比较流行的STM32项目开发工具,建议选用5.0以上的版本,同时要注意5.0版本对Windows XP、Window7的支持已经不好了,因此在开发平台上也建议选用Windows 10或以上版本。
另外,Mac系统和Linux系统也可以使用Keil MDK,操作方式类似,这里不做赘述。
创建MDK工程
首先,介绍新建工程的方法,工程创建基于C8T6,要保证在建立前,已经安装了Keil MDK及对应STM32F1的工具包“Keil.STM32F1xx_DFP”。
1、新建工程目录
创建一个文件夹作为新工程的目录,关于此步骤提出两点建议:
一是最好采用“工作空间->工程目录”的方式,尤其是在学习一项计算机开发技术时,可以将学习案例放置在同一工作空间路径下,然后不同的项目放置在对应的工程路径下。
二是建议工程文件夹的名字以及整个路径中尽量使用英文和数字,以防止编译器出现Bug。
这里我们创建一个文件夹作为工作空间,可以命名为:“F1Workspace”,然后在文件夹中再次创建子文件夹,因为是第一个案例,可以命名为:“C00 TestProj_C8T6”。
因为计算机习惯从0编号,所以第一个项目编号为“C00”(C表示使用C语言开发),采用两位编号也是因为本教程案例数量为两位数。第一个案例是测试工程,所以命名为“TestProj”,而“_C8T6”表示对应的MCU(或者_RCT6,其实无所谓,各个文件夹的命名都是为了管理方便,大家可以根据自己的喜好来设置,记住“用acii字符”就行了)。

新建工作空间和工程目录
2、打开Keil MDK并创建新工程
Keil MDK的开发窗口称为:“μVision”,所以新建工程选择“Project--->New μVision Project…”菜单项。
然后,需要给新建工程命名并保存,这里选择第1步创建的工程目录,并命名为“TestProj_C8T6”。

选择新建工程

命名新工程并保存
接着,新建工程向导开启,第一步是选择MCU。如果这里已经成功安装了工具包“Keil.STM32F1xx_DFP”,那么就可以在Software Packs列表中看到对应选项:“STMicroelectronics->STM32F1 Series->STM32F103->STM32F103C8”。

选择MCU型号
向导第二步是“Manage Run-Time Environment”,这一步可以跳过。RTE(Run-Time Environment)是一个快速添加源文件的工具,这里跳过此步骤,是因为后面我们要练习手动添加源文件。

RTE设置可以直接跳过,后面手动添加源文件
最后,工程创建完毕,可以看到在目录中新增了一些文件和文件夹,其中:“TestProj_C8T6.uvprojx和TestProj_C8T6.uvoptx”都是XML格式的文件,保存了工程中的配置信息,其中“TestProj_C8T6.uvprojx”还可以当作打开工程的快捷方式;“DebugConfig、Listings和Objects”是自动生成的文件夹,分别存放:调试设置、列表文件和目标文件。

工程创建后自动生成内容
3、添加子目录
创建完毕后的Keil窗口如下图所示,暂时没有源文件,所以编辑器是灰色的。另外,工程层级关系也是默认的“Target1”和“Source Group1”。这里说明一下,Keil MDK中对应工程的源文件组织采用四个层级:
1)“Project”算作顶级,代表当前工程;
2)然后,工程包含“Project Targets”,可以创建多个,不过一般项目中也是只有一个Target,通常习惯将其名称改为对应产品(如开发板)的名字;
3)“Project Targets”包含“Groups”,即源文件分组,可以将同类型的源文件放置在一个分组;
4)“Groups”包含“Files”,即源文件。(下图中还没有添加源文件,所以看不到。)

新工程窗口
无论是目标还是分组,虽然在MDK中是文件夹的图片,但是并不代表工程目录中的文件夹,这里就是一种虚拟的逻辑上的项目组织关系。
工程目录中需要拷贝一些使用STM32标准库时必要的源文件。我们首先在工程目录中创建四个文件夹:“CORE”、“User”、“Utils”和“Bsp”。其中的“CORE”文件夹中准备放入标准库提供的必要源文件,这里为了区分采用全大写字母形式。“User”新建“main.c”、“main.h” 和 “readme.txt”三个文件,分别是:入口源文件(包含main函数)及头文件,外加工程说明文档。“Utils”暂时用不到,准备以后可以放置一些工具函数的源文件。“Bsp”是Board Support Package,板级支持包的意思,准备放置各种驱动源文件。因为后面三个文件夹都是自建内容,这里以首字母大写来区分。
当然,以上四个文件夹可以随意命名,不过还是建议不要在路径中出现非ASCII码字符。另外,Utils和BSP中可以都再建立“inc”和“src”两个文件夹,用以将“.h”头文件和“.c”源文件分开存放。这种方式是C工程的惯例,也可以不创建,头文件和源文件放在一个目录里。

新建工程内子目录

User目录新建main.c、main.h和readme.txt(main.c和main.h使用新建文本文件并修改后缀名的方式,readme.txt用于介绍项目,可以不要)

Bsp目录下再新建src和inc子目录

Utils目录也是新建src和inc(Utils存放工具代码,也可以先不创建)
4、拷贝库函数中的目录及源文件
这里使用ST官方提供的标准库3.5版本——“STM32F10x_StdPeriph_Lib_V3.5.0”,因为后面ST官方推行HAL库,所以标准库也不再更新。解压标准库的压缩包,可以看到其中的内容如下图所示。压缩包中的Project目录里的范例需要使用到Libraries目录中的源文件,所以不能直接拷贝工程到其它目录去使用。

标准库包中的主要内容
库函数中需要拷贝的内容主要是Libraries目录中的内容。首先,拷贝整个文件夹“Libraries STM32F10x_StdPeriph_Driver”到自建工程目录中。

标准库整个目录都需要(现在用不到,以后也会用到^_^)

拷贝外围驱动库(标准库)到新建工程目录中
然后需要拷贝的文件位于“LibrariesCMSISCM3”目录中。“CMSIS”是“Arm’s Cortex Microcontroller Software Interface Standard”的缩写,意思是:ARM Cortex 微控制器软件接口标准。它是 Cortex-M 处理器系列的,与供应商无关的,硬件抽象层(ARM官方定义:a vendor-independent hardware abstraction layer for the Cortex-M processor series and defines generic tool interfaces)。因此,我们可以从字面上理解CMSISCM3目录中包含的源文件是服务于Cortex-M3架构底层的一些API,然后ST的官方库调用这些API,实现对底层硬件的编程(其实,基本没有用到这里接口的情况,不过还是习惯添加了,╮(╯▽╰)╭)。
我们将CMSISCM3目录中必要的文件都拷贝到自建工程的“CORE”子目录,要拷贝的文件说明见下表。

“STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3..”所需文件说明表
最后,还要从“STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template”目录中拷贝三个文件:“stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h”。拷贝完成后的CORE目录内容如下图。
stm32f10x_it是关于中断ISR的代码,其实用不到,因此也可以不拷贝。

CORE目录内容
5、在工程中添加这些源文件
我们先来修改和增加项目的Groups,这也是为了更好的在工程中管理这些源文件,另外,要注意一点,“.h”文件可以添加到工程中,也可以不添加——这里选择不添加。修改的方法是点击工具栏上的按钮“Manage Project Items(管理工程项目)”。
打开的Manage Project Items窗口中,可以修改Target或Group的名字,也可以新增Group,然后选中一个分组节点,还可以点击按钮“Add Files..”向其中添加源文件。我们将对应目录中的文件添加到对应分组中。

Manage Project Items按钮

Manage Project Items窗口即新建分组

CORE分组内容

FWLIB分组内容

User分组内容
上一篇:基于STM32的Flash读写详解
下一篇:【STM32单片机学习】第16章 通信—模拟I2C
推荐阅读最新更新时间:2026-03-25 15:33
- 使用 Analog Devices 的 ADP3334 的参考设计
- LTC3588IMSE-1 5V 至 16V 太阳能供电 2.5V 电源的典型应用电路,具有用于增加输出能量存储和电池备份的超级电容器
- XRP7659、1.5A DC 至 DC 非同步降压稳压器的典型应用
- 使用 ON Semiconductor 的 NCP3120MNTX 的参考设计
- MAXREFDES1003:150mA、4通道、LED驱动器,SEPIC配置
- LTC4223-2 演示板,用于 AMC 的双电源热插拔控制器(故障后自动重试)
- MC33072ADR2G 运算放大器用作晶体管驱动器的典型应用
- 使用 Diodes Incorporated 的 AP1509-12S 的参考设计
- NCP382HD10AAGEVB:单输入双输出高侧配电开关评估板
- 使用 Analog Devices 的 AD7730 的参考设计

STM32模拟串口
dm9000cep网卡通信
STM32 PMSM FOC 简介
非常经典的关于LLC的杨波博士论文
XC6406PP60DL






京公网安备 11010802033920号