0%

stm32库

STM32库

什么是STM32库

STM32 库是由 ST公司针对 STM32 提供的 函数接口,即 API ( Application Program Interface ) ,开发者可调用这些函数接口来配置 STM32 的寄存器,使开发人员得以 脱离最底层的寄存器操作,有开发快速,易 于阅读,维护成本低等优点。
==库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器
直接相关的配置,向上为用户提供配置寄存器的接口
==

库目录,文件简介

Libraries 文件夹下是驱动库的源代码及启动文件。
Project 文件夹下是用驱动库写的例子跟一个工程模板。

  • core_cm3.c 文件
    在CoreSupport 中的是位于 CMSIS 标准的 核内设备函数层 的 M3 核通用
    的源文件
    cor e_cm3.c
    和头文件
    core_cm3.h ,它们的作用是为那些采用 Cortex-M3 核设计 SOC 的芯片商设计的芯片外设提供一个进入 M3 内核的接 口。这两个文件在其它公司的 M3 系列芯片也是相同的。

core_cm3.c
文件还有一些与编译器相关条件编译语句,用于屏蔽不同编
译器的差异

  • system_stm32f10x.c
    在DeviceSupport文件夹下的是==启动文件、 外设寄存器定义 & 中断向量 定义层==的一些文件,这是由 ST公司提供的。
    system_stm32f10x.c遵守CMSIS标准。该文件的功能是==设置系统时钟和总线时钟==。
    还要通过 M3 核的核内寄存器来对时钟进行倍频,分频

  • stm32f10x.h
    Libraries \ CMSIS \ Core \ CM3 \ startup \ arm
    文件夹下是由汇编编写的系统启动文件不同的文件对应不同的芯片型号,在使用时要注意

文件名的英文缩写的意义如下:
cl:互联型产品,stm32f105/107 系列
vl:超值型产品,stm32f100 系列
xl:超高密度(容量)产品,stm32f101/103 系列
ld:低密度产品,FLASH 小于 64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH 大于 128

启动文件是任何处理器在上点复位之后最先运行的一段汇编程序。在我们 编写的 c 语言代码运行之前,需要由汇编为 c 语言的运行建立一个合适的环
境,接下来才能运行我们的程序。

启动文件的作用是

  1. 初始化堆栈指针 SP;
  2. 初始化程序计数器指针 PC;
  3. 设置堆、栈的大小;
  4. 设置异常向量表的入口地址;
  5. 配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没 有外部 SRAM);
  6. 设置 C库的分支入口__main(最终用来调用 main 函数);
  7. 在 3.5 版的启动文件还调用了在
    system_stm32f10x.c
    文件中的
    SystemIn i () 函数配置系统时钟,在旧版本的工程中要用户进入 main 函数自己调用SystemIni () 函数。
  • STM32F10x_StdPeriph_Driver
    Libraries \ STM32F10x_StdPeriph_Driver 文件夹下有
    inc (include 的
    缩写)跟
    src (source 的简写)这两个文件夹,这都属于 CMSIS 的 设备外设函
    数 部分。 src 里面是每个设备外设的驱动程序,这些外设是芯片制造商在 Cortex-M3 核外加进去的.

特别的misc.c 文件,这个文件提供了外设 对内核中的 NVIC(中断向量控制器)的访问函数,在配置中断时,我们必须把这 个文件添加到工程中。

  • stm32f10x_it.c、stm32f10x_conf.h
    在库目录的 \Project\STM32F10x_StdPeriph_Template 目录下,存放了官方的一个库工程模板,我们在用库建立一个完整的工程时,还需要添加这个目录下的stm32f10x_it.c 、 stm32f10x_it.h、stm32f10x_conf.h 这三
    个文件。
    stm32f10x_it.c,是专门用来编写==中断服务函数==的,在我们修改前,这个文件已经定义了一些系统异常的接口,其它普通中断服务函数由我们自己添加。

    库各文件间的关系

STM32 库文件结构

STM32结构及库层次关系

CMSIS标准

image
内核函数层: 包含用于访问内核寄存器的名称、地址定义,主要有ARM公司(生产内核)提供;
设备外设访问层: 提供片上的核外外设的地址和中断定义,由芯片生产商提供。