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

📄 syscst.c

📁 ARM得编程实例。很经典。在win ce5.0环境下的编程实例
💻 C
字号:
/*******************************************************************
            
*******************************************************************/
#include "system.h"

#ifdef INTEL_X86_CPU 
    #include <stdio.h>
    #include <stdlib.h>
    #include <dos.h>
    #include <stdarg.h> 
    #include <string.h>
    #include <conio.h>
#endif

#include "utility.h"

#ifdef INTEL_X86_CPU 
    #include "stx.h"
    #include "dev.h"
    #include "timer.h"
#endif

#include "dbstru.h"
#include "hardware.h"
#include "SysCst.h"
#include "appmain.h"

#include "dbs\dbs.h"
#include "dsp\dsp.h"
#include "net\netsrv.h"

/************************ Debugging functiion ******************************/
#if defined(INTEL_X86_CPU) && defined(DEBUG)
    void SysLog(void);   /* Record System Log when system exits. */
    BYTE mypage = 4;
    BYTE bcycle = 0;
#endif

/*************************** Variable Definition ***************************/
#ifdef INTEL_X86_CPU 
    HTASK crtTask;       /* Task Handle */
    HBOX  tskBox = -1;   /* Mail Box Handle */
    HBOX  grpBox = -1;  
    UINT  synTick = 0;   /* System cycle timer */
#endif

/*************************** function prototype ****************************/
#ifdef INTEL_X86_CPU 
    TASK crtms(VOID);
    void CLS(void);
    #ifdef HARDWARETEST
        void TestLed(void);   /* 测试软件控制的LED */
        void TestSRAM(void);  /* 让Dsp测试其片外SRAM */
    #endif
#endif

/************************** Function Definition ****************************/
#ifdef INTEL_X86_CPU 
    /* Task with no code in body, only for system start */
    TASK crtms(VOID) { }    
    
    /* clear screen for debugging */
    void CLS(void)
    {
        _asm{
    	    mov ax,3
    	    int 10h
    	}
    }    
    
    /* Create a task and start it */
    RESULT  CreateTask(void) 
    {  
        RESULT error = STX_OK;
        error += mcsyscre(crtms, MAKENAME(K, B), &crtTask);
        error += mcsysstr(crtTask);
        return(error);
    } /* End of CreateTask */
#endif

/* System Custom Initialization */
void  SysCstInit(void) 
{   
    #if defined(INTEL_X86_CPU) && defined(DEBUG)
    onexit((onexit_t) SysLog);
    #endif
    
    #if defined(INTEL_X86_CPU) && defined(HARDWARETEST)
        TestLed();   /* 测试软件控制的LED */
        TestSRAM();  /* 让Dsp测试其片外SRAM */
    #endif

#ifdef ARM_XSCALE_CPU    
    ClearLed();
#endif

    /* Data Configuration Init */
    if (dbsFileLoad()) 
    {  
        failureExit();
    }

    if (dbsLoad()) 
    {     
        failureExit();
    }
    
    if (DPInit()) 
    {       
        failureExit();
    }
#ifdef INTEL_X86_CPU
    onexit((onexit_t) DPClose);
#endif

    /* Ethernet Chips Init */
    if (EthernetInit()) 
    {
        failureExit();
    }
    
    
    
    if (NetAliasInit(&CurNet)) 
    {
        failureExit();
    }    
        
    /* System Modules Init */

    
    /* Set Watchdog Timer Constant */
    #ifndef DEBUG
    setWDG(WATCHDOGTIME);
    #endif  
    
    /* control RUN & ERROR LEDs */
    darkenLed(POWER_LED);
    lightenLed(RUN_LED);    
} /* End of SysCstInit */

#ifdef INTEL_X86_CPU 
    /* Custom real-time timer interrupt */
    INTRFUNC mcusrrti( void )  
    {  
        if (++synTick >= SYNCYCLE)  
        {
    	    synTick = 0;
        }
        
        bwait++;
        bwaitack++;
        bcycle++;
    } /* End of mcusrrti */
#endif

void Run(void) 
{
    /* clear old datas in buffer */
    ClearBuffer(CurNet.COMM1);
    ClearBuffer(CurNet.COMM2);
    ClearBuffer(CurNet.ICUIn);
    ClearBuffer(CurNet.ICUOut);
    
    /* Enable watchdog timer */
    #ifndef DEBUG
    enableWDG();  
    #endif
    
    SetDPState(DPACTIVE);
    PollIO(IO_ALL);
    
    while (1 == 1) 
    {
    #if defined(INTEL_X86_CPU) && defined(DEBUG)
        bwait = 0;
        bwaitack = 0;        
        bcycle = 0;
        
        wprintf(0, 0, "%s %d", VERSION_STRING, synTick);
        if (kbdcode == KBD_aX)  
        {
		    failureExit();
	    } 
        else if (kbdcode == KBD_aO)
	    {
	        CLS(); 
	        mypage = 1;
        } 
        else if (kbdcode == KBD_aI)
	    {
            CLS();
	        mypage = 2;
        }
        else if (kbdcode == KBD_aN)
        {
            CLS();
            mypage = 3;
        }
        else if (kbdcode == KBD_aK)
        {
            CLS();
            mypage = 4;
        }
        else if (kbdcode == KBD_aT)
        {
            CLS();
            mypage = 5;
        }
        else if (kbdcode == KBD_aL)
        {
            CLS();
            mypage = 6;
        }
        else if (kbdcode == KBD_aV)
        {
            CLS();
            mypage = 7;
        } 
        else if (kbdcode == KBD_PGDN)
        {
            CLS();
            mypage = (BYTE)((mypage + 1) % 8);
        }
    #endif
    
       Appmain();

//        ExchangeData();
//        PollIO(IO_ALL);

        /* Clear Watchdog Timer */
    #ifndef DEBUG
        clearWDG(); 
    #endif

#if defined(INTEL_X86_CPU) && defined(DEBUG)
        wprintf(0, 50, "%d  ", bcycle);
#endif
    } /* end of while */
} /* End of Run */


#if defined(INTEL_X86_CPU) && defined(DEBUG)
/* Record System Log when system exits. */
void SysLog(void) 
{
    FILE *flog;

    flog = fopen("log.txt", "w+t");
    if (flog != NULL) 
    {
        fprintf(flog, "%s\n", VERSION_STRING);
        fclose(flog);     
    }    
}
#endif


⌨️ 快捷键说明

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