STM32标准库(固件库)分析

您所在的位置:网站首页 STM32官网外设库 STM32标准库(固件库)分析

STM32标准库(固件库)分析

2024-07-16 04:53| 来源: 网络整理| 查看: 265

STM32标准库(固件库)分析 STM32标准外设库(固件库)概述

STM32标准外设库之前的版本也称固件函数库或简称固件库,是⼀个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每⼀个外设的驱动描述和应⽤实例,为开发者访问底层硬件提供了⼀个中间API,通过使⽤固件函数库,⽆需深⼊掌握底层硬件细节,开发者就可以轻松应⽤每⼀个外设。因此,使⽤固态函数库可以⼤⼤减少⽤户的程序编写时间,进⽽降低开发成本。每个外设驱动都由⼀组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由⼀个通⽤API (application programming interface 应⽤编程界⾯)驱动,API对该驱动程序的结构,函数和参数名称都进⾏了标准化。

使用标准外设库开发的优势

简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。

STM32F10XXX标准外设库结构与⽂件描述 标准外设库的文件结构(STM32F10x_StdPeriph_Lib_V3.5.0)

在这里插入图片描述

文件夹说明_htmresc存放CMSIS LOGO图标和ST公司的LOGO图标Libraries库源码和启动文件ProjectST公司提供的外设驱动例程和标准库工程模板UtilitiesST官方评估板的例程,一般不需要用到Release_Notes.html库版本更新说明stm32f10x_stdperiph_lib_um.chm库使用帮助文档

在使用标准库开发时,我们需要把Libraries目录下的库函数文件添加到工程中,并查阅库帮助文档来了解ST提供的库函数,这个文档说明了每一个库函数的使用方法。

Libraries

灰色底的表示文件夹,白底的表示文件

在这里插入图片描述

core_cm3.c、core_cm3.h

这两个文件位于“Libraries\CMSIS\CM3\CoreSupport”目录下,说明此文件属于CMSIS标准文件,是用来提供进入M3内核的接口文件,属于CMSIS的核心文件,由ARM提供。对于所有M3内核的芯片来说这个文件都是相同的,不需要我们修改。

CMSIS标准的英文全称是Cortex Microcontroller Software Interface Standard,翻译过来就是ARM Cortex微控制器软件接口标准。因为基于Cortex内核的芯片生产厂商有很多,不只是ST公司。为了解决不同厂家生产的Crotex芯片软件兼容问题,ARM公司和其他芯片厂商制定了这个CMSIS标准。

在这里插入图片描述

基于CMSIS标准的软件架构主要分为以下4层: 用户应用层、操作系统及中间件接口层、CMSIS层、硬件寄存器层。

其中CMSIS层起着承上启下的作用:

一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。

其中ARM提供了下列部分:

内核设备访问层:包含了用来访问内核的寄存器设备的函数。

中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。

芯片供应商扩展下列软件层:

外设访问层:提供片上所有外设定义的函数。

CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有 CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库函数必须按照 CMSIS 这套规范来设计。

其实不用这么讲这么复杂的,一个简单的例子,我们在使用 STM32 芯片的时候首先要进行系统初始化,CMSIS 规范就规定,系统初始化函数名字必须为 SystemInit,所以各个芯片公司写自己的库函数的时候就必须用 SystemInit 对系统进行初始化。CMSIS 还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。比如函数GPIO_ResetBits 这个函数名字也是不能随便定义的,是要遵循 CMSIS 规范的。

stm32f10x.h

stm32f10x.h是STM32F10x的头文件,类似于51单片机的reg.51,在开发STM32F10x程序的时候基本上都会调用这个头文件,可见其重要性。此文件内部封装了STM32的总线、内存和外设寄存器等,实现了内核之外的外设寄存器映射,同时该文件还包含了一些时钟相关的定义和中断相关定义等。

system_stm32f10x.c、system_stm32f10x.h

system_stm32f10x.h是片上外设接入层系统头文件。主要是申明设置系统及总线时钟相关的函数。与其对应的源文件是system_stm32f10x.c。这个文件里面有一个非常重要的SystemInit()函数申明,这个函数在我们系统启动的时候都会调用,用来设置系统的整个系统和总线时钟。

startup_stm32f10x_xd.s

编译器启动文件;在后面创建工程模板时,要将STM32的启动文件添加进来,否则系统不能启动。ST固件库提供的启动文件有多,需根据使用的STM32芯片来选择,若开发板上使用的是高容量的STM32F1芯片,选择startup_stm32f1 0x_hd.s启动文件

启动文件主要是进行堆栈之类的初始化,中断向量表以及中断函数定义。启动文件要引导进入main 函数

文件说明startup_stm32f10x_ld.sSTM32小容量产品启动文件startup_stm32f10x_md.sSTM32中容量产品启动文件startup_stm32f10x_hd.sSTM32大容量产品启动文件

小容量:FALSH



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3