STM32F4xx固件库

ST公司提供的标准软件库,包含了STM32芯片所有寄存器的控制操作,我们直接学习如何使用ST标准库即可,极大的方便了快速开发。

  • 固件库文件结构

    固件库的文件结构,清晰的表达了固件库文件的关联关系,值得认真看一看:

  • CMSIS标准与库的关系

分析固件库之前要了解一下CMSIS是什么,与固件库有什么关系。

基于Cortex系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的Cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准(Cortex MicroController Software Interface Standard) – Cortex微控制器软件接口标准

从描述中可以看出,CMSIS就是一个软件抽象层,屏蔽相同内核不同外设芯片的差异,用来解决程序的移植性、兼容性问题。如下:

CMSIS是与内核相关的,任何基于这些内核生产的芯片想要编写程序都需要其内核的相关支持;固件库也是必须基于CMSIS开发的。

注意:注意:注意:内核的函数由ARM公司提供,主要是一些内核寄存器的名称、地址定义等;而核外的外设函数则由芯片厂商提供,包括核外外设地址和中断定义等。

CMSIS层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植是有极大的好处的

  • STM32F4xx_DSP_StdPeriph_Lib_V1.4.0 实际文件分析

    本次使用的是V1.4.0版本固件库。如下:

    从上图可以看出,固件库中重要的文件夹是Libraries和Project两个,下面也只分析这两个文件夹。

    • Libraries

Libraries文件夹中有两个文件:CMSIS和STM32F4xx_StdPeriph_Driver,先看CMSIS:

   Device文件夹:该文件夹下的是具体芯片直接相关的文件,包含启动文件、芯片外设寄存器定义、系统时钟初始化功能的一些文件,这是由ST公司提供的。

stm32f4xx.h和systemstm32f4xx.c文件stm32f4xx.h和system_stm32f4xx.c文件stm32f4xx.h和systems​tm32f4xx.c文件
  stm32f4xx.h 这个文件非常重要,是一个STM32芯片底层相关的文件;包含了STM32中所有的外设寄存器地址和结构体类型定义,在使用到STM32标准库的地方都要包含这个头文件。
  system_stm32f4xx.c文件包含了STM32芯片上电后初始化系统时钟、扩展外部存储器用的函数

   Include文件夹:包含了的是位于CMSIS标准的核内设备函数层的Cortex-M核通用的头文件,它们的作用是为那些采用Cortex-M核设计SOC的芯片商设计的芯片外设提供一个进入内核的接口,定义了一些内核相关的寄存器

 core_cm4.h对于M4内核来说是一个非常重要的文件, 所有CM4芯片的库都带有这个文件;跟启动文件一样都是底层文件,都是由ARM公司提供的,遵守CMSIS标准。

再看STM32F4xx_StdPeriph_Driver文件夹:

STM32F4xx_StdPeriph_Driver是ST公司针对每个STM32外设而编写的库函数文件,每个外设对应一个 .c 和 .h 后缀的文件 。

  • Project

stm32f4xxit.c和stm32f4xxconf.h文件stm32f4xx_it.c和stm32f4xx_conf.h文件stm32f4xxi​t.c和stm32f4xxc​onf.h文件
  stm32f4xx_it.c:这个文件是专门用来编写中断服务函数的,在我们修改前,这个文件已经定义了一些系统异常(特殊中断)的接口,其它普通中断服务函数由我们自己添加。但是我们怎么知道这些中断服务函数的接口如何写?是不是可以自定义呢?答案当然不是的,这些都有可以在汇编启动文件中找到
  stm32f4xx_conf.h:这个文件被包含进stm32f4xx.h 文件。ST标准库支持所有STM32F4型号的芯片,但有的型号芯片外设功能比较多,所以使用这个配置文件根据芯片型号增减ST库的外设文件

以上就是STM32F4xx固件库的基本分析了。

