⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 Ȧ-

📁 基于Luminary的JPEG图片浏览器
💻
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File name:               main.c
** Latest modified Date:    2008-07-22
** Latest Version:          1.0
** Descriptions:            Something about this file
**
**--------------------------------------------------------------------------------------------------------
** Created by:              张展威
** Created date:            2008-07-22
** Version:                 1.0
** Descriptions:            
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/

#include  "main.h"

/* 
** 定义Timer 
*/
#define  T0_A                   TIMER0_BASE , TIMER_A
#define  T0_CFG_32_PER          TIMER0_BASE , TIMER_CFG_32_BIT_PER
#define  T0_A_INT_TIMEOUT       TIMER0_BASE , TIMER_TIMA_TIMEOUT


/*********************************************************************************************************
定义全局的系统时钟变量
*********************************************************************************************************/
volatile unsigned long  GulSysClock  =  12000000UL;
ZOOMINFO GsImgSizeInfo; 
ZOOMINFO *GpsImgInfo;

#define BUFFER_LENGTH   (256)
INT16U GuiOutBuf[BUFFER_LENGTH];


#ifndef __USE_IDM
    #if (BUFFER_LENGTH < (240 * 320))
        #error The array length of GuiOutBuf[] at least 240 *320 !
    #endif
#else
    #if (BUFFER_LENGTH < 256)
        #error The array length of GuiOutBuf[] at least 256 !
    #endif
#endif

volatile INT32U GulDelayMs;

/*********************************************************************************************************
** 示例图片列表
*********************************************************************************************************/
const INT8U * GpucPicture[]={
    (INT8U *)GucGril,
    (INT8U *)GucFlower,
    (INT8U *)GucGrassland,
    (INT8U *)GucLibrary,
    (INT8U *)GucSky,
//    (INT8U *)GucStar100,
};


/*********************************************************************************************************
主函数(程序入口)
*********************************************************************************************************/
int  main(void)
{
    volatile INT32U ulTimer;
    INT16U * puiOutBuf;
    INT16U i,j;
    RECTANGLE zoon = {0,0,239,319,0,0};                                 /* 定义一矩形显示区域           */
    
    jtagWait();                                                         /* 防止JTAG失效,重要!         */
    sysInit();                                                          /* 系统初始化                   */
    GpsImgInfo =& GsImgSizeInfo;
    puiOutBuf = &GuiOutBuf[0];
    
    Formike240x320x16_ILI9320Init();                                  /* 显示屏初始化                 */
    Formike240x320x16_ILI9320BacklightOn();                           /* 点亮背景灯                   */
    j = sizeof(GpucPicture)/4;                                          /* 注意:sizeof()返回的是字节数 */
    lcmClr((tRectangle *)&zoon, GUIBACKCOLOR);                        /* 初始化zone区域               */
    writeString("基于Luminary的JPEG图片浏览器", 8, 100,IDMCOLOR(RED));
    delayMs(2000);                                                    /* 精确延时2S                   */
    while (1) {
        for (i = 0; i < j; i++) {
            lcmClr((tRectangle *)&zoon, JPEGBACKCOLOR);               /* 初始化zone区域               */
            if (jpgDecode((INT8U *)GpucPicture[i], GpsImgInfo, puiOutBuf) == false) {
                                                                        /* jpg图片解码并显示            */
                lcmClr((tRectangle *)&zoon, GUIBACKCOLOR);            /* 初始化zone区域               */
                writeString("解码错误!", 80, 100,IDMCOLOR(RED));
                //ledOn(LED3);                
            }
            //ledToggle(LED1);
            delayMs(2000);                                              /* 精确延时2S                   */
        }
    }
}



/*********************************************************************************************************
** 定时器的中断服务函数 
** 每毫秒中断一次
*********************************************************************************************************/
void  Timer0A_ISR(void)
{
    TimerIntClear(T0_A_INT_TIMEOUT);                                    /* 清除定时器超时中断,重要!   */
    if (GulDelayMs < 4294967295) {
        GulDelayMs++;                                                   /* 在delayMs()函数中清零,用于  */
                                                                        /* 精确延时                     */
    }
}


/*********************************************************************************************************
精确延时函数 GulDelayMs由定时器中断每1ms加1
*********************************************************************************************************/
void  delayMs(unsigned long  ulVal)
{
    GulDelayMs = 0;  
    while (GulDelayMs < ulVal);
}

/*********************************************************************************************************
LCM清屏函数
*********************************************************************************************************/
void lcmClr(tRectangle *psZone,unsigned long ulValue)
{
    psZone->uiXMin = 0;
    psZone->uiYMin = 0;    
    psZone->uiXMax = 239;
    psZone->uiYMax = 319;    
    psZone->uiXinZoon = 0;
    psZone->uiYinZoon = 0; 
    Formike240x320x16_ILI9320RectFill((void *)0, psZone, ulValue);      /* 画一矩形                     */
}


/*********************************************************************************************************
定时器初始化
*********************************************************************************************************/
void  timer0Init(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0);                             /* 使能定时器模块               */
    TimerConfigure(T0_CFG_32_PER);                                      /* 配置定时器为32位周期定时器   */
    TimerLoadSet(T0_A , GulSysClock/1000);                              /* 设置定时器初值               */
    TimerIntEnable(T0_A_INT_TIMEOUT);                                   /* 使能定时器超时中断           */
    IntEnable(INT_TIMER0A);                                             /* 使能定时器中断               */
    IntMasterEnable();                                                  /* 使能处理器中断               */
    TimerEnable(T0_A);                                                  /* 使能定时器计数               */
}
/*********************************************************************************************************
系统初始化
*********************************************************************************************************/
void  sysInit(void)
{
    INT32U i,j;  
    
    SysCtlLDOSet(SYSCTL_LDO_2_75V);                                     /* 设置LDO输出电压              */
    SysCtlClockSet(SYSCTL_USE_PLL |                                     /* 系统时钟设置,采用主振荡器   */
    SYSCTL_OSC_MAIN |
    SYSCTL_XTAL_6MHZ |
    SYSCTL_SYSDIV_4);
    
    GulSysClock  =  SysCtlClockGet();                                   /* 获取系统时钟,单位:Hz       */
    
    j = sizeof(GuiOutBuf)/2;                                            /* 注意sizeof()返回的是字节数   */
    for (i = 0; i < j; i++) {
        GuiOutBuf[i] = 0xFFFF;
    }
    timer0Init();                                                       /* 定时器初始化                 */
}


/*********************************************************************************************************
防止JTAG失效
*********************************************************************************************************/
void  jtagWait(void)
{
    INT32U GulDelayMs = 2000; 
    SysCtlPeriEnable(KEY_PERI);                                         /* 使能KEY所在的GPIO端口        */
    GPIOPinTypeIn(KEY_BASE , KEY_PIN);                                  /* 设置KEY所在管脚为输入        */
    
    while (GulDelayMs--) {
        ;
    }
    
    SysCtlPeriDisable(KEY_PERI);                                        /* 禁止KEY所在的GPIO端口        */
}

/*********************************************************************************************************
** End of File
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -