根据上篇博客中的框架,需要编写这些文件:
首先看一下led.h中,都有什么?
1 #ifndef _LCD_H 2 #define _LCD_H 3 4 5 enum { 6 NORMAL = 0, 7 INVERT = 1, 8 }; 9 10 /* NORMAL : 正常极性 11 * INVERT : 反转极性 12 */ 13 typedef struct pins_polarity { 14 int vclk; /* normal: 在下降沿获取数据 */ 15 int rgb; /* normal: 高电平表示1 */ 16 int hsync; /* normal: 高脉冲 */ 17 int vsync; /* normal: 高脉冲 */ 18 }pins_polarity, *p_pins_polarity; 19 20 typedef struct time_sequence { 21 /* 垂直方向 */ 22 int tvp; /* vysnc脉冲宽度 */ 23 int tvb; /* 上边黑框, Vertical Back porch */ 24 int tvf; /* 下边黑框, Vertical Front porch */ 25 26 /* 水平方向 */ 27 int thp; /* hsync脉冲宽度 */ 28 int thb; /* 左边黑框, Horizontal Back porch */ 29 int thf; /* 右边黑框, Horizontal Front porch */ 30 31 int vclk; 32 }time_sequence, *p_time_sequence; 33 34 35 typedef struct lcd_params { 36 /* 引脚极性 */ 37 pins_polarity pins_pol; 38 39 /* 时序 */ 40 time_sequence time_seq; 41 42 /* 分辨率, bpp */ 43 int xres; 44 int yres; 45 int bpp; 46 47 /* framebuffer的地址 */ 48 unsigned int fb_base; 49 }lcd_params, *p_lcd_params; 50 51 52 #endif /* _LCD_H */
2)lcd_4.3.c
lcd_params lcd_4_3_params = {...};
3)lcd_controller.h
1 #ifndef _LCD_CONTROLLER_H 2 #define _LCD_CONTROLLER_H 3 4 #include "lcd.h" 5 6 typedef struct lcd_controller { 7 void (*init)(p_lcd_params plcdparams); 8 void (*enable)(void); 9 void (*disable)(void); 10 }lcd_controller, *p_lcd_controller; 11 12 #endif /* _LCD_CONTROLLER_H */
4)lcd_controller.c
1 /* 向上: 接收不同LCD的参数 2 * 向下: 使用这些参数设置对应的LCD控制器 3 */ 4 5 void lcd_controller_init(p_lcd_params plcdparams) 6 { 7 /* 调用2440的LCD控制器的初始化函数 */ 8 lcd_controller.init(plcdparams); 9 }
5)s3c2440_lcd_controller.c
1 struct lcd_controller s3c2440_lcd_controller = { 2 .init = xxx; 3 .enalbe = xxx; 4 .disable = xxx; 5 };