main.c

来自「mp4的源码,主要包括loader,usb driver,mp3 decoder」· C语言 代码 · 共 98 行

C
98
字号
/***********************************************
copyright by Haia Tech
www.haia2004.com
************************************************/
#include "def.h"
#include "layer3.h"
#include "file_drv.h" 
#include "2410addr.h"

S16 pcm[200];
extern U16 Mp3_File_Sum

unsigned char *Main(void)		//fclk=192mhz
{
	U16 i;
	
	LED_RED_ON;
    for(i=0;i<200;i++)
      pcm[i]=0xf0f0;

	lcd_show();		//show welcom
	init_Isr(); 
	init_timer(); 

	Init_Dir();
	if(!Get_Mp3_Sum())
	{	
		printf("Cann't get mp3 sum.");
		while(1);
	}
	for(i=0,i<Mp3_File_Sum,i++)
	{
		Seek_Mp3_File(i);
		Open_Mp3_File();
		mp3();
	}
    while(1);
}





int init_timer()
{
	rTCFG0=	0x00001717;		//48MHz/24=2MHz
	rTCFG1=	0x00000000;		//every timer input is 1MHz
	rTCNTB0=100000000 ;		//interrupt for every 100ms
	rTCON=	0x00000009;		//set timer0 in auto reload mode and start
	rINTMSK &= (0<10);		//enable timer0 interrupt
	return 0;
}
	
int init_Isr()
{
	rINTMOD= 0x00000400;		//all use IRQ mode except TIMER0
	
	*pISR_TIMER0=timer0_isr;	//pISR_TIMER0 is initialized to timer0_isr
	*pISR_DMA2=DMA2_isr;	
	*pISR_DMA1=DMA1_isr;	
	return 0;
}


void __irq timer0_isr(void)
{
    int i;
    
    rSRCPND=rSRCPND & ~BIT_TIMER0;	//clear source interrupt peding bit
	rINTPND=BIT_TIMER0;		//clear interrupt pending bit
	
	if(counter)
	{
 	    counter=0;
 	    for(i=0;i<16;i++)
  	      pcm[i]=0x7fff; 
	} 
	else
	{
	  counter=1;
 	    for(i=0;i<16;i++)
  	      pcm[i]=0x00; 
	}
	
}


void __irq DMA2_isr(void)
{
	rINTPND=BIT_BDMA2;		//clear interrupt pending bit
}


void __irq DMA1_isr(void)
{
	rINTPND=BIT_BDMA1;		//clear interrupt pending bit
}

⌨️ 快捷键说明

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