STM32
直播中

康大争

7年用户 2155经验值
私信 关注
[问答]

探讨一下stm32f10x库文件

什么是STM32库呢?stm32f10x库文件有哪些呢?

回帖(1)

凌云志

2021-11-29 10:20:43
      用过stm32f10x有一段时间了,但是对其库文件一直没有一个清晰的了解,上午心血来潮,就想整理一下。  
      首先什么是stm32库,库在c51单片机中应该是看不到,因为c51单片机都是直接操作寄存器来控制芯片,比如中断,定时器,GPIO等等,配置的时候,需要一遍又一遍的看数据手册,查看寄存器表,看看需要配置寄存器的哪些位,是配置0还是1。51单片机资源少,直接配置寄存器所以看起来并不是那么麻烦,但是stm32f10x的资源相比普通51单片机多较多,直接配置寄存器会变得很繁琐。这时候就出现了库。
       库是架设(位于)在寄存器和用户驱动程序之间的代码,向上给用户提供配置底层寄存器的接口,向下得到用户的配置信息后,对底层寄存器进行配置。因为库的存在,用户不需要直接按位配置底层寄存器了,只需配置库提供的函数接口,对寄存器的操作,交给库函数来完成。
       STM32的3.5版库可以直接从官网获得,进入库目录STM32F10x_StdPeriph_Lib_V3.5.0,其中有Libraries文件夹,里面包含驱动库的源码和启动文件;其他比如Project文件夹中是一些例程;还有HTML文档,是库帮助文档,主要是告诉用户如何使用驱动库来编写自己的应用程序。
      双击打开Libraries文件夹,可以看到里面有俩个文件夹,CMSIS和STM32F10x_StdPeriph_Driver.先来说说什么是CMSIS,考虑一下,应该是个简写,其全称是cortex microcontroller software interface standard,是ARM与芯片厂商建立的一种标准,CMSIS标准中包含内核函数层和设备外设访问层,内核函数层包含内核寄存器的名称、地址定义,主要有ARM公司提供;设备外设访问层,提供了核外外设或者片上外设的地址和中断定义,主要有芯片厂商提供。
      先说说CMSIS文件夹,CMSIS->CM3,可以看到CoreSupport和DeviceSupport俩个文件,俩个文件分别指的是内核函数层和核外外设访问层。点开CoreSupport文件夹可以看到core_cm3.h和core_cm3.h文件,core_cm3.c文件包含进入M3内核的接口,内核寄存器等等,core_cm3.c和启动文件一样,有ARM公司提供,都是底层文件。
       进入DeviceSupport->ST->STM32F10x文件夹,可以看到:包含stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h文件以及startup文件夹。先谈谈startup文件夹吧,里面是一系列的系统启动文件,都是由会变语言编写的,启动文件的是处理器上电复位后最先运行的一段汇编程序,其作用是初始化堆栈指针SP、初始化程序计数器PC、设置堆、栈的大小、设置异常向量的入口地址,配置外部的SRAM,设置C库的入口分支为_main.所以启动文件作用很重要。
       此外,stm32f10x.h文件是一个非常底层的文件,它的作用是定义了寄存器的地址和使用的结构体封装,处理器厂商都会对内存的操作封装成一个宏,即我们所说的寄存器,这些都是定义在stm32f10x.h文件中。system_stm32f10x.c是由st公司提供的,该文件的功能是设置系统的时钟和总线时钟,system_stm32f10x.h是systsm_sym32f10x.c的头文件,system_stm32f10x.c会用到锁相环(PLL,因为这个文件就是配置时钟嘛),所以必然要用到寄存器,所以需要包括stm32f10x.h文件。
        最后说说STM32F10x_StdPeriph_Driver文件夹,这里是设备外设部分函数库,里面的src文件夹是是设备外设的驱动程序,inc是对应的头文件。用到什么设备外设,就添加相应的设备外设文件进去。
     
举报

更多回帖

发帖
×
20
完善资料,
赚取积分