STM32 标准固件库的下载,文件介绍和工程的建立(综合)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuyuzun/article/details/82930435

前言

  1. 博文基于ARM Cortex-M3内核的STM32F103ZET6芯片和标准3.5.0库;
  2. 博文介绍标准库中个文件夹的含义和以及一个简单工程的建立;
  3. 如有不足之处还请博友多多指教;

标准库的下载

标准库的获取方式:
第一步:进入官网:https://www.st.com/content/st_com/zh.html
第二步:依次进行下列操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在下面这个表格里,能看到很多系列的标准库,可以根据自己需求选择;这里我选择STM32F10x系列;
(下面这个表格是根据芯片选择的,或许有人会有一个疑问:为什么选择了第三个,明明第一个也是支持STM32F10x的,原因就是版本不同,第三个是目前最新的版本,第一个是过去的版本)
在这里插入图片描述
在这里插入图片描述
点击下面获取软件时候,会让你登录或注册,登录注册就可以了;我直接跳过这一步了;
在这里插入图片描述
然后就开始下载了;(如果觉得太慢的话,可以把下载地址复制到迅雷里)
在这里插入图片描述

标准库各文件的含义

  1. 将下载的压缩包解压缩后会看到这个文件夹:文件夹名字的含义是:STM32F10x系列处理器的标准库,版本3.5.0
    基于库函数开发的项目,每次建立新的工程都要访问这个文件夹;
    在这里插入图片描述
  2. 进入后可以看到下列文件夹
    在这里插入图片描述
    ** _htmresc**:不用在意这个文件夹,就两张ST的照片;
    Utilities:实用程序,提供了很多小的程序,比如ASCII码的编码,IIC通信的代码等;这个学习前期也可以不用在意;
    Release_Notes.html:STM32F10x标准外设库(StdPeriph_Lib)发行说明,对标准库的各个版本的区别,即版本的变更;
    stm32f10x_stdperiph_lib_um.chm:这个文件就很重要;此文件包含标准库里的所有的文件,可以很方便的查看各个文件内部的代码,不用通过软件查看各个文件代码;很轻巧很方便;
    (上面这四个需要时才会使用,一般很少使用,下面这两个才是最重要的)
    Libraries:库;文件夹内部结构如图:
    在这里插入图片描述
    对各个文件和部分文件夹进行介绍:
  1. core_cm3.c和core_cm3.h:由ARM公司提供的CMSIS核心文件,提供进入M3内核的接口;(此文件尽量不能改)
    文件夹startup:顾名思义内部放着启动文件,在此文件夹下有arm,gcc_ride7,iar,TrueSTUDIO四个子文件夹,打开后会发现四个文件夹下启动文件文件名一样,为什么会这样的?原因是stm32的开发环境不止一种,这个文件夹名分别代表了各个环境的启动文件,比如如果用KEIL MDK环境开发就选择arm文件夹下的启动文件,如果用IAR环境开发就选择iar环境下的启动文件;
  2. startup_stm32f10x_XX.s:芯片启动文件;主要功能有两个:① 程序开始运行后,使程序进入系统初始化函数SystemInit(),在此处,完成对芯片的时钟系统,管脚等进行初始化;② 初始化结束后使程序进入主函数main()进行;
    这里发现一个问题:arm文件夹下不止这一种,那么应该选择哪一个那?看下表
文件名 含义 容量范围
startup_stm32f10x_ld.s 小容量启动文件 FLASH≤32K
startup_stm32f10x_md.s 中等容量启动文件 64K≤FLASH≤128K
startup_stm32f10x_hd.s 大容量启动文件 256K≤FLASH

