OpenEdv-开源电子网

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

地址是怎么连接起来的

[复制链接]

42

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-22
在线时间
3 小时
发表于 2014-10-29 16:08:06 | 显示全部楼层 |阅读模式
5金钱



编译器是在哪里确定 USART->DR 的地址的?
c语言没学好  以前我只知道声明一个变量他的地址是随机的,我赋值就行了,没有操作过地址的具体值
stm32是怎么把寄存器地址和编写的语句连接起来的??  

最佳答案

查看完整内容[请看2#楼]

这里有一个结构体,其中包含了USART的所有寄存器: typedef struct {   vu16 SR;  // USART状态寄存器 ;   u16  RESERVED0;   vu16 DR;  // USART数据寄存器 ;   u16  RESERVED1;   vu16 BRR;  // USART波特率寄存器 ;   u16  RESERVED2;   vu16&n ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-29
在线时间
0 小时
发表于 2014-10-29 16:08:07 | 显示全部楼层
这里有一个结构体,其中包含了USART的所有寄存器:
typedef struct
{
  vu16 SR;  // USART状态寄存器 ;
  u16  RESERVED0;
  vu16 DR;  // USART数据寄存器 ;
  u16  RESERVED1;
  vu16 BRR;  // USART波特率寄存器 ;
  u16  RESERVED2;
  vu16 CR1;  // USART控制寄存器1 ;
  u16  RESERVED3;
  vu16 CR2;  // USART控制寄存器2 ;
  u16  RESERVED4;
  vu16 CR3;  // USART控制寄存器3 ;
  u16  RESERVED5;
  vu16 GTPR;  // USART保护时间和预分频寄存器 ;
  u16  RESERVED6;
} USART_TypeDef;
现在要生成一个结构体指针,而这个指针就是USART的地址,那么结构体中的寄存器就能够顺序的排列下来,比如:
这里有一句话:
#ifdef _USART1
  #define USART1              ((USART_TypeDef *) USART1_BASE)
#endif /*_USART1 */
现在的USART1就是指向寄存器结构体的指针,而这个指针的首地址就是 USART1_BASE,所以就实现了寄存器地址的定义!
我的理解就是这样,水平有限,希望对你有帮助,也希望大家对我的见解纠错
回复

使用道具 举报

5

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2014-10-28
在线时间
14 小时
发表于 2014-10-29 16:16:23 | 显示全部楼层
这个不是可以右键看定义的嘛,但是是指定了USART1的地址(具体通过基地址加偏移来的),但是DR这些寄存器没有指定,但是定义USART结构体的时候已经说明好了DR这些寄存器的顺序,所以按顺序用结构体依然可以访问到
eg你要访问内存aaaa出的一个int数据,可以强制内型转换int* a;a=(int*)aaaa;现在a就是指向aaaa的指针可以用a去读取,这样做的前提是你知道数据放的地址且知道他的数据类型
成功必然有成功的原因,
回复

使用道具 举报

42

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-22
在线时间
3 小时
 楼主| 发表于 2014-10-29 16:57:58 | 显示全部楼层
回复【3楼】piaoran111999:
---------------------------------
谢谢 要的就是最后那三句     万分感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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