首先说下我寄存器里面用的是stm32f4xx.h文件,而HAL库里面的是stm32f407xx.h文件,这两个文件
从本质上来说是一样的,都是必须的头文件之一,因此讲一个另一个也应该会了的!!!
最近一直痴迷于HAL库的代码实现,然后情不自禁去翻了一遍stm32f407xx.h 文件,突然发现还蛮有意思
之前用寄存器写时钟配置翻过system_stm32f4xx.c 和 启动文件 ,算是大概有点了解唯独差了这个文件
这次算是补上了
下面正式开始/**********************************************************************************************/1.关于开头使用标准c的说明extern "C"{//Insert the coding you want here}这个操作是关于标准C的强制使用,你可以理解为下面的代码全部按标准C的要求来,就算是使用G++编译器那么这段代码执行后也是按标准C来,这个对于可移植性应该特别好,也是为了适应不同的编译器和IDE/**********************************************************************************************/2.接下来就是关于中断优先级了一个enum 包含了82个可编程的中断优先级,这段是为了NVIC而设计的,所以如果是想实现中断的话肯定避免不开NVIC和中断优先级,那么这部分你是逃避不掉的,82个中断优先级,需要记住/**********************************************************************************************/3.接下来一堆就是关于每个外设的寄存器了,几乎每个外设一个结构体,里面全是需要操作的寄存器但通常我们不直接操作寄存器,而是通过操作另一个结构体然后复制给寄存器实现存储转发,感觉这部分没有设么好说的,需要用哪一部分直接去看就OK了,而且这些寄存器,基本上都大同小异比如什么SR,CR之类的,我大概认为主要有这两部分组成,首先要控制,需要使用到CR寄存器,然后是需要根据当前状态来判断下一步到底怎么做然后需要使用到SR寄存器,反正蛮有意思的/**********************************************************************************************/4.关于内存从0到0xffffffff的分配直到今天才对STM32内存分配和外设名字的认识有了重新的了解,好吧,其实之前就没有什么了解首先是关于内存分配,首先是很大一块内存,4GB(0-0xffffffff),然后肯定要分配一块给外设,然后再细分分为APB1 APB2 AHB1等时钟上的外设,然后就是这些基地址加上便宜实现各个外设的地址分配,到这一步为止每个外设都还只是地址分配,只有地址,然后通过宏和结构体类型的强制转换实现各个外设名字,如下:#define PERIPH_BASE           0x40000000U#define APB1PERIPH_BASE       PERIPH_BASE#define I2C1_BASE             (APB1PERIPH_BASE + 0x5400U)#define I2C1                ((I2C_TypeDef *) I2C1_BASE)这些地址都是从最开始的地址分配过来的,一步步的从基地址到最后加上偏移量细分到了各个端口和外设然后通过结构体类型的强制转换和宏定义实现I2C成功转换为指向I2C寄存器类型的指针,其实本来就是地址加偏移然后还是地址,其实也可以简单称为指针,然后通过类型转换,OK,成功指向I2C,我觉得这搞得也太巧妙了,如果你是定义一个结构体指针,还需要再定义一个结构体完成初始化,然后才能实现指向,那么之前地址偏移就直接完成了初始化的操作,而且还是分配到了该外设原本的地方,通过外面寄存器的变化然后传给里面内存的变化,我觉得应该是这样的。既然一个搞懂了那么其他就都是这样一个套路,然后这部分差不多就OK了, 牢记地址加偏移/**********************************************************************************************/5.最下面就都是一些关于寄存器的操作的宏定义,就是说具体深入到每一个位的操作,比如说想要使能某个位,然后可以在里面找到操作,个人觉得没什么意思,因为那些东西只有写它的人才能看懂,所以把,有兴趣自己去看!!!!感觉这个文件很简单,但是又同样非常重要,行吧,以后再说吧!!

15.关于stm32f407xx.h stm32f4xx.h文件的介绍相关推荐

  1. stm32f4xx.h文件的详解

    stm32f4xx.h详解 我的上一篇博客中详细讲解了system_stm32f4xx.c文件,在那个文件中,包含了唯一一个头文件,而这个头文件在开发过程中起到至关重要的作用,如果没有这个文件,就像大 ...

  2. #error “Please select first the target STM32F4xx device used in your application (in stm32f4xx.h

    一.Bug背景 在使用寄存器方式点亮LED时遇到的Bug 解决方案: 根据STM32的存储器映射先定义好各个寄存器的地址,并把这些地址定义都写在stm32f4xx.h中. stm32f4xx.h文件里 ...

  3. catkin_make编译时fatal error: ###_msgs/***.h: 没有那个文件或目录

    我们经常在GitHub上copy一些功能包,放到自己的工作空间里就编译,然而编译出现了问题,说没有文件或目录. 你有没有想过在编译A包时,A包有调用B包的头文件,然而我B包还没编译,还没生成头文件. ...

  4. 【Qt】Qt5.9.0: error: GL/gl.h: 没有那个文件或目录

    重新安装ubuntu,在编译Qt时报错: /home/Qt5.9.0/Examples/Qt-5.9/widgets/widgets/calculator/button.cpp:51: from -/ ...

  5. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

    如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录 参考文章: (1)如何解决编译linux内核(解决声卡问题),遭遇fata ...

  6. ubuntu16.04 cuda8.0 caffe 编译 error: cublas_v2.h 没有那个文件或目录

    ubuntu16.04 cuda8.0 caffe 编译时遇到 caffe fatal error: cublas_v2.h 没有那个文件或目录 参考:http://blog.csdn.net/qq_ ...

  7. 编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录

    编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录 其实numpy已经是安装的,anaconda2里面有,python中import num ...

  8. 错误fatal error: zlib.h: 没有那个文件或目录的解决办法

    环境: Ubuntu18.04 x86-64 错误现象: 当编译ffmpeg的代码时,有时会出现以下错误: libavformat/http.c:25:10: fatal error: zlib.h: ...

  9. fatal error: alsa/asoundlib.h: 没有那个文件或目录错误解决办法

    在编译ffmpeg4.2代码的时候,出现以下编译错误: libavdevice/alsa_enc.c:40:10: fatal error: alsa/asoundlib.h: 没有那个文件或目录 解 ...

最新文章

  1. 语义分割--End-to-End Instance Segmentation with Recurrent Attention
  2. 如何做到微信机器人不封号_微信如何做到一键群发所有群
  3. 基于ISO的本地yum源配置
  4. 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
  5. 谁更了解你,是女朋友吗。不,是这些推荐算法。
  6. catia曲面扫掠命令详解_Mastercam快捷键命令,附中英文功能讲解!值得收藏!
  7. 一段js实现复制文本内容到剪切板
  8. Spring Data JPA 从入门到精通~JpaSpecificationExecutor的使用方法
  9. telnet用法 测试端口号是否可以使用
  10. @EnableDiscoveryClient和@EnableEurekaClient
  11. 机器学习算法数学基础之——微积分篇(1)
  12. html js关闭浏览器,js关闭页面(兼容浏览器)
  13. 计算机辅助工艺设计主要内容,计算机辅助工艺设计.ppt
  14. php mvc vue 调用js函数_js 匿名函数自调用
  15. Oracle PL\SQL 基础学习一
  16. SpringBoot(三)
  17. 苹方字体 for linux,苹果苹方字体
  18. HTTP幂等性概念和应用
  19. Flutter 旋转动画 — RotationTransition
  20. 双十一大促过后怎么维护淘宝店铺数据

热门文章

  1. http://www.divakk.co.jp/aoyagi/csharp_tips_wbzone.html
  2. cocos3.x 2d转3d
  3. 观“一个垃圾回收器的实现”有感
  4. BPP问题(Bounded-error Probabilistic Polynomial time)
  5. C语言程序设计学习笔记:P5-循环控制
  6. 2020.9.9丨微生物多样性、宏基因组测序原理
  7. 移动APP用户行为分析
  8. pikachu平台SQL注入
  9. 市场规模将达360亿!看鲜花电商如何玩转大数据
  10. 2021年全球与中国油位计行业市场规模及发展前景分析