STM32系列--初识寄存器1

如何识别芯片

芯片四周是引脚,左下角的小圆点表示1脚,然后从1脚起按照逆时针的顺序排列,如果没有小圆点,则代表从左边最上方逆时针开始计数
在这里插入图片描述

芯片里面构成

如下图所示:
在这里插入图片描述
总线矩阵:
总线之间交叉的时候如果有个圆圈则表示可以通信,没有圆圈则表示不可以通信
在这里插入图片描述
内核与外设之间要同通信要通过I\S\D总线。需要总线矩阵来冲裁I/S/D冲突的情况。
下面我总结一下STM32里面包含了什么,首先是内核用于控制片上外设,这个内核是ARM公司开发的,而ST设计的是片上外设,外设要与ARM内核通信,需要通过总线,即总线矩阵。

什么是存储器映射

存储器本身不具有地址信息,它的地址是由芯片厂商,给存储器分配地址的过程就称为存储器映射。
给存储器分配地址的过程叫存储器映射,再分配一个地址叫重映射。
在这里插入图片描述
通过绝对地址发访问内存单元:

在这里插入图片描述
ox40021 c14在我们看来是GPIOH端口ODR的地址,但是在编译器看来这只是一个普通的变量,想让编译器也认识为是一个指针,我们得进行强制类型转换,把它转换成指针。(unsigned int *)0x40021c14 ,然后在对这个指针进行 * 操作。

下面,我来睡一下,(unsigned int *)(0x40021c14)代表将0x40021c14转换为一个指针(也就是一个地址),再取 * 就代表给此地址赋值

寄存器

给有特定功能的内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的就叫做寄存器映射。
在这里插入图片描述
下面来深入的讲解一下STM32的寄存器映射
如果一个一个去找外设寄存器的地址,那么将会是非常麻烦,我们可以有一个非常简单的方法,我们可以先确定每一条总线的地址,然后,在总线的地址上找到外设的地址。
首选取找总线的地址:
在这里插入图片描述
这个可以从芯片手册上查看。

在这里插入图片描述
在这里插入图片描述
上面查看的是STM32F76xxx

使用结构体来封装寄存器列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补充复习C语言

指针

在C语言中,允许一个变量来存放指针,这种变量称为指针变量,指针变量的值就是某份数据的地址。
在这里插入图片描述
在定义指针变量p_a的同时对它进行初始化,并将变量a的地址赋予它。通过&来获取a的地址。
通过指针变量来取得数据:
在这里插入图片描述
运行结果都为15

在这里插入图片描述
在这里插入图片描述
总的来讲,我们只需要知道&是代表获取地址,*代表获取数据

结构体

结构体就是一种自定义的数据类型,相当于是一种聚合类型。
在这里插入图片描述
如上图所示,代表了2个结构体,stu1和stu2
在这里插入图片描述
在这里插入图片描述

结构体指针

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取结构体成员

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值