type
status
date
slug
summary
tags
category
icon
password
访问寄存器是基地址加偏移
用
ADC1—>DR
访问DR寄存器,&ADC1—>DR
访问DR寄存器地址此时ADC1基地址有了,等于40012400,再加一个偏移就能得到DR寄存器的地址,库函数巧妙地使用结构体实现偏移。
跳转到
ADC_TypeDef
结构体定义在结构体里,寄存器个数以及排列顺序与实际的硬件上完全一致。结构体成员正好映射对应寄存器。
把ADC1的基地址
ADC1_BASE
强转为ADC_TypeDef
结构体类型的指针,ADC1
此时是ADC_TypeDef
结构体的首地址,使用ADC1—>DR
就能访问该寄存器。结构体可以类比到数组,数组名
array
就是指针,array[0
]就能访问array
数组的第一个元素结构体名在这里
ADC1
就是结构体名(经过强制类型转换)也是结构体首地址也是ADC1外设基地址,ADC1—>DR
就能访问该寄存器。&ADC1—>DR
得到DR寄存器地址,等于4001244c实际上上面的套娃等价于:
ADC1_DR
访问寄存器&*ADC1_DR
得到DR寄存器地址
- 作者:Torah
- 链接:https://tangly1024.com/article/%E5%BA%93%E5%87%BD%E6%95%B0%E5%AE%9E%E7%8E%B0%E7%BB%93%E6%9E%84%E4%BD%93%E8%AE%BF%E9%97%AE%E5%AF%84%E5%AD%98%E5%99%A8
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。