历史上的今天
返回首页

历史上的今天

今天是:2024年12月05日(星期四)

正在发生

2019年12月05日 | 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载

2019-12-05 来源:elecfans

为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪。


花了好久,追踪到了这个执行过程。


进入main函数--_SetupHardware()----DISP_Initialize() ----_aDISP_Backends[DISP_BACKEND_ILI9325]=&sDISP_Backend_ILI9325 ;

static __no_init SDISPBackend* _aDISP_Backends[DISP_BACKEND_MAX] ;

_aDISP_Backends[DISP_BACKEND_ILI9325]=&sDISP_Backend_ILI9325 ;

 

然后就是结构体:

SDISPBackend是一个函数指针结构体。其定义是这样的:

typedef struct _SDISPBackendData
{
uint32_t dwID ;
uint32_t dwOrientation ; // Portrait, Landscape
uint32_t dwMode ; // RGB, BGR
} sDISPBackendData ;

typedef struct _SDISPBackend
{
sDISPBackendData sData ;

uint32_t (*Reset)( void ) ;
uint32_t (*Initialize)( void ) ;
uint32_t (*GetPixel)( uint32_t dwX, uint32_t dwY, SGUIColor* pclrResult ) ;
uint32_t (*DrawPixel)( uint32_t dwX, uint32_t dwY, SGUIColor* pclrIn ) ;
uint32_t (*DrawLine)( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2, SGUIColor* pclrIn ) ;
uint32_t (*DrawCircle)( uint32_t dwX, uint32_t dwY, uint32_t dwRadius, SGUIColor* pclrBorder ) ;
uint32_t (*DrawFilledCircle)( uint32_t dwX, uint32_t dwY, uint32_t dwRadius, SGUIColor* pclrBorder, SGUIColor* pclrInside ) ;
uint32_t (*DrawRectangle)( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2, SGUIColor* pclrFrame ) ;
uint32_t (*DrawFilledRectangle)( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2, SGUIColor* pclrFrame, SGUIColor* pclrInside ) ;
uint32_t (*DrawBitmap)( uint32_t dwX, uint32_t dwY, uint32_t dwWidth, uint32_t dwHeight, uint8_t* pucData ) ;
uint32_t (*DrawText)( uint32_t dwX, uint32_t dwY, uint8_t* pszText, SGUIColor* pclrText, SGUIFont* pFont, uint32_t dwSize ) ;
uint32_t (*Fill)( uint32_t dwX, uint32_t dwY, SGUIColor* pclrIn ) ;
uint32_t (*IOCtl)( uint32_t dwCommand, uint32_t* pdwValue, uint32_t* pdwValueLength ) ;
} SDISPBackend ;


使用下面这个函数将后端的代码跟前端的使用映射在一起:


SDISPBackend sDISP_Backend_ILI9325=
{
    .sData=
    {
        .dwID=DISP_BACKEND_ILI9325,
    },

    .Reset=_DBE_ILI9325_Reset,
    .Initialize=_DBE_ILI9325_Initialize,
    .GetPixel=_DBE_ILI9325_GetPixel,
    .DrawPixel=_DBE_ILI9325_DrawPixel,
    .DrawLine=_DBE_ILI9325_DrawLine,
    .DrawCircle=_DBE_ILI9325_DrawCircle,
    .DrawFilledCircle=_DBE_ILI9325_DrawFilledCircle,
    .DrawRectangle=_DBE_ILI9325_DrawRectangle,
    .DrawFilledRectangle=_DBE_ILI9325_DrawFilledRectangle,
    .DrawBitmap=_DBE_ILI9325_DrawBitmap,
    .DrawText=_DBE_ILI9325_DrawText,
    .Fill=NULL,
    .IOCtl=_DBE_ILI9325_IOCtl
} ;


使用时,直接调用sDISP_Backend_ILI9325.Initialize之类的函数就可以了。

推荐阅读

史海拾趣

Cotco公司的发展小趣事

在电子行业快速发展的浪潮中,Cotco公司于XXXX年正式成立,由几位在电子行业有着丰富经验的企业家和技术专家共同创立。初期,公司专注于电子元器件的分销和贸易,凭借创始团队成员在行业内的人脉和资源,Cotco很快与多家知名电子元器件制造商建立了合作关系,开始为客户提供优质的元器件采购服务。随着市场需求的不断增长,Cotco的业务也逐渐扩展,开始涉足电子产品的设计和生产领域。

国芯佳品公司的发展小趣事

在电子行业快速发展的浪潮中,Cotco公司于XXXX年正式成立,由几位在电子行业有着丰富经验的企业家和技术专家共同创立。初期,公司专注于电子元器件的分销和贸易,凭借创始团队成员在行业内的人脉和资源,Cotco很快与多家知名电子元器件制造商建立了合作关系,开始为客户提供优质的元器件采购服务。随着市场需求的不断增长,Cotco的业务也逐渐扩展,开始涉足电子产品的设计和生产领域。

HEIMANN公司的发展小趣事

