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 + -
显示快捷键?