stm32f4xx.h文件的详解
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文件的详解相关推荐
- [转]文件IO详解(二)---文件描述符(fd)和inode号的关系
原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...
- Tomcat 的 Server 文件配置详解
转载自 Tomcat 的 Server 文件配置详解 前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件, ...
- C 和 C++ 文件操作详解
来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...
- H.264压缩算法详解
H.264压缩算法详解 H.264是一种视频高压缩技术,全称是MPEG-4 AVC,用中文说是"活动图像专家组-4的高等视频编码",或称为MPEG-4 Part10.它是由国际电信 ...
- linux 查找目录或文件 (详解)
linux 查找目录或文件 (详解) 查找目录:find /(查找范围) -name '查找关键字' -type d 查找文件:find /(查找范围) -name 查找关键字 -print 如果需 ...
- python setting.py_python基础教程:Django框架的中的setting.py文件说明详解
这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...
- ext4数据恢复实战及文件系统结构详解
ext4数据恢复实战及文件系统结构详解 一.前言 二.ext4数据恢复实战 三.ext4文件系统结构详解 四.ext4分区结构 五.ext4目录结构 六.目录项的删除特性 七.ext4文件结构 八.最 ...
- Django框架的中的setting.py文件说明详解
这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...
- linux+gunzip解压命令,Linux gunzip解压文件命令详解
gunzip(gnu unzip) 功能说明:解压文件. 语法:gunzip [-acfhlLnNqrtvV][-s ][文件-] 或 gunzip [-acfhlLnNqrtvV][-s ][目录] ...
最新文章
- MySQL创建视图的语法格式
- 圣母大学应用计算机数学统计,圣母大学(美国)应用、计算数学与统计学本科专业.pdf...
- Google帮助IE浏览器实现对SVG支持
- 【Python基础入门系列】第07天:Python 数据结构--序列
- 权限管理系统如何分别实现对用户和角色的授权
- SpringCloud工作笔记048---RESTful API 中 HTTP 状态码的定义_以及把RESTFul版本号_放到http协议header中_以及RestFul设计时的两个误区
- GBK 与GB2312 互查 区位码
- Java初级程序员面试总结(三)--Lock篇
- 电力系统分析计算机辅助试题,电力系统计算机辅助分析.docx
- linux宝塔面板是什么,宝塔面板是什么
- 尚学堂JAVA高级学习笔记_2/2
- 给女朋友讲解什么是代理模式
- matlab中指数信号,Matlab入门篇——正弦信号、实指数信号和复指数信号仿真.ppt...
- UI设计初学者必备的工具以及学习路线(附思维导图)
- Win10取消文件默认打开方式
- 天台人满为患,不如来看下这个Ramnit蠕虫DesktopLayer.exe分析
- C# 调用Office Excel 接口方法Quit(),但是Excel进程不退出的解决办法
- 【小麦苗课堂】高可用培训(RAC+DG+OGG)--包括11g、12c、18c、19c等版本
- 洛谷 P1008 三连击 题解
- 基于SSH的婴幼儿产品销售系统的开发与设计毕业设计论文