2_认识STM32库
2_认识STM32库
STM32库是由ST公司针对STM32提供的函数接口API,开发者可以调用这些函数接口来配置STM32的寄存器,使得开发人员得以脱离最底层的寄存器操作,开发快速。
库是架设在寄存器和用户驱动层之间的代码,向下处理与寄存器相关的配置,向上为用户提供配置寄存器的接口。
CMSIS标准:
STM32采用的是CORTEX-M3的内核,内核是ARM公司设计的处理器体系结构,ST公司负责设计的是内核之外的部件,被称为核外外设,片上外设,设备外设。

基于CORTEX的系列芯片的内核是相同的,区别主要是核外的片上外设的差异,这些差异导致软件在同内核,不同外设的芯片上移植出现困难,为了解决不同生产厂商生产的Cortex微控制器软件的兼容问题,ARM公司与芯片厂商建立了CMSIS标准,所谓CMSIS标准实际上就是新建了一个抽象层。

CMSIS标准中主要的是CMSIS核心层,它包括了
内核函数层:其中包含用于访问内核寄存器的名称,地址定义,主要是ARM公司提供;
设备外设访问层:提供了片上的核外外设的地址和中断定义,主要是芯片生产商提供。
库文件的介绍:
core_cm3.c和core_cm3.h,它们的作用是为那些采用CORTEX-M3核的设计SOC的芯片商设计芯片外设提供进入M3内核的接口。
core_cm3.c文件还有一些与编译器相关的条件编译语句,用于屏蔽不同编译器的差异,里面包含了一些跟编译器相关的信息,如RealView Compiler,ICC Compiler,GNU Compiler.
较重要的是core_cm3.c文件中包含了stdin.h这个头文件,这是一个ANSI C文件,是独立于处理器之外的,位于RVMDK目录下,主要作用是提供了一些新类型的定义。这些新类型的定义屏蔽了在不同的芯片平台上一些差异,我们以后使用新类型如int8_h,int16_h。
system_stm32f10x.c文件,设置系统时钟和总线时钟,在实现系统时钟的时候需要用到锁相环PLL,这就需要操作寄存器,所以包含了stm32f10x.h头文件。
stm32f10x.h,所有的厂商把对内存的操作封装成一个宏,包含在相应的开发环境中。
startup_stm32f10x_md.s,是由汇编编写的系统启动文件,不同的文件对应不同的型号,如下图

总的来说,启动文件的作用是:

inc:外设的头文件,src:外设的源文件,这里面有一个特殊的misc.c的文件,提供了外设对内核中的NVIC(中断向量控制器)的访问函数。
stm32f10x_it.c,是专门用来编写中断服务函数的,在我们修改前,这个文件已经定义了一些系统异常的接口,其他普通的中断服务函数由我们自己添加。
stm32f10x_conf.h,这个文件被包含进stm32f10x.h文件,是来配置使用了什么外设的头文件,用这个头文件我们可以很方便地增加或删除上面driver目录下的外设驱动函数库。

初识库函数

2_认识STM32库的更多相关文章
- 关于STM32库中 __IO 修饰符(volatile修饰符,反复无常的意思)
STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO ...
- STM32库中 __IO 修饰符(volatile修饰符)
STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO原 ...
- Keil5下载STM32库
1.http://www.keil.com/dd2 2.3.以STM32L051C8为例 下载即可.
- STM32库中自定义的数据类型
在头文件 <stdint.h> 中 1 /* exact-width signed integer types */ typedef signed char int8_t; typedef ...
- STM32固件库
一.STM32固件库开发和传统寄存器开发方式的区别 二.CMSIS标准 CMSIS标准--Cortex Microcontroller Software Interface Standard,是ARM ...
- 第9章 初识STM32固件库
第9章 初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- 第9章 初识STM32固件库—零死角玩转STM32-F429系列
第9章 初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- Arduino库和STM32的寄存器、标准库、HAL库、LL库开发比较之GPIO
标题: Arduino库和STM32的寄存器.标准库.HAL库.LL库开发比较之GPIO 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#Arduino,#STM32,#库,#开发 ...
- 单片机stm32零基础入门之--初识STM32 标准库
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Co ...
随机推荐
- 03标准对象-02-RegExp 正则表达式
1.基本概念 和 定义 用一种描述性的语言来给字符串定义一个规则,你可以形象地理解正则表达式是一个"框",凡是符合大小形状条件的字符串,都算是"匹配"了. JS ...
- Jmeter运行结果分析
1.聚合报告 以上就是我们所关心的结果 Label:页面或请求名称 Samples:运行的线程数(也可理解为请求数) Average:平均响应时间 Median:响应时间的中值 90% Line:90 ...
- Failed to load the JNI shared library "XXXXXXX"
今天启动Eclipse的时候出现了这个问题,经过查找, 一般来说这种问题都是因为eclipse 和Java 的兼容性不一致所导致的. 1) 查看Eclipse 和Java 版本 那么我们需要分别查看下 ...
- 树莓派3 B+ 的摄像头简单使用(video-streamer)
一.首先在某东上购买树莓派摄像头 我的买的硬件张这个样子的(CSI接口摄像头): 正视图 ...
- javascript 单元测试初入门
1.使用mocha工具实现单元测试 ①首先准备node环境 ②安装mocha:npm install mocha 也可以进行全局安装 npm install global mocha ③安装断言库:n ...
- mxnet的训练过程——从python到C++
mxnet的训练过程--从python到C++ mxnet(github-mxnet)的python接口相当完善,我们可以完全不看C++的代码就能直接训练模型,如果我们要学习它的C++的代码,从pyt ...
- The Super Powers
The Super Powers Time Limit: 1000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu [Subm ...
- MySQL之最基本命令
前言:以下是数据库最基础最常用的命令,特别适用初学者练习,希望通过不断练习这些命令来熟练操作.巩固基础,因为只有不断地练习才能将知识真正变成自己的东西. 快速查看以下内容: 操作 命令 创建数据库 C ...
- Java公开课-01.类和对象
一,类和对象的含义 1.类:类是具有相同属性(静态特征)和行为(功能 )的一系列事物的集合. eg:以下俩者是不是类 1)汽车 √ 2)小胖桌子上那个红色的杯子 × 2.对象:被精确限定到一个特殊 ...
- FPGA多时钟处理应用
FPGA项目设计中,通常会遇到多时钟处理.即一个PLL输出多个时钟,根据条件选择合适的时钟用作系统时钟.方案一: 外部晶振时钟进入PLL,由PLL输出多个时钟,MUX根据外部条件选择时钟输出做为系统使 ...