独闷闷网

标题: 宏定义指针指向结构体可以方便访问指定的某个寄存器。 [打印本页]

作者: jianhong_wu    时间: 2014-11-6 11:25
标题: 宏定义指针指向结构体可以方便访问指定的某个寄存器。
Ack-深圳:
#define LCD_BASE         ((u32)(0x6C000000 | 0x000007FE))
#define LCD              ((LCD_TypeDef *) LCD_BASE)

typedef struct
{  u16 LCD_REG;
   u16 LCD_RAM;
} LCD_TypeDef;

这个LCD是指向一个指针变量吗?

預腾--上海:
把这个地址强转成类型的指针,方便访问LCD的寄存器.结合联合体可以访问寄存器的每一个位,很常见的用法.


Ack-深圳:
那我的LCD->LCD_REG的值和LCD->LCD_RAM值都是互相独立的吗?互不影响吗?

預腾--上海:
独立的。C语言熟了,学单片机很快的。

Ack-深圳:
那他们地址就是差2个字节是吗?

預腾--上海:
对的。百度了解一下“结构体内存对齐”。

Ack-深圳:
如果有个4个字节的变量,那他们的地址就要以4个字节来偏移了是吗?

預腾--上海:
按结构体中,最大成员对齐,一句两句 说不清。

Ack-深圳:
恩。这个我了解过。

預腾--上海:
结构体成员放的顺序注意一下就好了。节省内存。







欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2