OpenEdv-开源电子网

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

关于参照原子哥FSMC液晶用赋值LCD_TypeDef结构体指针的问题

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-6-3
在线时间
0 小时
发表于 2015-6-3 22:34:14 | 显示全部楼层 |阅读模式
5金钱
作为一个C语言刚入门,STM32刚入门,UCGUI还没入门的新手,今天在琢磨液晶回过头再看原子哥例程的时候发现很疑惑。本来指针这块就基本不太懂,这一看越来越迷糊了。所以发个帖希望大神解答下疑惑,先谢过了,问题估计有些基础,别打我啊!!!!
问题一:原子哥代码中直接是:#define LCD_BASE    ( (u32)(0x6c000000|000007FE))
#define   LCD         (( LCD_TypeDef*)LCD_BASE)    ,这种赋值方式不太理解啊,意思是将LCD_BASE强制转换为指向结构体LCD_TypeDef类的指针?可是直接用LCD_BASE来赋值总感觉让我很疑惑啊,正常情况是应该给一个&地址来给它赋值啊,编译器又是怎么认定 ( (u32)(0x6c000000|000007FE))这个数是一个地址而不是普通我们定义的常数呢?
问题二:撇开第一个问题不谈啊,原子哥后面说LCD->LCD_REG的地址为0x6c0007FE,因为结构体地址自增,那么下一个结构体成员LCD->LCD_RAM就是0x6c000800,为什么呢?0x6c000800-0x6c0007FE也是等于0x2啊,为什么这个增量是0x2啊,我也不明白,基础太差,求科普

别问我,我想静静
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-6-3 23:54:13 | 显示全部楼层
1,这个你得好好学习下指针使用才行。百度学习下先。
2,这个,你又得好好学习下结构体,成员地址之间的关系。还是要百度学习。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-6-3
在线时间
0 小时
 楼主| 发表于 2015-6-4 09:04:11 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
额,原子哥有没有推荐的资料文献啊,昨天百度看了看没什么眉目的赶脚。。。。。。。。
别问我,我想静静
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-6-3
在线时间
0 小时
 楼主| 发表于 2015-6-4 11:39:23 | 显示全部楼层
就这么沉了。。。。。。
别问我,我想静静
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-6-3
在线时间
0 小时
 楼主| 发表于 2015-6-4 13:38:30 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,经过半天的琢磨,好像有点头绪,你看看对不对啊,是不是因为地址在32位机里面都是32位的,而FSMC里面那个数据位选择的16位,结构体递增一个地址就相当于2x16=32,所以是0x800啊?我想的对不对啊?
别问我,我想静静
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-6-4 22:20:33 | 显示全部楼层
回复【5楼】X_man:
---------------------------------
不对。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-6-3
在线时间
0 小时
 楼主| 发表于 2015-6-5 13:37:03 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我擦。。。。。。。。那是什么原因,求原子哥指引我前行的方向!!!!
别问我,我想静静
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-6-3
在线时间
0 小时
 楼主| 发表于 2015-6-5 13:43:05 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我自己都把自己说服了,结果竟然没对。。。。。。。。
别问我,我想静静
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-7-13
在线时间
12 小时
发表于 2015-8-1 02:18:45 | 显示全部楼层
回复【8楼】X_man:
---------------------------------
你这个应该是结构体成员指针自加的问题没搞懂,你可以参考下这里看看。http://www.cnblogs.com/ma6174/archive/2012/02/09/2343912.html
回复

使用道具 举报

8

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
金钱
210
注册时间
2014-9-29
在线时间
13 小时
发表于 2015-8-1 15:41:32 | 显示全部楼层
内存的基本地址是以字节算得,所以是加2,16位的就是两个字节,懂了吗
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2016-4-6
在线时间
15 小时
发表于 2016-11-4 10:10:15 | 显示全部楼层
本帖最后由 TaejaAce 于 2016-11-4 10:23 编辑

遇到和你同样的问题,感觉这篇文章分析的不错:http://blog.csdn.net/mhjcumt/article/details/7355127(针对第一个问题),第二个问题感觉9楼的链接回答的很不错。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 20:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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