STM32F4xx固件库分析相关推荐

  1. STM32F4xx固件库的说明及使用

    一.固件库介绍 1.先从网站上找到STM32F4xx固件库文件 (文件名为STM32F4xx_DSP_StdPeriph_Lib_V1.4.0),这里我上传到了. 2.解压打开. 3.Librarie ...

  2. STM32官方固件库

    1 基于标准外设库的软件开发 1.1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征 ...

  3. STM32固件库文件分析

    STM32固件库文件分析 1.汇编编写的启动文件 startup/stm32f10x.hd.s:设置堆栈指针,设置pc指针,初始化中断向量,配置系统时钟,对用c库函数_main最后去c语言世界里. 2 ...

  4. STM32启动过程解析-2.02固件库启动文件分析

    源:STM32启动过程解析-2.02固件库启动文件分析 转载于:https://www.cnblogs.com/LittleTiger/p/9205372.html

  5. stm32f4xx标准外设固件库

    原文网址:http://www.cnblogs.com/King-Gentleman/p/4369381.html STM32F4的相关资料:http://www.stmcu.org/document ...

  6. 野火STM32学习笔记一、固件库文件分析

    STM32固件库文件分析 汇编编写的启动文件 startup_stm32f10x_hd.s: 设置堆栈指针.设置PC指针.初始化中断向量表.配置系统时钟.调用C库函数main最终去到C的世界 时钟配置 ...

  7. stm32f4xx标准外设固件库(By King先生)

    原文网址:http://www.cnblogs.com/King-Gentleman/p/4369381.html STM32F4的相关资料:http://www.stmcu.org/document ...

  8. STM32F407学习_搭建固件库工程模板

    1.标准外设库概述 STM32标准外设库是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间 ...

  9. srm32f4按键蜂鸣器_stm32 用中断实现按键点灯和蜂鸣器鸣叫(固件库版)

    引言 这是这篇博文的升级版本 https://blog.csdn.net/qq_44885018/article/details/103050388 上面轮询的方法,今天主要讲中断的方法.为了方便不要 ...

  10. stm32--对固件库的认识2

    背景 其实在使用FPGA的SDK编程的时候,就有过这么一个问题,就是,你不知道固件库文件描述的C语言的意思,看起来特别困难.这一点在STM32中仍然会是一个问题,这篇文章就是要解决这个问题,跨越对固件 ...

最新文章

  1. 科普:BCH能够买什么?如何使用BCH买东西?
  2. 微服务软件架构的认识和设计模式
  3. 面向对象编程(第四篇)
  4. 文件下载至storage_如何防止Storage Sense在Windows 10上删除下载的文件
  5. 解决HbuiderX将uni-app开发的项目运行到小程序编译后文件vendor.js太大的问题
  6. 【BZOJ】1969: [Ahoi2005]LANE 航线规划
  7. font-family:中文字体的英文名称 (宋体 微软雅黑)
  8. echarts曲线图 鼠标位置偏移与提示框的大小设置(与竖线位置偏离)
  9. access有效性规则不为空值_Access 有效性规则/验证规则
  10. HN2015集训 永远亭的竹笋采摘
  11. cshop缓存清理-限制或禁用ECShop缓存
  12. 什么是JAVAweb?
  13. GO微服务实战之红包系统
  14. SSM源码分析之23种设计模式(策略模式和模板模式)
  15. @Aspect无法使用的问题
  16. WinCE EBOOT的入口Startup.s
  17. 报错信息 terminate called after throwing an instance of ‘std::cad_alloc‘ what():std::bad_alloc
  18. excel的使用技巧大全
  19. ssas连接mysql_BI之SSAS完整实战教程1 -- 开篇, BI简介 SSAS简介
  20. SpringAOP - @within和@annotation区别

热门文章

  1. Gstreamer uridecodebin 插件手动选择解码器
  2. 817c语言程序设计,全国名校C语言程序设计考研真题汇编
  3. 【动画演示软件】Focusky教程 | 加入 配音/录音/字幕
  4. C语言课设家庭财务小管家(大作业)
  5. Python抓取行政区域划分存入MySQL数据库
  6. 什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?
  7. 兄弟连php课程大纲,LAMP兄弟连PHP课程学习笔记 第四天 流程控制分支语句
  8. python实现excel到word转换
  9. 网络安全基础——对称加密算法和非对称加密算法(+CA数字证书)
  10. USB 鼠标接线顺序