请大家耐心看完!!!!下面是库函数操作RCC流程,看完后有我的疑问:偏移地址的理解
1,库函数直接操作:RCC库函数操作 RCC_APB2PeriphClockCmd ()
RCC->APB2ENR |= RCC_APB2Periph: //->为结构体运算符,指向RCC结构体内成员APB2ENR
问题引导:RCC中APB2ENR变量和APB2ENR寄存器的关系
2,库函数过程定义—RCC_TypeDef成员定义
成员如下:
01078 __IO uint32_t CR;
01079 __IO uint32_t CFGR;
01080 __IO uint32_t CIR;
01081 __IO uint32_t APB2RSTR;
01082 __IO uint32_t APB1RSTR;
01083 __IO uint32_t AHBENR;
01084 __IO uint32_t APB2ENR;
01085 __IO uint32_t APB1ENR;
01086 __IO uint32_t BDCR;
01087 __IO uint32_t CSR;
} RCC_TypeDef;
结构体中申请了10个32位的变量,其中包含APB2ENR变量
3,底层操作:地址定义
#define RCC ((RCC_TypeDef *) RCC_BASE)
((RCC_TypeDef *) RCC_BASE):表示在RCC_BASE基地址申请了一个结构体,结构体RCC_TypeDef包含10个Uint32成员 CR,CFGR……;他们在基地址上开辟了连续的10个32变量的存储空间,
上面宏定义把RCC宏定义到stm32RCC寄存器的分配的存储器单元的首地地址,
问题来了: 库函数结构体RCC_TypeDef定义了10个32位的变量,,刚好10个寄存器也是32位的,似乎变量和寄存器对应,但是偏移地址怎么理解啊,,
|