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寄存器地址
重新认识指针移植USBX实现虚拟串口通信
Loading...