新手上路
- 积分
- 30
- 金钱
- 30
- 注册时间
- 2015-6-3
- 在线时间
- 0 小时
|
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啊,我也不明白,基础太差,求科普
|
|