STM32标准库的介绍以及使用

初识STM32标准库

因为基于cortex系列芯片采用的内核都是相同的,区别主要为核外的片上的差异(片上外设主要有芯片生产商来定)。这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同芯片厂商生产的cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准。CMSIS层位于硬件层和用户层之间,提供了与芯片生产商无关的硬件抽象层,提供软件接口,疲敝了硬件的差异。
CMSIS标准最为主要的是CMSIS核心层,它包括:

  • 内核函数层:用于访问内核寄存器。由ARM公司提供。
  • 设备外设访问层:提供了片上的核外外设的地址和中断的定义,这个主要由芯片生产商提供。

STM32库目录、文件的功能

库文件可以从ST官网下载,这里以3.5.0版本为例介绍库的构成。

  • libraries:驱动库的源代码及启动文件。
  • Project: 用驱动库写的例子和工程模板。
  • utilities:包含了基于ST官方实验板的例程。
  • stm32f10x_stdperiph_lib_um.chm:库帮助文档,介绍各个外设的函数说明。

CMSIS核心层

libraries文件夹下的CMSIS/CM3就是核心库,其中包括

  • coresupport:这个由ARM公司提供,里面有core_cm3.c和core_cm3.h,实现了内核寄存器的映射,主要操作的是内核外设寄存器。
  • devicesupport/ST/STM32F10x/:里面包含的是ST厂家定义的一些文件。其中startup/arm目录中包含了各种型号板子的启动文件(这里是跟flash的容量来划分的)。stm32f10x.h文件实现了片上外设所有寄存器的映射,是一个非常重要的头文件。system_stm32f10x.c文件实现了STM32的时钟配置,systemInit函数把系统时钟设置为72M。

外设访问接口

STM32F10x_StdPeriph_Driver文件是针对各个芯片厂商编写的驱动,里面有Inc和SRC两个文件夹,分别用来存放头文件和源文件。注意其中还有一个misc.c文件提供了外设对内核中的NVIC的访问接口,在配置中断时,需要把这个文件加入到工程中。

在工程建立时有几个文件需要添加:

  • stm32f10x_it.c 这个文件专门用来编写中断服务函数的。在里面实现中断服务函数的功能,函数名由生产商定义,在汇编启动文件中可以找到。
  • system_stm32f10x.c:这个文件提供芯片上电初始化系统时钟、扩展外部存储器用的函数。systemInit函数在此文件实现。
  • stm32f10x_conf.h:这个文件各个外设的头文件,如有不需要的头文件可以在此文件中注释掉。被包含在stm32f10x.h中。
  • stm32f10x.h:这个文件很重要,片上外设的各个寄存器的映射在这里实现,以及包含需要使用的片上外设的头文件。

库文件的关系如下图
在这里插入图片描述

使用库文件建立工程

上面讲解了STM32库文件的架构,主要是为了在开发中使用库文件方便开发。在大多数时都使用库文件开发,只有在极少数的情况下会使用寄存器编程(如对资源(代码运行时间、内存)有严格要求的中断服务函数中,才会使用寄存器编程)。下面介绍如何使用库文件构建工程。

新建本地工程文件夹

在本地电脑上新建一个“工程模板”,在它之下再创建以下6个文件夹。

  • Doc:用来存放程序说明的文件,由写程序的人添加。
  • Libraries:存放的是库文件。CMSIS里面存放CM3内核相关的库、Periph_driver里面存放外设库文件。
  • Listing:存放编译器编译时候产生的C/汇编/链接的列表清单。
  • output:存放编译产生的调试信息、hex文件、预览信息、封装库等。
  • project:用来存放工程。
  • user:用户编写的驱动文件。其中stm32f10x_conf.h用来配置库的头文件、stm32f10x_it.h以及stm32f10x_it.h中断相关的函数在这里编写。main.c main函数文件。

新建工程

  • 打开KEIL5,新建一个工程,工程名自己取,然后选择CPU型号。工程个人习惯保存在project中。
    在这里插入图片描述
  • 在工程中添加组文件,文件从本地建好的工程文件夹下获取。
    在这里插入图片描述
  • 添加文件,把库文件复制到工程模板对应文件夹的目录下,然后在新建的工程中添加这些文件。双击组文件就会出现添加文件的路径,选择文件既可
    在这里插入图片描述
    创建目录和添加文件也可以直接使用manage project items来处理,直接一步到位。
    在这里插入图片描述

配置魔术棒选项卡:

  • 要是用printf需要在Target中勾选上Use Microlib
    在这里插入图片描述
  • 在output选项中把输出文件夹定位到我们的工程目录下的output文件夹,勾选上create HEX file 则会在编译过程中生成hex文件。
    在这里插入图片描述
  • 在listing选项卡中把输出文件定位到我们工程目录下的“Listing”文件夹。
    在这里插入图片描述
  • **在C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。**头文件路径有误编译会报错
    在这里插入图片描述
    这样就把一个工程建立起来了。下面就可以使用库文件进行开发了
  • 17
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值