(其他几个暂时用不着,先不介绍,后续用到的时候再补充)

  1. stm32f10x.h:STM32F10x系列芯片头文件,是所有外设的头文件,这个经常被各个源文件调用的头文件;
    system_stm32f10x.c和system_stm32f10x.h:系统配置文件;其中包括的System()函数用来配置初始化的整个时钟系统;
    inc:芯片外设头文件;包含所有STM32芯片外设的所有头文件;一般在建立工程的时候用到那个外设就调用那个外设头文件,和src搭配使用;
    src:芯片外设源文件;包含所有STM32芯片外设的所有源文件;一般在建立工程的时候用到那个外设就调用那个外设源文件,和inc搭配使用;

Project: 工程文件夹;此文件夹提供了建立工程的模板和模块的例程;
在这里插入图片描述
STM32F10x_StdPeriph_Examples:包含标准库所有外设例程;例程内是ST公司提供的模块代码,根据需要可以直接摘取使用;
STM32F10x_StdPeriph_Template:建立一个库开发工程的模板;我们下面建立工程的时候可以效仿这个模板,模板的意思就是这个是ST公司的工程师提供的,但是用不用这个模板看个人爱好,一般我们建立工程都有自己的风格,但关键性的库文件都是一样的;main.c很常见,我们建工程的时候自己建也可以;stm32f10x_conf.h是配置文件;stm32f10x_it.c和stm32f10x_it.h为中断函数,不过内部只包含9个中断函数;

工程的建立

  1. 新建文件夹——重命名:test

  2. 进入test,test内分别建立FWLib,CMSIS,USER,OBJ四个文件夹

  3. 进入3.5.0固件库文件夹,进入到STM32F10x_Stdperiph_Lib_V3.5.0→Libraries→STM32F10x_StdPeriph_Driver,复制inc和src文件夹到test文件夹下的FWLib下;

  4. 进入3.5.0固件库文件夹,进入到STM32F10x_StdPeriph_Lib_V3.5.0→Libraries→CMSIS→CM3→CoreSupport,复制core_cm3.h和core_cm3.c到test文件夹下的CMSIS下;

  5. 进入3.5.0固件库文件夹,进入STM32F10x_StdPeriph_Lib_V3.5.0→Libraries→CMSIS→CM3→DeviceSupport→ST→STM32F10x;复制startup文件夹和Release_Notes,stm32f10x.h和system_stm32f10x.c和system_stm32f10x.h到test文件夹下的CMSIS下

  6. 打开3.5.0固件库文件夹,进入STM32F10x_StdPeriph_Lib_V3.5.0→Project→STM32F10x_StdPeriph_Template,复制main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h到test文件夹下的USER文件夹下;

  7. 开始打开keil5建立工程,project→NEWproject→选择器件类型(我这里默认选择STM32F103ZET6)→OK→NO;

  8. 右键target1→manang components,在Groups框内新建USER,FWLib,CMSIS,STATUP然后OK,

  9. 展开target1,双击USER,分别双击main.c和stm32f10x_it.c加入到USER文件夹;

  10. 双击FWLib,选择FWLib并将FWLib文件夹下的src文件夹下的所有文件添加;

  11. 双击CMSIS,选择CMSIS文件夹,将core_cm3.c和system_stm32f10x.c添加

  12. 双击STARTUP,选CMSIS→startup→arm,将startup_stm32f10x_hd.s添加;

  13. 配置工程:
    晶振=8.0,
    output→create HEX;
    C/C++→Optimization→level3(-O3);
    C/C++→include paths→新建→选中USER,再新建→选中→FWLib→inc,再新建→选中→CMSIS,然后OK
    复制USE_STDPERIPH_DRIVER,STM32F10X_HD到C/C++的define内,然后OK。

  14. 测试:清空main.c 内的全部代码,然后编写如下程序调试;

 #include "stm32f10x.h"
  Int main()
  {
  }
  
  //注意在每个源文件和头文件的最后要空一行,不然会有警告;

如果编译通过就没有问题,可以放心的写自己的代码了;

猜你喜欢

转载自blog.csdn.net/wuyuzun/article/details/82930435
今日推荐