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

📄 main.c

📁 USB驱动程序,和NANDflash的驱动, 包括文件系统,cpu是arm
💻 C
字号:
#include "..\inc\option.h"
#include "..\inc\def.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\Hal.h"
#include "math.h"
volatile  PORTDATA LedStatus;
volatile  XXGFLAGS bXXGFlags;
volatile  int Usbevent;
void __irq Timer_Tick(void)
{	
    rI_ISPC=BIT_TIMER3;
    if(LedStatus.p1==1)
    {
	LedStatus.p1=0;
    }
    else
    {
	LedStatus.p1=1;
    }
    Led_Display(*(int*)&LedStatus);
}
void __irq ISR_SL811HS(void)
{
	rI_ISPC=BIT_EINT2;
	SL811Write(IntStatus,INT_CLEAR);
	Usbevent=TRUE;
}
void Timer_Init(void)
{

    rTCFG0=0x00000F00;	//dead zone=0,pre2=0,pre1=0xf,pre0=0
    rTCFG1=0x00004000;	//all interrupt,mux5=1/2,mux2=1/2,mux3=1/4,mux2=1/2,mux1=1/2,mux0=1/2
    
    rTCNTB3=0xc35000;		//(1/(60MHz/4/15))*0xc350=50ms	//(1/(60MHz/4/15))*0x4320=20ms
    rTCMPB3=0x0;

    rTCON=0x0020000;	//update T3
    rTCON=0x0090000;	//T3=auto reload,start	
    
    rINTCON=0x5;    //Non-vectored,IRQ enable,FIQ disable 
    rINTMOD=0x0;    //All=IRQ mode
    
    pISR_TIMER3=(unsigned)Timer_Tick;
    rINTMSK=BIT_GLOBAL;
    rINTMSK=~(BIT_GLOBAL|BIT_TIMER3);	//start timer INT
}
void Exint2_Init(void)
{
    rINTCON=0x5;    //Non-vectored,IRQ enable,FIQ disable 
    rINTMOD=0x0;    //All=IRQ mode
    
    rINTMSK=BIT_GLOBAL;
    pISR_EINT2=(int)ISR_SL811HS;
    rINTMSK=~(BIT_GLOBAL|BIT_TIMER3|BIT_EINT2);
}


void Main(void)
{
	int i;
    rSYSCFG=CACHECFG;   // Using 8KB Cache//
    Port_Init();
    Timer_Init();
    Exint2_Init();
    SL811ReSet();
    SL811_Init();
    Usbevent=TRUE;
    while(1) {
    if(Usbevent)
    {
    Usbevent=FALSE;
    SL811Write(IntStatus,INT_CLEAR);
    i=SL811Read(IntStatus);
	if((USB_RESET&i))
	{
		LedStatus.p2=0;
		Led_Display(*(int*)&LedStatus);
	   if(bXXGFlags.bits.SLAVE_ONLINE ==TRUE)
	   {
		bXXGFlags.bits.SLAVE_REMOVED=TRUE;
		bXXGFlags.bits.SLAVE_ONLINE =FALSE;
	   }
	}
	else	
	{
		LedStatus.p2=1;
		Led_Display(*(int*)&LedStatus);
	   if(bXXGFlags.bits.SLAVE_ONLINE == FALSE&&(i|0x7F))
	   {
		bXXGFlags.bits.SLAVE_FOUND=TRUE;
	   	bXXGFlags.bits.SLAVE_ONLINE =TRUE;
	   }
	}
	
	if( bXXGFlags.bits.SLAVE_FOUND )
	{
		bXXGFlags.bits.SLAVE_FOUND = FALSE;
		fSysInitialize();
		Delay(5000);
		continue;
	}
	if( bXXGFlags.bits.SLAVE_REMOVED )
	{
		bXXGFlags.bits.SLAVE_REMOVED = FALSE;
		Led_Display(*(int*)&LedStatus);
		LedStatus.p2=0;
	}
	
	}
    }
}

⌨️ 快捷键说明

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