STM32学习 | 初识固件库,固件库应该是什么样子的?


一、固件库是什么?

所谓固件库,这里指的是STM32的标准外设固件库,以STM32F103为例,其固件库英文全称为STM32F10x Standard Peripherals Firmware Library 。

     在STM32F103的官方固件库手册首页中,有对于固件库的解释:

This library is a firmware package which contains a collection of routines, data structures and macros covering the features of STM32 peripherals. It includes a description of the device drivers plus a set of examples for each peripheral. The firmware library allows any device to be used in the user application without the need for in-depth study of each peripheral’s specifications.

     中文释义为:

这个库是一个固件包,它包含了一系列的例程、数据结构和宏,涵盖了STM32外设的功能,包括设备驱动程序的描述以及为每个外设配套的一组例子。

该固件库允许在用户应用中使用任何设备,而不需要深入研究每个外设的规格。

二、固件库应该包含哪些文件?

  1. 汇编写的启动文件

    startup_stm32f10x_hd.s :设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数去到C的世界。

  2. 时钟配置文件

    system_stm32f10x.c :把外部时钟HSE=8M,经过PLL倍频为72M。

  3. 内核相关的文件

    (1)符合“CMSIS” —— Cortex 微控制器软件接口标准,是ARM公司设计的与ST等供应商无关的硬件抽象层,使不同的单片机厂家做到相对兼容。

    core_cm3.h : 实现了内核里面外设的寄存器映射。

    core_cm3.c

    (2)NVIC(嵌套向量中断控制器)、SYSTICK(系统滴答定时器),这一部分是ST公司对ARM的内核裁剪后定制的内容。

    misc.h

    misc.c

  4. 片上外设相关的文件

    stm32f10x.h :实现了片上外设的寄存器映射(给寄存器的地址取个别名)。

    以下的“xx” :包含GPIO、USART、I2C、SPI、FSMC等等各种外设,数量很多。

    stm32f10x_xx.c : 外设的驱动函数库文件(比如GPIO的置位和复位函数)。

    stm32f10x_xx.h : 存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明。

  5. 头文件的配置文件

     

    Stm32f10x_conf.h : 头文件的头文件,里面包含了以下头文件。

    //stm32f10x_usart.h

    //stm32f10x_i2c.h

    //stm32f10x_spi.h

    //stm32f10x_adc.h

    //stm32f10x_fsmc.h

    ……

    为了方便在程序中包含各种外设头文件,所以有了这一配置文件,在实际程序中,此文件被写在stm32f10x.h的最后。所以程序中只需包含stm32f10x.h就够了。
  6. 专门存放中断服务函数的c文件

    stm32f10x_it.c

    stm32f10x_it.h

    中断服务函数也可以随意放在其他地方,但是为了方便和统一,一般都放在stm32f10x_it.c里面。

 

总结:固件库编程相对于寄存器编程有开发效率快,节省精力的好处。分析固件库的组成,对理解其功能和原理有所帮助。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM