OpenEdv-开源电子网

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

寄存器地址怎么加

[复制链接]

42

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-22
在线时间
3 小时
发表于 2014-10-29 18:09:25 | 显示全部楼层 |阅读模式
5金钱
typedef struct
{
  vu16 SR;
  u16  RESERVED0;
  vu16 DR;
  u16  RESERVED1;
  vu16 BRR;
  u16  RESERVED2;
  vu16 CR1;
  u16  RESERVED3;
  vu16 CR2;
  u16  RESERVED4;
  vu16 CR3;
  u16  RESERVED5;
  vu16 GTPR;
  u16  RESERVED6;
} USART_TypeDef;
#define PERIPH_BASE           ((u32)0x40000000)
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define USART1_BASE           (APB2PERIPH_BASE + 0x3800)
#define USART1              ((USART_TypeDef *) USART1_BASE)


这几句只表明了 usart1的基地址    但是USART1->DR  中 DR 的地址是怎么加进去的???

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

使用道具 举报

1

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-29
在线时间
0 小时
发表于 2014-10-29 18:19:56 | 显示全部楼层
#define USART1              ((USART_TypeDef *) USART1_BASE)
这句话声明了一个指向USART_TypeDef结构体的指针,这个指针的内容为USART1的地址USART1_BASE,也可以这样说,经过这个指针的声明,我们就可以把USART1当作一个USART_TypeDef 的结构体,这个结构体的地址的首地址就是USART1_BASE,USART1 ->就可以指向该结构体的成员了,这是结构体指针的内容,你可以去参考C语言相关书籍
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5783
金钱
5783
注册时间
2013-11-22
在线时间
1212 小时
发表于 2014-10-29 19:05:20 | 显示全部楼层
结构体里面的成员变量挨着存放的,成员变量的地址就等于基地址+偏移地址
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 21:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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