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 ...
随机推荐
- Linux下Birt、JTreeChart中文乱码问题解决办法
Linux下JTreeChart,Birt等报表工具显示中文乱码解决 1) 现象: 在Windows上生成的报表图片展示正常,但是在Linux上显示(怪异的小方块“口”): 2)问题定位: 这是lin ...
- Linux环境下启动MySQL数据库出现找不到mysqld.sock的解决办法!
问题: 在普通用户权限下运行:mysql -u root -p,回车之后如果会出现如下错误:ERROR 2002 (HY000): Can't connect to local MySQL serve ...
- 实验:体会Oracle权限/角色赋予的差异
环境:Oracle 11.2.0.4 目的:验证业务用户的权限/角色赋予的差异 现在创建两个用户jingyu2和jingyu3: SYS@jyzhao1> create user jingyu2 ...
- ”TCP连接“究竟是什么意思?
我们经常听到"建立TCP连接","服务器的连接数量有限"等,但仔细一想,连接究竟是个什么东西,是和电话一样两端连起一根线?似乎有点抽象不是么? 1. 久违的分组 ...
- CANVAS模仿龙卷风特效
大学时候,有一段时间对flash比较感兴趣.去图书馆借了一本很厚很厚的falsh书籍. 翻了几页之后,就再没有往后看过.印象比较深的是作者说他用flash完成了一个龙卷风效果. 一直到现在我也没有看到 ...
- java基础解析系列(七)---ThreadLocal原理分析
java基础解析系列(七)---ThreadLocal原理分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...
- 第一次安装jshint,jshint新手使用记录
刚刚出来工作的渣渣,第一次进入这样比较正规的公司,各个开发流程都比较严格,代码也是要经过jshint的检测才能上传到svn才能成功打包项目.所以我这种技术都半桶水的职场开发小白,也是第一次用jshin ...
- Sublimetext3安装Emmet插件步骤
看清楚哦~~这是Sublime text 3不是2的版本,两者的安装还是有区别的,下面的方法是我感觉比较简单的,其他的要命令什么的感觉太复杂了,经测试是OK的. 先关闭Sublime text 3: ...
- ADALINE模型
ADALINE模型即自适应线性单元(Adaptive Linear Neuron),主要用于信号处理中的自适应滤波.预测和模式识别.其结构图如下 输入向量X=(x0,x1,x2,...,xn)T每个输 ...
- eslint使用
参考文档 http://www.cnblogs.com/hahazexia/p/6393212.html http://blog.guowenfh.com/2016/08/07/ESLint-Rule ...