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库的更多相关文章

  1. 关于STM32库中 __IO 修饰符(volatile修饰符,反复无常的意思)

    STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay;  这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO ...

  2. STM32库中 __IO 修饰符(volatile修饰符)

    STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO原 ...

  3. Keil5下载STM32库

    1.http://www.keil.com/dd2 2.3.以STM32L051C8为例 下载即可.

  4. STM32库中自定义的数据类型

    在头文件 <stdint.h> 中 1 /* exact-width signed integer types */ typedef signed char int8_t; typedef ...

  5. STM32固件库

    一.STM32固件库开发和传统寄存器开发方式的区别 二.CMSIS标准 CMSIS标准--Cortex Microcontroller Software Interface Standard,是ARM ...

  6. 第9章 初识STM32固件库

    第9章     初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...

  7. 第9章 初识STM32固件库—零死角玩转STM32-F429系列

    第9章     初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...

  8. Arduino库和STM32的寄存器、标准库、HAL库、LL库开发比较之GPIO

    标题: Arduino库和STM32的寄存器.标准库.HAL库.LL库开发比较之GPIO 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#Arduino,#STM32,#库,#开发 ...

  9. 单片机stm32零基础入门之--初识STM32 标准库

    CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Co ...

随机推荐

  1. Hibernate table schema 的设置与应用

    hibernate在实现实体映射时,DB无需强行指定.部署时会较对DB户名和密码,根据用户名以访问的表完成实体映射.如果一个帐号可以访问一个数据库的下多个表,以oracle为例用户user1下面有表t ...

  2. java 利用反射构造泛型类

    1.构造BaseDao泛型类 class BaseDao<T>{ private Class<T> entityClass; // 通过反射获取实际运行的精确类 public ...

  3. JSP获取Cookie对象

    cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器的.通过使用cookie可以标识用户身份,记录用户和密码,跟踪重复用户等.浏览器将cookie以key/value的形式保存到客户机的某 ...

  4. [UIKit学习]01.关于UIView,frame,bounds,center

    UIView是Cocoa大多控件的父类,本身不带事件. UIView的常见用法 @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 ...

  5. AngularJS的运用

      前  言 JRedu AngularJS[1]  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.A ...

  6. Linux入门之常用命令(7)压缩

    compress filename 压缩   -d解压缩  *.Z bzip -d解压缩 -z压缩 *.bz2 bzcat filename .bz2 读取压缩文件内容 gzip -d解压缩  -#压 ...

  7. 一个“.java”文件中是否可以包含多个类(不是内部类)?有什么限制?

    可以,若这个类的修饰符是public则,其类名须与文件名相同.

  8. 入门VMware Workstation下的Debian学习之Vim简单使用(三)

    什么是Vim? Vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计. Vim是从vi发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广 ...

  9. asp.net或javascript判断是否手机访问

    /// <summary> /// 判断手机用户UserAgent /// </summary> /// <returns></returns> pri ...

  10. Linux基本符号

    Linux环境下一些常用的符号 ; 多个命令的分隔符 / 根目录或路径分隔符 > 重定向,数据沿箭头方向流动,原来文件内容会被丢弃 >> 追加重定向,在原来文件结尾追加内容 .. 上 ...