OpenEdv-开源电子网

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

RCC_BASE是常量,为什么可以被强制转换成指针类型?

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-9-13
在线时间
7 小时
发表于 2018-1-15 20:56:09 | 显示全部楼层 |阅读模式
RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  
#define RCC                ((RCC_TypeDef *) RCC_BASE)
#define RCC_BASE             (AHBPERIPH_BASE + 0x1000)
#define AHBPERIPH_BASE       (PERIPH_BASE +   0x20000)
#define PERIPH_BASE          ((uint32_t)   0x40000000)
/*!< Peripheral base address in the alias region */
所有层层带入后,
#define RCC                ((RCC_TypeDef *)(0x40000000+   0x20000+ 0x1000))//指针还有这样的用法?指针类型RCC_TypeDef *不应该是变量吗?

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

使用道具 举报

8

主题

89

帖子

0

精华

高级会员

Rank: 4

积分
686
金钱
686
注册时间
2017-8-8
在线时间
494 小时
发表于 2018-1-15 23:27:22 | 显示全部楼层
本帖最后由 Arya 于 2018-1-16 10:44 编辑

转换成指针类型才能间接访问,比如往物理地址0xff写入1,*(int*0xff)=1;
把物理地址(结构体的起始地址)强制转换成结构体指针,通过->就可以访问结构体成员
回复 支持 1 反对 0

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-9-13
在线时间
7 小时
 楼主| 发表于 2018-1-19 10:10:56 | 显示全部楼层
Arya 发表于 2018-1-15 23:27
转换成指针类型才能间接访问,比如往物理地址0xff写入1,*(int*0xff)=1;
把物理地址(结构体的起始地址) ...

也就是说指针类型可以修饰常量,只是这时的常量表示的是地址而不是一般的数据常量。是这样吗?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-14 14:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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