单片机
返回首页

STM32的项目创建——基于Keil MDK环境

2025-11-04 来源:bilibili

       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分组内容


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章