stm32f4xx.h详解

我的上一篇博客中详细讲解了system_stm32f4xx.c文件,在那个文件中,包含了唯一一个头文件,而这个头文件在开发过程中起到至关重要的作用,如果没有这个文件,就像大厦没有了根基,是肯定会倒的,所以,今天我们来深入了了解一下这么重要的文件它的内容到底是怎样的。

受先我们先来看下这个文件的思维导图,以及该文件的介绍。


这段文字已经大概地介绍了一下这个文件的内容,接下来,我们详细解释。

首先,在这里大家可能有点懵逼,这是个什么东西,这就是混合编程的一种用法,在这里我们并没有define __cplusplus,所以我们可以不用关注它,当它不存在吧。

关于这段文字,如果你仔细读,你就会发现一个问题,
根本就没有#define (STM32F40_41xxx),但为什么程序能够编译通过并且正常运行呢,不知道细心的你发现了没有,有这么一段话

就是为了避免每次更换一种型号的单片机都要修改这个文件的麻烦,所以就在我们的IDE上宏定义我们需要的文件名。不知道你还记不记得在配置开发环境的时候,要有这么一个步骤。

就是这个原因,但是,细心的你又会发现如果你在F4的环境下如果你去掉这么一句没有关系,但是F1的环境下就不行(至于为什么我也不知道),因为在这里设置这个宏是为了兼容低版本的MDK,你在新建工程的时候,建立的工程基于什么类型的单片机,内部就会定义相应的宏。

厂家已经把函数封装好了,如果你想使用API函数,那你就把注释去掉就可以了,这里稍微提一下,如果你不调用API函数的话,那么你的代码是可以直接访问外设寄存器的,相对来说速度会更快,但你调用API函数会计较简单。

这个就是调整HSE晶振频率的作用,主要就关注一下上面的提示,如果你不想每次都对这个文件进行修改当你更换芯片的时候,你就可以在IDE上配置HSE的晶振。


这个就是配置处理器和核心外设,很简单的!
接下来就按照我的思维导图来进行讲解。

1. Interrupt Number Definition

我想告诉大家的是,结构体中的成员的顺序是严格按照内存中的中断向量表的顺序来的,这个是不可以弄反了的,不然的话就会出现中断源二受到了中断请求cpu却去执行中断1的服务例程。

Peripheral_registers_structures

这个其实没有什么好说的,就是为每一个外设声明了一个结构体类型,结构体变量中的每一个成员在内存中都是有实体的,且顺序是要和内存中的顺序是一致的每一个成员都用volatile关键字修饰的

Peripheral_memory_map

这个就是内存的映射图,可以参考以下图片

Peripheral_declaration

外设的声明的方式都是一样的,对每一个外设的基地址进行相应的结构体类型指针的强制类型转化,然后进行宏定义,这样就可以很轻松的对外设的寄存器进行操作。

Peripheral Registers_Bits_Definition

该文件中大部分的内容都是对外设寄存器的位定义,而且反式都是差不多的,而且目的只有一个,就是为了方便我们更好的开发,而不需要对寄存器进行配置的时候还要去数第几位。

如果你在文件的开头处将注释删掉,那么该文件就会包含这个头文件,如果你继续追踪这个头文件的话,这个头文件的主要的功能就是包含了API函数的头文件。

由于这个系统头文件是最重要的,所以几乎每一个源文件都会直接或者间接的包含这个头文件,所以这个所有API函数的头文件也几乎被所有源文件包含,那么你直接调用API函数即可。

这段语句的作用也是为了方便开发人员,对寄存器进行操作。

以上就是对该头文件的详细解答,如果有什么地方讲错了的话,你可以留言评论。

stm32f4xx.h文件的详解相关推荐

  1. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  2. Tomcat 的 Server 文件配置详解

    转载自  Tomcat 的 Server 文件配置详解 前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件, ...

  3. C 和 C++ 文件操作详解

    来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...

  4. H.264压缩算法详解

    H.264压缩算法详解 H.264是一种视频高压缩技术,全称是MPEG-4 AVC,用中文说是"活动图像专家组-4的高等视频编码",或称为MPEG-4 Part10.它是由国际电信 ...

  5. linux 查找目录或文件 (详解)

    linux 查找目录或文件  (详解) 查找目录:find /(查找范围) -name '查找关键字' -type d 查找文件:find /(查找范围) -name 查找关键字 -print 如果需 ...

  6. python setting.py_python基础教程:Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

  7. ext4数据恢复实战及文件系统结构详解

    ext4数据恢复实战及文件系统结构详解 一.前言 二.ext4数据恢复实战 三.ext4文件系统结构详解 四.ext4分区结构 五.ext4目录结构 六.目录项的删除特性 七.ext4文件结构 八.最 ...

  8. Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

  9. linux+gunzip解压命令,Linux gunzip解压文件命令详解

    gunzip(gnu unzip) 功能说明:解压文件. 语法:gunzip [-acfhlLnNqrtvV][-s ][文件-] 或 gunzip [-acfhlLnNqrtvV][-s ][目录] ...

最新文章

  1. MySQL创建视图的语法格式
  2. 圣母大学应用计算机数学统计,圣母大学(美国)应用、计算数学与统计学本科专业.pdf...
  3. Google帮助IE浏览器实现对SVG支持
  4. 【Python基础入门系列】第07天:Python 数据结构--序列
  5. 权限管理系统如何分别实现对用户和角色的授权
  6. SpringCloud工作笔记048---RESTful API 中 HTTP 状态码的定义_以及把RESTFul版本号_放到http协议header中_以及RestFul设计时的两个误区
  7. GBK 与GB2312 互查 区位码
  8. Java初级程序员面试总结(三)--Lock篇
  9. 电力系统分析计算机辅助试题,电力系统计算机辅助分析.docx
  10. linux宝塔面板是什么,宝塔面板是什么
  11. 尚学堂JAVA高级学习笔记_2/2
  12. 给女朋友讲解什么是代理模式
  13. matlab中指数信号,Matlab入门篇——正弦信号、实指数信号和复指数信号仿真.ppt...
  14. UI设计初学者必备的工具以及学习路线(附思维导图)
  15. Win10取消文件默认打开方式
  16. 天台人满为患,不如来看下这个Ramnit蠕虫DesktopLayer.exe分析
  17. C# 调用Office Excel 接口方法Quit(),但是Excel进程不退出的解决办法
  18. 【小麦苗课堂】高可用培训(RAC+DG+OGG)--包括11g、12c、18c、19c等版本
  19. 洛谷 P1008 三连击 题解
  20. 基于SSH的婴幼儿产品销售系统的开发与设计毕业设计论文

热门文章

  1. 华为社招嵌入式软件面试_华为OD社招面试(技术二面完)--总结复盘
  2. 加载图片出错时,加载其他图片
  3. 七牛图片上传的使用心得
  4. 正版软件 Windows系统、Office 软件、Microsoft 365 合集
  5. [ERP]IQC,IPQC,PQC,FQC,OQC是什么意思?是干什么的?
  6. 华为鸿蒙国人希望,华为鸿蒙系统,将给国人生活带来巨大改变
  7. jQurey 筛选 查找
  8. MTK平台驱动基本介绍-2
  9. 数码照片回执可以自己在网上弄吗?
  10. 理解siki学院吃豆人案例脚本