在《初识STM32》中已经将了如何从官网下载固件库STM32F10x_StdPeriph_Lib_V3.5.0。这里下载就不做介绍了。 下面我们开始讲解STM32固件库的结构。
我主要需要用到的是Libraries文件夹下面这里两个文件夹中的目录:CMSIS STM32F10x_StdPeriph_Driver ,这两个目录包含 固 件 库 核 心 的 所 有 子 文件夹和文。件其中CMSIS目录下面是启动文件 STM32F10x_StdPeriph_Driver 放的是 STM32 固件库源码文件。源文件目录下面的 inc 目录存放的是 stm32f10x_xxx.h 头文件,无需改动。 src 目 录下面放的是 stm32f10x_xxx.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库的核心文件,每个外设对应一组文件。Libraries 文件夹里面的文件在我们建立工程的时候都会使用到。Project 文件夹下面有两个文件夹。面存放这 ST 官方提供的固件实例源码,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,。 STM32F10x_StdPeriph_Template 文件夹下面存放的是工程模板。Utilities 文件下就是官方评估板的一些对应源码,这个可以忽略不看。
下面我们要着重介绍 Libraries 目录下面几个重要的文件。core_cm3.c 和 core_cm3.h 文件位于\Libraries\CMSIS\CM3\CoreSupport 目录下面的,这个就
是 CMSIS 核心文件,提供进入 M3 内核接口,这是 ARM 公司提供,对所有 CM3 内核的芯片都一样。你永远都不需要修改这个文件。和 CoreSupport 同一级还有一个 DeviceSupport 文件夹。 DeviceSupport\ST\STM32F10xt 文件
其中 system_stm32f10x.c 和对应的头文件 system_stm32f10x.h 文件的功能是设置系统以及总线时钟,这个里面有一个非常重要的 SystemInit()函数,这个函数在我们系统启动的时候都会调用,用来设置系统的整个时钟系统。stm32f10x.h 文件存放寄存器的定义和相关结构体以及宏定义。startup 文件夹存放启动文件,可根据芯片容量大小选择合适的启动文件
startup_stm32f10x_ld.s: 适用于小容量 产品
startup_stm32f10x_md.s : 适用于中等容量产品
startup_stm32f10x_hd.s: 适用于大容量产品
启动文件主要是进行堆栈之类的初始化, 中断向量表以及中断函数定义。启动文件要引导进入 main 函数。 Reset_Handler中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死循环。 Reset_handler 在我们系统启动的时候会调用,下面让我们看看 Reset_handler 这段代码:
这里是汇编代码,不懂汇编也没有关系,我们只要知道是怎么回事就行。首页在进入main函数之前进行了,调用了SystemInit系统初始化函数。本函数在systen_stm32f10x.c中:
|