用GPIO口驱动与显示LCD屏幕——mini2440
#class#dialog#byte#manager#command#mfc
———————————————————————————————————————————
目标:LCD屏幕的驱动和显示。
了解GPIO的控制方法,并独立编写一个简单的菜单测试程序(包括彩色汉字和静态图画的显示)
————————————————————————————————————————-———
一、术语问答
1.什么是GPIO口?mini2440中有哪些相关的资源?
答:
2.2416/2440关于GPIO口的芯片资料(data sheet 解读)
二、源码解析
1.sys/ioctl.h
2.IOR,IOW
3.看出代码的 架构 ,意思出来。
4.#include <afxext.h>的作用
答:
定义MFC一些扩展的东西,定义的类包括:// Classes declared in this file //CObject //CCmdTarget; //CWnd //CButton class CBitmapButton; // Bitmap button (self-draw) class CControlBar; // control bar class CStatusBar; // status bar class CToolBar; // toolbar class CDialogBar; // dialog as control bar class CReBar; // ie40 dock bar class CSplitterWnd; // splitter manager //CView //CScrollView class CFormView; // view with a dialog template class CEditView; // simple text editor view //CDC class CMetaFileDC; // a metafile with proxyclass CRectTracker; // tracker for rectangle objects
5.extern变量用法
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示 编译器 遇到此变量和函数时在其他模块中寻找其定义。
另外,extern也可用来进行 链接 指定。
三、LCD驱动解析
1. mmap((void*)target,length,PROT_READ|PROT_WRITE,MAP_SHARED,fd,target) //参数祥解?尤其是target
2.volatile BYTE *lcdcmdadr //什么意思?
void Xadd(char startx,char endx){ LCDCOM_MASTER(0x2A); //搞明白这些地址的含义 LCDDATA_MASTER(startx); LCDDATA_MASTER(endx);}
//映射用户空间内存地址到内核空间的内存地址 lcdcmdadr=(BYTE *)mapDirectIoRegister(LCD_COMMAND,MAP_SIZE);
LCD_RST_LOW; usleep(100000); LCD_RST_HIG; usleep(100000); //模拟一个方波 LCD_ON;