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

📄 ap_start.c

📁 Actions ucOS-II mp3方案源码,可以做参考
💻 C
字号:
/*
*******************************************************************************
*                ACTOS AP
*        start ap of sdk 3.0
*
*        (c) Copyright, Actions Co,Ld.
*             All Right Reserved
*
* File: AP_Start.c
* By  : wurui
* Version: 1> v1.00     first version     2005-9-19 8:28
*
*  $Id: AP_Start.c,v 1.10 2005/12/30 01:01:53 wurui Exp $
*******************************************************************************
*/

#include "declare.h"
int IdleCtr = 0;
  
void GUI_Task();    
void GUI_Idle();

char RTCSchTimer;
OS_EVENT *GUIToMainWindow = 0;
OS_EVENT *GUIToEBookWindow = 0;
OS_EVENT *Engine_In = 0;
OS_EVENT *Engine_Out = 0;


/*void TaskMessageSender(OS_EVENT *MessageAccepter,msg_t *message)
{
    INT8U err;
    err = MYOSQPost(MessageAccepter,message);
}*/

void cbBackgroundWin(WM_MESSAGE* pMsg) 
{
    switch (pMsg->MsgId) 
    {
    case WM_PAINT:
        GUI_SetBkColor(GUI_LIGHTBLUE);
        GUI_Clear();
        break;
    }
    WM_DefaultProc(pMsg);
}
void main()
{
#ifndef WIN32
    OS_ENTER_CRITICAL();
    output8(REG27_MASTER_IRQ_ENABLE,input8(REG27_MASTER_IRQ_ENABLE)&0x0df);   //usb退出时,没关rtc中断
    TM_Init();
    IRQ_intercept((int)&KeyISR,IRQ_KEY);
    RTCSchTimer = SetSystemTimer(&RTCSchISR, 1);/////////////////////////////////////////////////////
    OSInit();

    DRV_Install(DRV_KY,0);
    DRV_Install(DRV_UI,0); 
    DRV_Install(DRV_GUI,0);
    DRV_Install(DRV_FS,0); 
//    DRV_Install(DRV_STG,0); // nor flash.      
    DRV_Install(DRV_SDRAM,0);   
//    DRV_Install(DRV_IDE,0); 
     
    GetSysMsg();
#endif
    FS_Init(); 
    GUI_Init();   
    GUI_SetFont(&GUI_DUMMY);   
    GUI_SetColor(GUI_RED);
    GUI_SetBkColorIndex(GUI_LIGHTBLUE);

    WM_SetCallback(WM_HBKWIN, cbBackgroundWin);

#ifdef WIN32
    //打开字库文件
    if (OpenHZ("D:\\sdk_i_80h\\tools\\hzk16")==-1)
    {
        GUI_DispStringAt("open FONT err",10,10);        
    }

    if (OpenRES("D:\\sdk_i_80h\\tools\\UI30.RES") == -1)
    {
        GUI_DispStringAt("open RES err",10,10);        
    }
    
#else
    {
    char string[13];
    string[0] = 'U';
    string[1] = 'I';
    string[2] = '3';
    string[3] = '0';
    string[4] = '.';
    string[5] = 'R';
    string[6] = 'E';
    string[7] = 'S';
    string[8] = 0;
    
    if (OpenRES(string) == -1)
    {
        string[0] = 'o';
        string[1] = 'p';
        string[2] = 'e';
        string[3] = 'n';
        string[4] = ' ';
        string[5] = 'R';
        string[6] = 'E';
        string[7] = 'S';
        string[8] = ' ';
        string[9] = 'e';
        string[10] = 'r';
        string[11] = 'r';
        string[12] = 0;
        GUI_DispStringAt(string,10,10);        
    }
    }
#endif
    //GUIToMainWindow  = MYOSQCreate((msg_t *)0,MAXQUEUELENGTH);
    //GUIToEBookWindow = (OS_EVENT*)MYOSQCreate(ComMsg3,MAXQUEUELENGTH);
    //GUIToMusicWindow = MYOSQCreate((msg_t *)0,MAXQUEUELENGTH);
    //GUIToMainWindow  = (OS_EVENT*)OSQCreate(ComMsg1,9);
    //GUIToMusicWindow = (OS_EVENT*)OSQCreate(ComMsg2,9);
    //GUIToEBookWindow = (OS_EVENT*)OSQCreate(ComMsg3,9);

    //WM_SetCallback(WM_HBKWIN, cbBackgroundWin);    /* Set callback for background window */
#ifdef WIN32

    CREATE_TASK(&aTCB[3], "GUI_Idle", GUI_Idle, 7, Stack_3);
    CREATE_TASK(&aTCB[2], "GUI_TASK", GUI_Task,  1, Stack_2);
    MainTaskCreate();
    EBookTaskCreate();
    //MusicTaskCreate();
    //PlayTaskCreate();
#else   
    OSTaskCreate((void(*)(void *))(long)GUI_Idle, (void *)0x0000,  (void *)IDLE_SPACE, IDEL_PRIO, IDLE_ID);
    OSTaskCreate((void(*)(void *))(long)GUI_Task,    (void *)0x0000,  (void *)GUI_SPACE, GUI_PRIO, GUI_ID);

    MainTaskCreate();
    //OSTaskCreate((void(*)(void *))(long)test,    (void *)0x0000, (void *)PLAYER_ENGINE_SPACE, PLAYER_ENGINE_PRIO, PLAYER_ENGINE_ID);  
#endif
    DRV_Install(DRV_IDE,0); 
    OS_EXIT_CRITICAL();
    OSStart();
}

void GUI_Idle()
{
    while(1)
    {
        enable_interrupt();
        IdleCtr ++;
        OS_Sched(); 
    }
}

void GUI_Task()
{
    int speed = 0;
#ifndef WIN32
    output8(REG27_MASTER_IRQ_ENABLE,input8(REG27_MASTER_IRQ_ENABLE)|0x20);       
#endif

    //enable_interrupt();    
    //Enable_RTC_INT();
    while(1) 
    {
        GUI_Exec();           /* Do the background work ... Update windows etc.) */  
        //FB_UpdateScreen();
#ifndef WIN32
        speed++;
#endif
        OSTimeDly(5);
    }
}

void DelGUITask()
{
    INT8U err;
    
    for(;;)
    {
        err = OSTaskDel(GUI_PRIO);
        if(err == OS_NO_ERR || err == OS_TASK_DEL_ERR)
            break;
    }
}

⌨️ 快捷键说明

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