目录

  • 一、文件与文件夹创建
    • 1.1 CMSIS文件夹创建
    • 1.2 FWLIB文件夹创建
    • 1.3 Project文件夹创建
    • 1.4 startup文件夹创建
    • 1.5 user文件夹创建
    • 1.6 readme文件创建
  • 二、keil5工程创建
  • 三、芯片支持包下载
  • 四、小结

一、文件与文件夹创建

准备工作(参考上一篇博文):
  1、ST标准库的下载如图:

  2、创建好如下文件夹:

1.1 CMSIS文件夹创建

   在CMSIS文件夹中存放的是我们内核控制相关的文件,可以在之前我们下载好的ST标准库找到,如下图所示将文件复制粘贴进文件夹中:

名称 文件所在标准库中的位置
core_cm3.c\h en.stsw-stm32054_v3-6-0_v3.6.0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport
stm32f10x.h、system_stm32f10x.c\h en.stsw-stm32054_v3-6-0_v3.6.0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
stm32f10x_conf.h 、stm32f10_it.c\h en.stsw-stm32054_v3-6-0_v3.6.0\STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Examples\ADC\3ADCs_DMA

   由于stm32f10x_conf.h 、stm32f10_it.c\h是异常处理程序和的模板和包含了库配置文件标准库的头文件,直接从ST下载的标准库中的提供的Project里找到,如上述表格路径。

1.2 FWLIB文件夹创建

  FWLIB文件夹是存放ST标准库文件的地方,里面有ST编写的提供给用户调用的规范化代码,例如对引脚口、系统时钟、DMA等等的操作,如下所示:

  inc存放头文件,src存放的是源文件,可以直接从ST标准库里面复制粘贴

名称 文件所在标准库中的位置
inc、src en.stsw-stm32054_v3-6-0_v3.6.0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver

1.3 Project文件夹创建

  Project文件夹和上一篇说的一样这里主要放置的是通过keil5创建项目生成的文件像.uvprojx就是工程文件,以及一些输出文件,这些文件都是创建工程时keil自动生成的文件和文件夹,我们只需要建立一个文件夹存放keil编译时的输出文件即可。

1.4 startup文件夹创建

  startup文件夹存放芯片的启动文件,怎么选择对应的芯片的启动文件请参考上一篇理论篇,如图所示:

名称 文件所在标准库中的位置
startup_stm32f10x_hd.s en.stsw-stm32054_v3-6-0_v3.6.0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

1.5 user文件夹创建

  user文件夹存放用户代码,我们这里先在里面新建main.c和main.h文件供后续keli工程建立时使用,如图所示:

1.6 readme文件创建

  readme文件用来指示和注明本工程建立的目的,可以根据后续代码拓展新增加功能,如图是为了本次新建工程所用的工程文件的说明:

  至此工程创建前的理论基础和实物基础都已经有了,接下来就是keil5软件里对工程的配置了~

二、keil5工程创建

  第一步:打开keil5软件,依次点击Project—New uVision Project,如图所示:

  第二步:继第一步后会弹出界面选择保存位置,这里我们将整个工程存放在Project文件夹中工程取名为template,注意工程的后缀名,点击保存,如图所示:

  第三步:继第二步后会弹出如下框,是让我们选择芯片,我们用的是STM32F103VE,故依次选择STMicroelectronics—STM32F103—STM32F103VE—OK,这是芯片支持包提供的芯片种类,让编译器知道你用的是什么芯片,如果没有安装STM32F1的芯片支持包是没有芯片可以选择的。芯片支持包的获取见下一章


  第四步:继第三步后会弹出如下界面框Manage Run-Time Environment,可以用来配置 MDK 驱动和ST外设文件等,具体的作用我们后续博文再讲,大家也可以先搜一下他的功能,这里我们先点击Cancel,如下图所示:

  完成后,可以在我们的Project文件夹看到keil创建的文件,以后我们就从Project—template进入我们的工程文件。

  第五步:第四步后我们的工程就初步建立起来了,可以看到左侧的project项目区没有内容只有默认的文件(Target),接着点击如下按钮,开始在工程里面新建目录,将各个代码分类存放,如图所示:

  点击左边区域的Target可以修改名称,这里我们修改为template,同理接着点击中间区域的Source Group1修改名称,点击第三个箭头处的新建按钮可以新建文件,依次建立如下文件,如下图所示:

  序号①处是新建文件、②处是删除文件、③是上移选中的文件、④是下移选中的文件,创建完如下图所示的文件后点击OK完成创建,可以在左侧项目目录框看到我们新建好的目录结构,如下图所示:



  第六步:接下来就要将我们上一章复制粘贴的文件与工程关联起来放入工程中,首先是把源文件(.c文件)引入工程,还是点击第五步的小按钮,如下图所示:

  ①先选中CMSIS,然后在②点击,添加文件,弹出界面,我们需要选中CMSIS中的源文件把他们添加进来,同理选中FWLB,点击Add Files…将FWLIB-src下的文件添加进来,添加startup文件时请注意,需要将寻找的类型换成所有文件,因为启动文件是.S结尾的,最后将新建的main.c也添加进user中,如下图所示:

  将CMSIS文件夹中的源文件添加进来后,可以看到文件已经在右侧已经放进来了,同理完成后续的添加,如图所示:

  FWLIB:

  startup:

  user:

  最后点击下方的OK按钮,完成添加,完成后可以在左侧的项目框中看到我们添加的文件(FWLIB没展开,有点多),如图所示:

  第七步:完成了源文件的添加,接着就是头文件的添加,点击魔术棒按钮,如下图所示:

  点击后选中C/C++选项卡,在点击Include Paths后面的…按钮打开,如图所示:

  点击①处新建后会出来②处空白的框在点击②处的…按钮添加路径,注意头文件的路径需要选择到头文件的根目录,我们把CMSIS、FWLIB-INC、main.h这些文件的路径包含进来。如下图所示:


  如添加CMSIS文件夹中的头文件:

  最后我们完成添加所有的头文件,点击确定如下图所示:

  可以看到红框处已经完成了添加,最后点击OK完成头文件的引入:

  第八步:添加完头文件和源文件后,基本完成的差不多了,只是现在还不能进行编译,我们还没有编写程序主函数main()函数,在左侧的Project项目框中,找到user,单击点开,双击打开我们新建并添加的main.c文件,编写main函数,如图所示:
  main.c文件:

