初识STM32标准库
因为基于cortex系列芯片采用的内核都是相同的,区别主要为核外的片上的差异(片上外设主要有芯片生产商来定)。这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同芯片厂商生产的cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准。CMSIS层位于硬件层和用户层之间,提供了与芯片生产商无关的硬件抽象层,提供软件接口,疲敝了硬件的差异。
CMSIS标准最为主要的是CMSIS核心层,它包括:
- 内核函数层:用于访问内核寄存器。由ARM公司提供。
- 设备外设访问层:提供了片上的核外外设的地址和中断的定义,这个主要由芯片生产商提供。
STM32库目录、文件的功能
库文件可以从ST官 下载,这里以3.5.0版本为例介绍库的构成。
- libraries:驱动库的源代码及启动文件。
- Project: 用驱动库写的例子和工程模板。
- utilities:包含了基于ST官方实验板的例程。
- stm32f10x_stdperiph_lib_um.chm:库帮助文档,介绍各个外设的函数说明。
CMSIS核心层
libraries文件夹下的CMSIS/CM3就是核心库,其中包括
- coresupport:这个由ARM公司提供,里面有core_cm3.c和core_cm3.h,实现了内核寄存器的映射,主要操作的是内核外设寄存器。
- devicesupport/ST/STM32F10x/:里面包含的是ST厂家定义的一些文件。其中startup/arm目录中包含了各种型 板子的启动文件(这里是跟flash的容量来划分的)。stm32f10x.h文件实现了片上外设所有寄存器的映射,是一个非常重要的头文件。system_stm32f10x.c文件实现了STM32的时钟配置,systemInit函数把系统时钟设置为72M。
外设访问接口
STM32F10x_StdPeriph_Driver文件是针对各个芯片厂商编写的驱动,里面有Inc和SRC两个文件夹,分别用来存放头文件和源文件。注意其中还有一个misc.c文件提供了外设对内核中的NVIC的访问接口,在配置中断时,需要把这个文件加入到工程中。
在工程建立时有几个文件需要添加:
- stm32f10x_it.c 这个文件专门用来编写中断服务函数的。在里面实现中断服务函数的功能,函数名由生产商定义,在汇编启动文件中可以找到。
- system_stm32f10x.c:这个文件提供芯片上电初始化系统时钟、扩展外部存储器用的函数。systemInit函数在此文件实现。
- stm32f10x_conf.h:这个文件各个外设的头文件,如有不需要的头文件可以在此文件中注释掉。被包含在stm32f10x.h中。
- stm32f10x.h:这个文件很重要,片上外设的各个寄存器的映射在这里实现,以及包含需要使用的片上外设的头文件。
库文件的关系如下图

这样就把一个工程建立起来了。下面就可以使用库文件进行开发了
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!