stm32f4xx.h文件的详解

16 篇文章 30 订阅

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函数即可。
在这里插入图片描述
这段语句的作用也是为了方便开发人员,对寄存器进行操作。

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

扫码关注公众号,领取免费学习资料。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值