32固件库分析

发布于:2022-12-22 ⋅ 阅读:(431) ⋅ 点赞:(0)

目录

1-汇编编写的启动文件

2-时钟配置文件

3-外设相关的

4-内核相关的

5-头文件的配置文件

6-专门存放中断服务函数的C文件


1-汇编编写的启动文件


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

解析

STM32程序运行前是先进入这个staatup_stm32f10x_hd.s这个汇编程序的,在这里面完成一系列的操作,比如设置堆栈指针、设置PC指针、初始化中断向量、配置系统时钟注:虽然设置好了这些,但是并没有启动,所以我们要用的时候还是的自己去写程序启动的),最后就是进入到我们编写的main函数中去。

2-时钟配置文件


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

 解析

这个文件是已经写好的,并且包含汇编程序中,所以待程序进入main函数时,时钟倍频已经安排好了。

至于为什么要使用这个把时钟频率加倍呢?

为了达到系统要求。

3-外设相关的


       

 stm32f10x.h:实现了内核之外的外设的寄存器映射
        xxx:GPIO、USRAT、I2C、SPI、FSMC
        stm32f10x_xx.c:外设的驱动函数库文件
        stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明

 解析:

stmf10x.h这个文件中就是很多的地址,寻找出要使用的寄存器,然后让他们分别对应着相应的功能。

头文件就是.h结尾的,在这里面放的就是我们需要使用的结构体、宏定义参数、结构成员参数(可使用枚举类型),还有就是.c文件里函数的声明。

而.c文件中存放的是针对外设的驱动配置 。  

4-内核相关的


        

CMSIS - Cortex 微控制器软件接口标准
        core_cm3.h:实现了内核里面外设的寄存器映射
        core_cm3.c:内核外设的驱动固件库

        NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)
        misc.h
        misc.c

解析:

这些是固件库提供的相应函数,如果是初学的话,没必要搞那么清楚,待学到后面就是明白啥意思。

5-头文件的配置文件


    

    stm32f10x_conf.h:头文件的头文件
    //stm32f10x_usart.h
    //stm32f10x_i2c.h
    //stm32f10x_spi.h
    //stm32f10x_adc.h
    //stm32f10x_fsmc.h
    ......

解析:

为了避免引用函数时,多次引用头文件,也就是为了避免头文件过多的情况出现,我们编写一个头文件,里面包含着所以的头文件,那么以后调用的时候就只需要调用一个头文件就可以了。该头文件就叫做头文件的头文件

6-专门存放中断服务函数的C文件

stm32f10x_it.c
stm32f10x_it.h

中断服务函数你可以随意放在其他的地方,并不是一定要放在stm32f10x_it.c

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>

int main(void)
{
    // 来到这里的时候,系统的时钟已经被配置成72M。
}

解析:

因为中断是经常要使用的一个功能,所以就单独为它开辟一个函数;


注:参考野火STM32