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. [09] 监听器 Listener

    1.事件 1.1 事件的概念 在Servlet中有一个概念叫做监听,顾名思义,就是监听某种事件是否发生.就如你是一家娱乐媒体公司的老板,你派出狗仔队去跟着某些明星,比如你想了解他们的绯闻,或者活动进展 ...

  2. jpa 多对多关系的实现注解形式

    1, 表结构 1)设备表 VTM_DEVICE_INFO create table VTM_DEVICE_INFO ( ID INTEGER not null, SN ) not null, STAT ...

  3. 函数原型属性-JavaScript深入浅出(三)

    前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了this深入浅出 ...

  4. centOS 6 服务管理与服务脚本

    服务管理与服务脚本   linux服务 服务管理与服务脚本 linux服务 服务启动过程详解 chkconfig命令 非独立服务与xinetd进程 一个特殊的服务脚本   服务启动过程详解 在开机启动 ...

  5. 两句话动态修改table数据并提交到后台

    //为所有的input 添加click事件,我将对象的id放入到name属性中,行数放入到alt属性中 $("input").click(function(obj){ //获得当前 ...

  6. [js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)

    接着上文[js高手之路] html5 canvas系列教程 - 状态详解(save与restore),相信大家都应该玩过美颜功能,而我们今天要讲的就是canvas强大的像素处理能力,通过像素处理,实现 ...

  7. mysql操作sql的小技巧

    本篇集中整理一下执行sql的小技巧,这种方式不仅带来了操作上的便捷,也可以保证数据可以数据的安全性. 1:查询数据(保证查询性能) 首先想先解释一下 SELECT * 和 SELECT t.id , ...

  8. 第4章 同步控制 Synchronization ----同步机制的摘要

    同步机制摘要Critical Section Critical section(临界区)用来实现"排他性占有".适用范围是单一进程的各线程之间.它是:  一个局部性对象,不是一个核 ...

  9. Python文件复制(txt文件)

    功能:这个py脚本是把一个txt文件(源文件)复制到另一个txt文件(目的文件)里面 算法思路: 程序首先判断源文件(用exists函数判断)和目的文件是否存在,如果不存在则输出文件路径不存在,如果存 ...

  10. nginx的反向代理功能和缓存功能

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...