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

发布者:Harmonious222最新更新时间:2025-11-04 来源: bilibili关键字:STM32  项目创建  Keil  MDK环境 手机看文章 扫描二维码
随时随地手机看文章

       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  项目创建  Keil  MDK环境 引用地址:STM32的项目创建——基于Keil MDK环境

上一篇:基于STM32的Flash读写详解
下一篇:【STM32单片机学习】第16章 通信—模拟I2C

推荐阅读最新更新时间:2026-03-25 15:33

【STM32F103攻城笔记】STM32MDK(Keil环境搭建(二)
继续上面的操作,我们打开keil,是空的! 点击project - New uVision Project 选择工程的位置并命名工程名字 保存后,选择你对应的芯片, OK后,一个空的环境搭好了! 下一步建立一个代码文件夹, 先说明我们要用的文件有哪些: 然后将上面的文件分配到建立的文件代码,分配方式为 CORE 文件夹: LIB文件夹: 最后在APP里建个main.c文件! 这样我们基本完成了代码的分配! 下面我们只需要将这代码加载到上面keil搭建的环境里就可以了! 打开刚才的环境,为了方便区分,和代码建立相同的文件结构,如图 下一步,我们通过加载文件,将代码文
[单片机]
【STM32F103攻城笔记】<font color='red'>STM32</font>之<font color='red'>MDK</font>(<font color='red'>Keil</font>)<font color='red'>环境</font>搭建(二)
Keil MDK环境下使用STM32固件库
简介 写这篇教程主要是和大家分享使用STM32的基本方法,也是给自己学习过程的总结、记录和备忘,避免重复学习之前明白但又忘记的知识和操作。我现在也是刚开始接触学习STM32,我是在STM32的固件库V3基础上进行学习。在这里我和大家分享一下使用V3.x库的方法,希望大家喜欢,如有错误请指出。 这篇教程分以下几个方面,一:建立工程,设置工程属性。二:建立条理清晰的GROUP;三:使用JLINK仿真调试。下面就分别逐个说明。 一、新建MDK工程 1、首先,打开MDK软件,再点击Project- New uVision Project ,如下图所示: 弹出如下对话框: 新建一个文件夹MDK工
[单片机]
Keil MDK 开发环境中u8,u16,u32和int区别
u8 是 unsigned char u16 是 unsigned short u32 是 unsigned int 代码示例: void TIM3_Int_Init(u16 arr,u16 psc) { //do something... }
[单片机]
keil5(MDK5)配置S3C2440裸机开发调试环境
引言 用于arm裸机程序开发的IDE基本有 以下3个:MDK或者称Keil,IAR,还有ADS。其中ADS已经停止更新,不建议使用了。它们的具体情况在这里我就不多说了,百度一下就明白了。 由于之前开发c51的时候都使用了MDK开发环境,而且MDK的界面确实看起来舒服多了,所以我选择了MDK作为我的s3c2440裸机开发的IDE。以下主要介绍一下如何使用MDK配合J-link来调试基于s3c2440的开发板。 MDK、J-link的安装 MDK5软件包请自行百度下载,官方网站上的需要注册下载略显麻烦。安装后需要注册码,否则使用有限制。个人学习研究可尝试破解,安装和破解方法请自行百度。 这里我只提醒需要特别注意的地方:MDK5以后的
[单片机]
Keil MDK环境下使用printf函数的解决方法
printf()函数可以直接向窗口格式化输出,给我们调试程序带来很大的方便,然而在Keil MDK环境下直接使用printf()函数就会陷入软件中断,导致死循环的产生;因而不能进入main()函数。 单步调试程序时会发现程序指针一直在 SWI_Handler B SWI_Handler 打转; 解决方法: 工程选择NXP的LPC21XX器件。 1.首先在Keil安装目录下面ARM——Startup找到Retarget.c文件将其复制到你的工程文件夹下面;并将其加入到工程中; 2. 在Keil安装目录下面ARM——Examples——Hello找到Serial.c文件将其复制到你的工程文件夹下面;并将其加入到工程中; 3.
[单片机]
STM32与CLion集成开发环境项目创建指南
新建和配置一个 STM32 项目 1 创建项目 假如是 ST 官方开发板,比如 NUCLEO 板,选择从 ST 板创建 假如是单芯片或淘宝买的那种 F103 开发板,选择从 MCU 创建 2 STM CubeMX 配置 2.1 Pinout & Configuration 外设配置 假如是 ST 官方开发板,可以使用默认设置 否则,在 System Core – SYS – Debug 选择 Serial Wire :::danger 主警告 忘记配置 Debug 可能造成无法二次烧录代码 (恢复有点麻烦) ::: 2.2 Clock Configuration 时钟树 暂时可以忽略 2.3 Project Manager
[单片机]
<font color='red'>STM32</font>与CLion集成开发<font color='red'>环境</font>新<font color='red'>项目</font><font color='red'>创建</font>指南
介绍在CubeMx+VS下创建STM32项目的两种方式
方法一:通过Embedded Project Wizard 提供的例程创建 优点:直接通过VS创建,配置过程简单直观 缺点:修改初始化配置麻烦,只能从例程生成(或许是我还没研究明白)... 1.创建Embedded Project Wizard项目 2.命名解决方案,指定存储路径 如果点击创建后出现下图窗口,直接OK即可 3.配置项目类型 ↑C Library Type 选择支持浮点的输出函数比较好 4.选择模板项目 5.※调试模式选择 ①将调试器连接到 电脑 ②Debug Method 选择 USB - ST-Link v2 ③配置调试选项 STM32 采用SWD 接口 模式 有关Debug P
[单片机]
介绍在CubeMx+VS下<font color='red'>创建</font><font color='red'>STM32</font><font color='red'>项目</font>的两种方式
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved