请教一个原子RGB屏幕底层函数的意思(指针)

2019-07-20 03:04发布

u16 ltdc_lcd_framebuf[1280][800]    //定义了一个二维数组


u32 *ltdc_framebuf[2];//定义了一个数组指针


ltdc_framebuf[0]=(u32*)&ltdc_lcd_framebuf;//这句话是什么意思
我的理解不知道对不对:将二维数组的首地址的地址赋给数组指针ltdc_framebuf[0];因为数组名字本身就是一个地址了,在取地址就是指针的指针了,可是把u16强制转换成U32内存里边是怎么变化的?

*(u16*)((u32)ltdc_framebuf[lcdltdc.activelayer]+lcdltdc.pixsize*(lcdltdc.pwidth*y+x))=color;这句话我知道是将这个颜 {MOD}值赋给那个地址,可是这里边每个符号怎么个意思?

希望大神帮我解释下,小弟再次不胜感激。看了一下午二维数组和指针的指针,还是不太理解。恳请帮助,互相提高!@正点原子 (原子哥求帮助)



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-20 04:25
1,ltdc_framebuf[0]=(u32*)&ltdc_lcd_framebuf,实际上就是:ltdc_framebuf[0]指向ltdc_lcd_framebuf的地址.  相当于初始化这个指针了.
2,*(u16*)((u32)ltdc_framebuf[lcdltdc.activelayer]+XXXX)=color,是对ltdc_framebuf[lcdltdc.activelayer]里面的数据进行赋值.先将ltdc_framebuf[lcdltdc.activelayer]首地址转换为u32的数据,然后进行偏移,并将这个偏移后的数据转换为u16类型的指针,然后取指针所指向的值.然后color赋值给这个值.实现对ltdc_framebuf[lcdltdc.activelayer]指定位置的赋值.
jpf487424
2楼-- · 2019-07-20 04:36
 精彩回答 2  元偷偷看……
wangweixin
3楼-- · 2019-07-20 05:32
楼主好像理解的有点偏差,u32 *ltdc_framebuf[2]是定义的指针数组,数组中的两个元素是u32 *的,也就是两个指针。ltdc_lcd_framebuf是数组第一个元素的地址,&ltdc_lcd_framebuf是整个数组的地址。而u32*强制转换应该是为了转换成32位,如果用u32转换就错了。

一周热门 更多>