优龙的Bootloader的LCD显存初始化

#define LCD_XSIZE_TFT    (320)     

#define LCD_YSIZE_TFT    (240)

#define SCR_XSIZE_TFT    (LCD_XSIZE_TFT*2)

#define SCR_YSIZE_TFT    (LCD_YSIZE_TFT*2)

 

#define LCDFRAMEBUFFER 0x33800000

 

U16 (*frameBuffer16BitTft)[SCR_XSIZE_TFT];

 

frameBuffer16BitTft=(U16 (*)[SCR_XSIZE_TFT])LCDFRAMEBUFFER;

 

1 #define LCDFRAMEBUFFER 0x33800000 

定义 LCD 显存在 SDRAM 的地址,硬件上 SDRAM(64M) 的片选连接的是 nGCS6 ,所以 SDRAM 的起始地址为 0x3000 0000 ,结束地址 0x3800 0000

2 U16 (*frameBuffer16BitTft)[SCR_XSIZE_TFT];

定义一个指针数组,数组中的数据为 U16 类型

指针中有 SCR_XSIZE_TFT 个元素 也就是 frameBuffer16BitTft 所值的对象是有 SCR_XSIZE_TFT U16 的元素的数组 frameBuffer16BitTft 是行指针

3 frameBuffer16BitTft=(U16 (*)[SCR_XSIZE_TFT])LCDFRAMEBUFFER;

这个就是给 frameBuffer16BitTft 指针赋值 地址为 0x33800000

 

这个不太好理解,平时我们基本上都是这样定义的 直接定义成一个二维数组

// 定义 FRAMEBUFFER 缓冲区

__align(4)  volatile uint16  FrameBuffer[GUI_LCM_YMAX][GUI_LCM_XMAX];

 

这里涉及到二维数组指针,好久没有看了,呵呵,复习一下

 

1 、定义一个二维数组 首地址为 0

int  a[3][4]={{1 3 5 7} {9 11 13 15} {17 19 21 23}}

表示形式              含义                            地址

a          二维数组名,数组首地址, 0 行首地址         0

a[0],*(a+0),*a    0 0 列元素地址                 0

a+1.&a[1]       1 行首地址                          8

a[1],*a(a+1)     1 行第 0 列元素地址                   8

a[1]+2,*(a+1)+2,&a[1][2] 1 行第 2 列元素地址           12

*(a[1]+2),*(*a(+1)+2),a[1][2]  1 行第 0 列的值            13

2 、定义一个数组指针

int (*p)[4];

int  a[3][4]={{1 3 5 7} {9 11 13 15} {17 19 21 23}}

 

int (*p)[4]; 表式 p 是一个指针变量,他指向包含 4 个元素的一维数组,两侧的括号不可缺少

 

 

///

作者:宇帆 cfanlwn

时间:2010-01-12   11:23:27

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值