OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4998|回复: 2

为什么在代码中RCC->APB2ENR在代码中指向的地址为 0x4001 1018

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2022-8-16
在线时间
6 小时
发表于 2022-8-24 11:16:53 | 显示全部楼层 |阅读模式
新人刚开始接触stm32,通过中文参考手册能够知道RCC_APB2ENR寄存器的地址是0x4001 1018,然后在代码中也能够计算出基地址RCC为0x4001 1000,可是不太能理解为什么RCC->APB2ENR在代码中指向的地址为0x4001 1018
typedef struct
{
  __IO uint32_t CR;
  __IO uint32_t CFGR;
  __IO uint32_t CIR;
  __IO uint32_t APB2RSTR;
  __IO uint32_t APB1RSTR;
  __IO uint32_t AHBENR;
  __IO uint32_t APB2ENR;
  __IO uint32_t APB1ENR;
  __IO uint32_t BDCR;
  __IO uint32_t CSR;

#ifdef STM32F10X_CL  
  __IO uint32_t AHBRSTR;
  __IO uint32_t CFGR2;
#endif /* STM32F10X_CL */

#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)   
  uint32_t RESERVED0;
  __IO uint32_t CFGR2;
#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */
} RCC_TypeDef;


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

452

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4292
金钱
4292
注册时间
2018-5-14
在线时间
928 小时
发表于 2022-8-24 20:08:36 | 显示全部楼层
哪里错了,就是0x40011018啊,寄存器地址是基地址偏移0x18,结构体的指针指向的首地址是0x40011000,但是那个成员在第6个,那么一个成员占用4字节,成员APB2ENR的地址就是偏移到了24字节去了
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2022-8-16
在线时间
6 小时
 楼主| 发表于 2022-8-24 20:20:42 | 显示全部楼层
姚先起 发表于 2022-8-24 20:08
哪里错了,就是0x40011018啊,寄存器地址是基地址偏移0x18,结构体的指针指向的首地址是0x40011000,但是那 ...

首先非常感谢,现在明白了,之前一直不知道结构体内的成员地址偏移是延续结构体指针指向的首地址,所以一直以为RCC中寄存器地址未定义。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表