/*STM32F103VET6SYSCLK = 72MHCLK   = 72MAPB1   = 36MAPB2   = 72M
*/
#include "main.h"
int  main(void)
{while(1){;}
}

  main.h文件:

#ifndef __MAIN_H
#define __MAIN_H#include "stm32f10x.h"#endif

  第九步:编写好这两个文件后,这个时候去点编译的按钮,可以看到,如图所示:


  序号①是编译当前文件,就是我们的main.c、序号②是快速编译、序号③是全编译,第一次打开工程时我们需要点击③全编译,后续修改工程我们可以按序号②缩短编译时间
  当我们创建好文件点击序号③时,可能会出现如下提示:

  一大堆问题,先别急,在按下序号②我们先看看现象,如下:

  当我们只编译main.c就可以发现不会有错误,这是正确的,因为main.c没啥内容怎么会报错,如下:

  当我们全局编译的时候会发送那么多错误和警告,这是为啥呢?原因是我们没有将必须要包含的预编译字让编译器包含。
  第十步:点击魔术棒按钮,选择“C/C++”选项卡中所示红框中添加STM32F10X_HD,USE_STDPERIPH_DRIVER(中间用英文的“,”隔开)这样才能使编顺利通过,如图所示:

  define这两个字有什么用呢,我们一个一个看,首先是USE_STDPERIPH_DRIVER,字面理解使用标准外设驱动,我们在使用STM32时不可避免的会用到外设,像最常用的是引脚,我们需要把头文件包含进来(#include “stm32f10x_gpio.h”),但是在写代码的时候我们往往不会这么操作,我们只会#include “stm32f10x.h”,就可以使用引脚的一些操作,这是为啥呢?原因很简单,我们在stm32f10x.h文件中查找USE_STDPERIPH_DRIVER,可以发现下面的代码:

  如果我们定义了USE_STDPERIPH_DRIVER,就会把stm32f10x_conf.h文件包含进来,我们再看看stm32f10x_conf.h文件里面是什么,上一篇博客也提到过这份文件的作用,如图所示stm32f10x_conf.h文件把我们用的所有的标准外设头文件都包含进来了,所以我们只需要调用#include "stm32f10x.h"文件就能实现操作外设的作用,同时需要在C/C++选项卡定义USE_STDPERIPH_DRIVER:

  再来看一下STM32F10X_HD,这像不像我们启动文件的命名,我们打开另一份文件systeam_stm32f10x.c和stm32f10x.h,查找STM32F10X_HD,会找到一些与芯片时钟频率有关的定义,以及一些中断号的定义与中断服务函数有关,如下两图所示:


  所以综上这两个参数的定义是必须要设置的。
  第十一步:最后我们再次全编译会发现没有错误没有警告,我们的工程模板顺利的创建完成了,如图所示:

三、芯片支持包下载

  第一步:当然是先百度搜索我们的keil官网(网址):

  第二步:点击首页的Project,会跳转如界面,再次点击Arm Cortex-M,如图所示:

  第三步:点击后会再次跳转,这时候我们再次点击Public Software Packs,如图所示:

  第四步:点击后会再次跳转,到我们最终寻找芯片包的网页( 懒人链接)我们只要仔细寻找就可以找到STM32F1,点击下载,下载起来有点点慢,如下图所示:

  第五步:下载完成后双击打开会自动检索到安装的keil的芯片包文件夹,点击Next,开始安装,如图所示:

  第六步:安装完成后可以在新建工程的时候看到如下芯片,由于我还安装了其他芯片支持包所以会多一些其他的东西,正常来说会有红框处的文件,安装成功:

四、小结

  经过本章的内容学习,我们成功的创建了新的STM32F103的工程文件,也对里面的文件内容有了进一步的了解,后续的文章会开始对STM32的外设进行学习,下一章会讲令人头疼的时钟系统,欢迎讨论交流,一键三连哦~

keil5新建STM32工程文件--实践篇手把手教学(以STM32F103为例)相关推荐

  1. Keil5新建STM32工程(二)

    接下来将会讲到如何在keil5加入我们新建好的文件... 一起来看看吧~~~ 1.首先我们打开keil5软件并新建工程 然后选择之前我们在电脑新建好的文件夹,放到Project文件夹里边 文件名需要重 ...

  2. Keil5新建stm32工程

    Keil5新建stm32工程1 文章目录 Keil5新建stm32工程[^1] 1. 新建一个工程,搭建框架 2. 向框架里面注入官方的固件库里的源码文件 3. 将注入的文件加入工程 4. 设置编译输 ...

  3. STM32F103标准库开发:Keil5新建STM32工程

    STM32标准库版工程模板链接 STM32F103标准库开发-目录 首先需要搭建Keil5编译环境,才可以新建STM32工程. Keil5编译环境搭建流程----STM32和GD32 新建STM32工 ...

  4. STM32工程文件的建立以及Keil软件的基本设置和修改

    STM32工程文件的建立 1. 解压STM32官方库 2. 建立启动文件夹Libraries. 2.1 内核寄存器描述文件 2.2 外设寄存器描述文件.配置时钟文件 3. 建立输出文件夹Output. ...

  5. MDK Keil5创建stm32工程出现 Error: L6200E: Symbol HAL_MspDeInit multiply defined

    MDK Keil5创建stm32工程出现 -\OBJ\Template.axf: Error: L6200E: Symbol HAL_MspDeInit multiply defined(bystm3 ...

  6. KEIL新建STM32F030F工程文件

    前言 由于项目需要,需要使用STM32F030F4P6,本文从最基础的新建工程文件开始,记录一些主要步骤. 一.新建文件夹 首先新建一个文件夹,文件夹中可参考下图创建三个文件夹以存放不同的文件. 其中 ...

  7. 【STM32学习笔记】(4)—— STM32工程文件详解

    STM32工程文件构成 从下图可以看出我们的工程目录是由CORE.OBJ.STM32F10x_FWLib.USER.SYSTEM以及HARDWARE文件夹组成的.此外还有一个文本文档README.TX ...

  8. Keil5新建STM32工程模板

    学习逻辑 为了达到高效.快速的学习,在学习stm32时,制定的方法是阅读别人的代码,和动手练习代码实验为主. 如果纯看视频,一方面注意力达不到最高效,另一方面在实验测试时同样会遇到很多问题,卡主耽误时 ...

  9. 【沧海拾昧】Keil uVision5新建stm32工程并联合Proteus 8 Professional简单仿真

    #C0101 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

最新文章

  1. Keil : Cannot enter Debug Mode解决方法:
  2. 分享一张理解数据库inner join,left join,right join,full join的图
  3. 蔡司三坐标_蔡司三坐标测针的安装指南
  4. php js跨域上传文件,Jquery实现跨域异步上传文件步骤详解
  5. 你真正了解public、internal、protected、private吗?不妨幽默一些
  6. kubernetes 数据_为什么数据科学家喜欢Kubernetes
  7. Lifecycle使用与分析-基础
  8. hbase的2.2.4版本支持哪个版本的hadoop_2019 年,Hadoop 还是数据处理的可选方案吗?...
  9. VMware ESXI 5.0群集+ISCSI存储
  10. MC新手入门(十三)------ 添加游戏角色
  11. mysql查询语句ppt,mysql查询表中数据总条数的语句怎么写
  12. TeamView for Linux是这样实现的!
  13. 2022年基站行业研究报告
  14. 卫星电视的双本振,单本振及高频头相关知识普及
  15. Only老K说-Java设计模式之原型模式(Prototype)
  16. Markdown缩进控制
  17. 物流学哪方面计算机知识,物流说丨物流专业的毕业生应该具备的6大技能
  18. 凯撒密码(移位加密)
  19. Python+Vue计算机毕业设计房屋租赁管理系统p8pvy(源码+程序+LW+部署)
  20. M1芯片处理器mac能用的AI(llustrator CC 2021 直装版M1优化版)解决M1版MAC安装AI闪退问题 完美支持M1芯片处理器

热门文章

  1. 关于BUCK降压的一些学习笔记2-->滞回比较器产生三角波
  2. 谷歌、百度循环多次翻译、语音下载python脚本
  3. dig 域名信息查询
  4. 重磅!python获取同步输出的桌面网易云音乐歌词(内存偏移获取)
  5. linux 目录防篡改,Linux下的防篡改技巧
  6. ps磨皮滤镜插件Portraiture for Mac 破解方法
  7. c语言循环语循环控制,C语言.控制语循环语句.ppt
  8. iOS 九宫格键盘的UIKeyboardTypeNumbersAndPunctuation默认类型
  9. Notepad++插件: HexEditor
  10. 【打表枚举+二分】喜爱