作者:GWD 时间:2019.7.24
一、课程内容
概述:本节课完善了之前的程序bug,并且让显示器显示全屏红、绿、蓝三种颜色。
1、新建lcd_test.c
1、首先lcd_test函数要获得lcd显示器的参数,比如x,y的像素等等。所以要构建一个获得参数的函数,在上一层中。
void get_lcd_params(unsigned int *fb_base,int *xres,int *yres,int *bpp)
{
*fb_base = g_p_lcd_selected->fb_base;
*xres = g_p_lcd_selected->xres;
*yres = g_p_lcd_selected->yres;
*bpp = g_p_lcd_selected->bpp;
}
2、整屏显示函数
显示原理就是往需要点亮的像素对应的显存地址放入像素值,其余的交给lcd_controller自动完成。
if (bpp == 16)
{
/* 让LCD输出整屏的红色 */
/* 565: 0xf800 */
p = (unsigned short *)fb_base;
for (x = 0; x < xres; x++)
for (y = 0; y < yres; y++)
*p++ = 0xf800;
/* green */
p = (unsigned short *)fb_base;
for (x = 0; x < xres; x++)
for (y = 0; y < yres; y++)
*p++ = 0x7e0;
/* blue */
p = (unsigned short *)fb_base;
for (x = 0; x < xres; x++)
for (y = 0; y < yres; y++)
*p++ = 0x1f;
}
二、学习要点:
1、框架梳理
2、封装的概念:init、enable、disable函数重复了三次封装,不要怕重复与麻烦,目的是不跃层,完全实现上层对下层的屏蔽。
3、错误的意思是要包含头文件。
三、代码中一些小的C知识点梳理
1、枚举变量的定义
2、注意结构体类型定义时包含其他结构体的思路与定义时各元素间用分号隔开;
3、controller.h中面向对象的函数结构体
4、结构体在初始化时,各元素间是“,”隔开
5、当需要有多个返回值的时候,比如获得参数的时候,要用传址的手法