随着产品线的不断丰富和市场需求的持续增长,Cotco公司开始加大市场拓展力度。公司积极参加国内外各类电子行业展览和交流活动,与潜在客户和合作伙伴建立了广泛的联系。同时,Cotco也注重品牌建设,通过赞助行业活动、开展公益事业等方式提升品牌知名度和美誉度。经过几年的努力,Cotco已经成为电子行业内一个响当当的名字。

ETI Systems公司的发展小趣事

ETI Systems一直将产品品质视为企业的生命线。公司严格把控从原材料采购到产品生产的每一个环节,确保每一件产品都符合高标准的质量要求。正是这种对品质的执着追求,让ETI Systems的产品在市场上赢得了良好的口碑和广泛的认可。同时,公司也建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。

City_Technology公司的发展小趣事

1977年,伦敦大学内,四个富有远见的科学家怀揣着梦想,创立了City Technology公司。他们利用Wolfson研究所开发的电化学技术,着手研发新型氧气感应技术。这一创新技术的诞生,标志着City Technology在气体传感领域的初步尝试,并为其日后的腾飞奠定了坚实的基础。在接下来的几年里,公司不断突破技术瓶颈,其铁罐氧气传感器技术于1982年获得了英国皇后奖技术成就奖,这一荣誉不仅肯定了公司的技术实力,也为其在市场上赢得了良好的声誉。

Bussmann (Eaton)公司的发展小趣事

2011年,Bussmann的母公司Cooper集团被EATON集团收购,Bussmann随之成为EATON旗下的一个产品系列。EATON集团作为一家多元化的动力管理企业,在电气和航空航天领域有着深厚的积累。通过整合EATON集团的资源和技术优势,Bussmann得以在更广泛的领域开展业务,并进一步提升其在电路保护领域的竞争力。

问答坊 | AI 解惑

控制阀的选型

1. 概述 控制阀安装在工艺过程自动控制系统中,直接控制控制工艺介质。多年以来,控制阀被认为是低技术含量产品,事实上控制阀往往要控制高温、高压、高压差、高粘度或含有固体颗粒、强腐蚀性和闪蒸的流体,工作条件非常恶劣,从而导致调节阀使用 ...…

查看全部问答>

TCRT5000_红外反射式光电传感器_反射型光电开关_光电对管_寻迹小车专用

TCRT5000_红外反射式光电传感器_反射型光电开关_光电对管_寻迹小车专用…

查看全部问答>

问一下关于如何让板子脱机运行的问题~

最近在研究一块板子,就是用书上说的tftp、nfs之类的方法,现在把文件系统已经移到了SD卡上,但板子加电启动的时候中间还是要经过漫长的一段过程……最后再找SD卡挂载上面得fs…… Sending DHCP requests ...eth0: no IPv6 routers present ... t ...…

查看全部问答>

有谁在 vista x64 下 安装过 passthru 驱动的,来指点下

我使用微软提供的 WDK 6000 bindview 程序(超级用户权限, X64的版本)在 vista x64 下安装 passthru 驱动 发现,只有使用 pncClassSetup->SelectAndInstall 方法才能反复安装成功, pncClassSetup->Install 只能在没安装过 自己驱动的机器上安装 ...…

查看全部问答>

Cyclone 1 (EP1C12) 输出接OC门怎么设置

如题,选用的是Altera的Cyclone芯片,具体型号是EP1C12,有点搞不清楚IO输出电平,看资料好像有LVTTL,LVCMOS等形式的,我的电路输出接口要求是用OC门输出,打算加入一篇74LS06或者74LS04,但是不知道输入的电平是否匹配。 有人用过FPGA输出OC门么 ...…

查看全部问答>

wince下宽字符的中英文字符怎么辨别呢?

如果不是宽字符可以用长度辨别 但是在宽字符下不管是中文还是英文都是 长度都是1 这个怎么辨别是中文呢? 还有 如果我要出字符串中搜索到是否含有某个汉字 这个是通过怎么搜呢? 我在 edit控件中输入 方   然后把这个方放入wchar_t *st ...…

查看全部问答>

wince 5/6能访问asp的商务网站么?

wince   5/6能访问asp的商务网站么?有可能么? 我想在以下的开发板上跑wince   5或6,做商务网站客户端    通过有线或无线网卡浏览asp的商务网站可行不? 硬件平台: arm   2410 sdram  &nb ...…

查看全部问答>

求LM3S EPI模块的外设驱动库使用指南

如题,EPIAddressMapSetEPIConfigSDRAMSetEPIAddressMapSet这些函数的使用说明找不到啊。请有的兄弟给分享下。先谢过了。…

查看全部问答>

小弟我虚心请教,跪求各位高手解答!在线等!!!!!!! 在线等!!!!!!!

小弟我虚心请教,跪求各位高手解答。我想用单片机实现电压的转换。大致要求如下: 输出端有2个:x和y.  输入端为p1到p9.   p1,p2,p3为一组,p4,p5,p6为一组,p7,p8,p9为一组。p1端输入5v电压时,x端输出5v,y端输出0v;p3端输入5v时,x端输 ...…

查看全部问答>

求MSP430G2553的寄存器介绍

由于刚接触这芯片,对于寄存器很不熟悉,希望各位大虾能指点一下,给我点资料…

查看全部问答>