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

📄 main.i

📁 mp3量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 I
📖 第 1 页 / 共 5 页
字号:
{			
	unsigned char	prIsActive;					
	unsigned char	prStartHead;				
	unsigned short	prStartCylSect;				
	unsigned char	prPartType;					
	unsigned char	prEndHead;					
	unsigned short	prEndCylSect;				
	unsigned int	prStartLBA;					
	unsigned int	prSize;						
};

struct partrecordBytes 
{			
	unsigned char	prIsActive;					
	unsigned char	prStartHead;				
	unsigned char	prStartCylSect[2];			
	unsigned char	prPartType;					
	unsigned char	prEndHead;					
	unsigned char	prEndCylSect[2];				
	unsigned char	prStartLBA[4];				
	unsigned char	prSize[4];					
};
        
struct partsector
{
	char	psPartCode[512-64-2];		
	unsigned char	psPart[64];					
	unsigned char	psBootSectSig0;				
	unsigned char	psBootSectSig1;


};

struct extboot {
	char	exDriveNumber;				
	char	exReserved1;				
	char	exBootSignature;			

	char	exVolumeID[4];				
	char	exVolumeLabel[11];			
	char	exFileSysType[8];			
};

struct bootsector50 {
	unsigned char	bsJump[3];					
	char	bsOemName[8];				
	char	bsBPB[25];					
	char	bsExt[26];					
	char	bsBootCode[448];			
	unsigned char	bsBootSectSig0;				
	unsigned char	bsBootSectSig1;				


};


struct bpb50 {
        unsigned short	bpbBytesPerSec; 
        unsigned char	bpbSecPerClust; 
        unsigned short	bpbResSectors;  
        unsigned char	bpbFATs;        
        unsigned short	bpbRootDirEnts; 
        unsigned short	bpbSectors;     
        unsigned char	bpbMedia;       
        unsigned short	bpbFATsecs;     
        unsigned short	bpbSecPerTrack; 
        unsigned short	bpbHeads;       
        unsigned int	bpbHiddenSecs;  
        unsigned int	bpbHugeSectors; 
};

struct bootsector710 {
	unsigned char	bsJump[3];					
	char	bsOemName[8];				
	char	bsBPB[53];					
	char	bsExt[26];					
	char	bsBootCode[418];			
	unsigned char	bsBootSectSig2;				
	unsigned char	bsBootSectSig3;				
	unsigned char	bsBootSectSig0;				
	unsigned char	bsBootSectSig1;				




};

struct bpb710 {
		unsigned short	bpbBytesPerSec;	
		unsigned char	bpbSecPerClust;	
		unsigned short	bpbResSectors;	
		unsigned char	bpbFATs;		
		unsigned short	bpbRootDirEnts;	
		unsigned short	bpbSectors;		
		unsigned char	bpbMedia;		
		unsigned short	bpbFATsecs;		
		unsigned short	bpbSecPerTrack;	
		unsigned short	bpbHeads;		
		unsigned int	bpbHiddenSecs;	

		unsigned int	bpbHugeSectors;	

		unsigned int     bpbBigFATsecs;
		unsigned short      bpbExtFlags;	


		unsigned short      bpbFSVers;	

		unsigned int     bpbRootClust;	
		unsigned short      bpbFSInfo;	
		unsigned short      bpbBackup;	
		
};

struct bpb710Bytes {
		unsigned char	bpbBytesPerSec[2];	
		unsigned char	bpbSecPerClust;	
		unsigned char	bpbResSectors[2];	
		unsigned char	bpbFATs;		
		unsigned char	bpbRootDirEnts[2];	
		unsigned char	bpbSectors[2];		
		unsigned char	bpbMedia;		
		unsigned char	bpbFATsecs[2];		
		unsigned char	bpbSecPerTrack[2];	
		unsigned char	bpbHeads[2];		
		unsigned char	bpbHiddenSecs[4];	

		unsigned char	bpbHugeSectors[4];	

		unsigned char     bpbBigFATsecs[4];
		unsigned char      bpbExtFlags[2];	


		unsigned char      bpbFSVers[2];	

		unsigned char     bpbRootClust[4];	
		unsigned char      bpbFSInfo[2];	
		unsigned char      bpbBackup[2];	
		
};



struct direntry {
		unsigned char		deName[8];      	




		unsigned char		deExtension[3]; 	
		unsigned char		deAttributes;   	
#line 239 "FAT.h"
		unsigned char        deLowerCase;    	


		unsigned char        deCHundredth;   	
		unsigned char        deCTime[2];     	
		unsigned char        deCDate[2];     	
		unsigned char        deADate[2];     	
		unsigned short        deHighClust; 		
		unsigned char        deMTime[2];     	
		unsigned char        deMDate[2];     	
		unsigned short        deStartCluster; 	
		unsigned int       deFileSize;  		
};


struct direntryBytes {
		unsigned char		deName[8];      	




		unsigned char		deExtension[3]; 	
		unsigned char		deAttributes;   	
#line 270 "FAT.h"
		unsigned char        deLowerCase;    	


		unsigned char        deCHundredth;   	
		unsigned char        deCTime[2];     	
		unsigned char        deCDate[2];     	
		unsigned char        deADate[2];     	
		unsigned char        deHighClust[2]; 		
		unsigned char        deMTime[2];     	
		unsigned char        deMDate[2];     	
		unsigned char        deStartCluster[2]; 	
		unsigned char        deFileSize[4];  		
};





struct winentry {
		unsigned char			weCnt;			


		unsigned char		wePart1[10];
		unsigned char		weAttributes;

		unsigned char		weReserved1;
		unsigned char		weChksum;
		unsigned char		wePart2[12];
		unsigned short       	weReserved2;
		unsigned char		wePart3[4];
};

struct winentryBytes {
		unsigned char			weCnt;			


		unsigned char		wePart1[10];
		unsigned char		weAttributes;

		unsigned char		weReserved1;
		unsigned char		weChksum;
		unsigned char		wePart2[12];
		unsigned char       	weReserved2[2];
		unsigned char		wePart3[4];
};











#line 332 "FAT.h"



#line 341 "FAT.h"




struct FileInfoStruct
{
	unsigned int StartCluster;			
	unsigned int Size;					
	unsigned char Attr;					
	
	
	unsigned int Sector;				
	unsigned short Offset;				
};




extern unsigned short fatGetWord(unsigned char * addr);
extern unsigned int fatGetDWord(unsigned char * addr);





	extern unsigned char SearchInit(void);
	extern unsigned char Search(unsigned short *music_record_addr,struct direntryBytes*MusicInfo,unsigned short *Count,unsigned char *type);
	extern unsigned char SearchLrc(unsigned char *dir,unsigned char * longnamebuffer,struct direntryBytes*LrcInfo,unsigned short music_record_addr);


extern unsigned char FAT_LoadPartCluster(unsigned int cluster,unsigned char part,unsigned char * buffer);




extern unsigned char FAT_Init(void);

extern unsigned int FAT_NextCluster(unsigned int cluster);
extern unsigned int FAT_FindFreeCluster(void);
extern unsigned char FAT_DisDir(unsigned char *dir);
extern unsigned short FAT_FindItem(unsigned int cluster, unsigned char *name, struct FileInfoStruct *FileInfo);
extern unsigned int FAT_Open(unsigned char * dir);
extern unsigned int FAT_OpenDir(unsigned char * dir);
extern unsigned char FAT_Read(unsigned int pointer, unsigned int size);
extern unsigned char FAT_Rename(unsigned char *dir,unsigned char *newname);
extern unsigned char FAT_ModifyFAT(unsigned int cluster,unsigned int val);
extern unsigned char FAT_Delete(unsigned char *dir);
extern unsigned char FAT_DelItem(struct FileInfoStruct *FileInfo);
extern unsigned short FAT_FindFreeItem(unsigned int cluster, struct FileInfoStruct *FileInfo);
extern unsigned char FAT_MkDir(unsigned char * dir);
extern unsigned char FAT_Write(unsigned int cluster,unsigned char *data,unsigned int size);
extern unsigned int FAT_Create(unsigned char * dir,unsigned int size);
extern unsigned char FAT_RmDir(unsigned char * dir);
extern unsigned short FAT_Close(unsigned int * p);
#line 59 "main.c"
#line 1 "LCD_APP.h"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 




#line 1 "LCD_ASCII.h"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 





#line 22 "LCD_ASCII.h"

extern void Dis_Ascii_12_fast(unsigned short x,unsigned short y,unsigned char ch);

extern void Dis_Ascii_12(unsigned short x,unsigned short y,unsigned char ch);
extern void Dis_Ascii_16(unsigned short x,unsigned short y,unsigned char ch);

#line 22 "LCD_APP.h"
#line 1 "LCD_GBK.h"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 




#line 21 "LCD_GBK.h"

extern unsigned int FAT_Open(unsigned char * dir);
extern unsigned char (* FAT_ReadSector)(unsigned int,unsigned char *);
extern unsigned char (* FAT_WriteSector)(unsigned int,unsigned char *);

extern unsigned char GBK_Ini(void);

extern unsigned char Dis_GBK12_fast(unsigned short x,unsigned short y,unsigned char *ch);

extern unsigned char Dis_GBK12(unsigned short x,unsigned short y,unsigned char *ch);
extern unsigned char Dis_GBK16(unsigned short x,unsigned short y,unsigned char *ch);
extern unsigned char Unicode_to_GBK(unsigned char *ch);
extern unsigned char GBK_to_Unicode(unsigned char *ch);

#line 23 "LCD_APP.h"




extern unsigned char LCD_print12_fast(unsigned short x,unsigned short y,unsigned char *str);

extern void Print_ICON_12(unsigned short x,unsigned short y,unsigned char ch);   
extern void Print_ICON1_12(unsigned short x,unsigned short y,unsigned char ch);  
extern unsigned char LCD_print12_P(unsigned short x,unsigned short y,unsigned char *str);
extern unsigned char LCD_print16_P(unsigned short x,unsigned short y,unsigned char *str);
extern unsigned char LCD_print12(unsigned short x,unsigned short y,unsigned char *str);
extern unsigned char LCD_print16(unsigned short x,unsigned short y,unsigned char *str);
extern unsigned char LCD_print_unicode16(unsigned short x,unsigned short y,unsigned short *str);
extern unsigned char LCD_print_unicode12(unsigned short x,unsigned short y,unsigned short *str);

#line 60 "main.c"
#line 61 "main.c"
#line 62 "main.c"




#line 85 "main.c"
                      



































































#line 159 "main.c"














 
enum IconTag
{
	Playing,Pause,RepetAll,RepetOne,Shuffle,Time,Music,Speaker
};

 
extern unsigned char LongNameBuffer[80];
extern unsigned char LongNameFlag;

 
extern unsigned char FAT32_Enable;

extern unsigned short SectorsPerClust;
extern unsigned short FirstDataSector;



struct direntryBytes MusicInfo;	 
struct direntryBytes LrcInfo;	 


 








unsigned short totalsongs;	 
unsigned char type;			 
unsigned char lrc =0;			 
unsigned char HanziEnable = 0;	 

 
struct LrcStruct_s {
	struct LrcStruct_s * next;	 
	unsigned int time;				 
	unsigned short eeaddr;			 
};


struct LrcStructHead_s {
	struct LrcStruct_s *header;	 

	unsigned char title[32];			 

	unsigned char artist[16];			 
	unsigned short offset;					 
       unsigned char sign;					 
};




struct LrcStructHead_s LrcStructHead;	 

 

unsigned char lrcbuffer[sizeof(struct LrcStruct_s) * 120];

 

unsigned char lrcdatbuf[4096];


unsigned char track[128];			 

void ClearTrackInfo()		 
{
	unsigned char i;
	for(i=0;i<128;i++)track[i] = 0;
}

unsigned char SetTrack(unsigned short songs) 
{
	unsigned char byte_offset;
	unsigned char bit_offset;
	songs--;
	byte_offset = songs/8;
	bit_offset = songs%8;
	if(track[byte_offset] & (1<<bit_offset))return 1;
	else
	{
		track[byte_offset] |= 1<<bit_offset;
		return 0;
	}
}





 

void Delay(unsigned short n)
{
	
	while(n--);
}


unsigned char  FLGG=0;
void  __irq  Timer0_Exception(void)
{
    
	if(FLGG==0 ) {  (*((volatile unsigned long *) 0xE0028004))=(0x01 << 21);	FLGG=1;}

	else  {(*((volatile unsigned long *) 0xE002800C))=(0x01 << 21);   FLGG=0;	 }

	(*((volatile unsigned long *) 0xE0004000)) = 0x01;

    (*((volatile unsigned long *) 0xFFFFF030)) = 0;  
}



void Time0Init(void)
{
	(*((volatile unsigned long *) 0xE000400C))=0;
	
    (*((volatile unsigned long *) 0xE0004014)) = 0x03;

    (*((volatile unsigned long *) 0xE0004018)) = 0xffffffff;    
 
    (*((volatile unsigned long *) 0xE0004004)) = 0x03;

	(*((volatile unsigned long *) 0xE0004004)) = 0x01;

    


	(*((volatile unsigned long *) 0xFFFFF00C)) = 0x00;
    
     
	(*((volatile unsigned long *) 0xFFFFF200)) = (0x20 | 0x04);

	

    
 }




unsigned char strcomp(unsigned char * src, unsigned char * dst)  
{
	while(*src)
	{
		if(*src++ != *dst++)return 0;
	}
	return 1;
}

unsigned char strcomp_noncase(unsigned char * src, unsigned char * dst) 
{
	unsigned char * p1 = src, * p2 = dst;
	while(*p1)
	{
		if((*p1 == *p2) || ((*p1<*p2)&&((*p2-*p1) == 0x20 )) )
		{
			p1 ++;
			p2 ++;
		}
		else return 0;
	}
	return 1;
}

 



unsigned char LrcProc(unsigned char *LongNameBuffer,unsigned short music_record_addr)  

{

	 
	struct LrcStruct_s * LrcStruct_p;
	struct LrcStruct_s * LrcStruct_p_up, * LrcStruct_p_temp,* LrcStruct_p_down;
	struct LrcStruct_s * LrcStruct_p_header;
		
	unsigned short lrcaddr;		 
	unsigned char part;			 
	unsigned short i;				 
	unsigned short j;
	unsigned char temp;			 
	unsigned char * buffer;		 
	unsigned short min,sec,ms;	 
	unsigned char sector;			 
	unsigned char totalsect;		 
	unsigned short leftbytes;		 
	unsigned int p;			 
	unsigned char mscnt;			 
       
	LrcStructHead.header = (struct LrcStruct_s *)lrcbuffer;	 




	if(SearchLrc("\\lrc",LongNameBuffer,&LrcInfo,music_record_addr)==0)	 

	{ 
		printf(("\r\n*****************************************************\r\n"));
		printf(("Found LRC file!\r\n"));
		printf(("\r\nAnalyzing LRC file ...........\r\n"));
	   
		lrc = 1;								 
		lrcaddr = 0;							 
	   
		LrcStruct_p = LrcStructHead.header;		 
		for(i=0;i<120-1;i++)
		{
			LrcStruct_p->next = LrcStruct_p + 1;
			LrcStruct_p = LrcStruct_p->next;
		}
		LrcStruct_p->next = 0;
		LrcStruct_p = LrcStructHead.header;
								  
		LrcStructHead.offset = 0;				 
		LrcStructHead.title[0] = '\0';
		LrcStructHead.artist[0] = '\0';
	   
		buffer = malloc(520);					 
		if(buffer==0)
		{



			return 1;
		}

		p = get16_little(LrcInfo.deStartCluster)+(((unsigned int)get16_little(LrcInfo.deHighClust))<<16);	 
		totalsect = get32_little(LrcInfo.deFileSize)/512;  
		leftbytes = get32_little(LrcInfo.deFileSize)%512;  	
		sector=0;				 

     
		while(1)
		{
			for(part=0;part<SectorsPerClust;part++)	 
			{
				if(FAT_LoadPartCluster(p,part,buffer))
				{



					free(buffer);
					return 1;
				}
				for(j=0;j<512;)	 
				{
					if(sector == totalsect && j == leftbytes)	 
					{
						part = SectorsPerClust;		 
						break;
					}
					if(buffer[j] == '[')			 
					{



                                     
						i = 0;
						if(strcomp_noncase("TI:",&buffer[j+1]))		 
						{
							j+=4;		 
							while(1)		 
							{
								temp = buffer[j++];
								if(temp == 0x0d || temp == 0x0a || temp == ']' || i> (32 - 2))  
									break;
								LrcStructHead.title[i++] = temp;
							}
							LrcStructHead.title[i] = 0;	 
                        



								printf(("Title  : %s \r\n"),LrcStructHead.title);

                                            
						}
 						
						else if(strcomp_noncase("AR:",&buffer[j+1]))	 
						{
							j+=4;	 
							while(1)	 
							{
								temp = buffer[j++];
								if(temp == 0x0d || temp == 0x0a || temp == ']' || i>(16 - 2))	 
									break;
								LrcStructHead.artist[i++] = temp;
							}
							LrcStructHead.artist[i] = 0;		 
                        



								printf(("Artist : %s \r\n"),LrcStructHead.artist);

	 
						}
 
						else if(strcomp_noncase("OFFSET:",&buffer[j+1]))	 
						{
							j+=8;	 
						
							LrcStructHead.offset = 0;	 
 							LrcStructHead.sign = 1;




								

                                           
							while(1)	 
							{
								temp = buffer[j++];




                                                       
								if(temp == ']')break;	 
								if(temp == '-')			 
								{
									LrcStructHead.sign = 0;
									continue;
								}
								LrcStructHead.offset *= 10;			 
								LrcStructHead.offset += (temp-0x30);
							}
                                           



                                             
						}
 					
						else if(strcomp_noncase("BY:",&buffer[j+1]))	 
						{											 
							j+=4;
                                              



                                               
							while(1)
							{
								temp = buffer[j++];




                                                       
								if(temp == 0x0d || temp == 0x0a || temp == ']' ||i>30)break;
							}



						}
 									 
						else if(strcomp_noncase("AL:",&buffer[j+1]))	 
						{
							j+=4;




								uart0_prints(("Album  : "));


							while(1)
							{
								temp = buffer[j++];   
								if(temp == 0x0d || temp == 0x0a || temp == ']' ||i>30)break;
								uart0_putc(temp);
							}
							printf("\r\n");
						}
 									   
						else		 
						{
							j+=1;
							 
							if(sector == totalsect && j == leftbytes + 1) goto end;  
							if(j == 512)	 
							{
								if(part == (SectorsPerClust - 1))	 
								{
									
									p=FAT_NextCluster(p);
									if(p == 0x0fffffff || p == 0x0ffffff8 || (FAT32_Enable == 0 && p == 0xffff))
									{



										goto end;
									}
									part = 0;	 
									if(FAT_LoadPartCluster(p,part,buffer))
									{



										free(buffer);
										return 1;
									}
								}
								else 	 
								{
									part ++;	 
									if(FAT_LoadPartCluster(p,part,buffer))
									{



										free(buffer);
										return 1;
									}
								}
								sector ++;	 
								j = 0;		 
							}
							 											  
							min = 0;		 
							sec = 0;
							ms = 0;
							i = 0;		 
							while(1)
							{
								temp = buffer[j++];




														  
								 
								if(sector == totalsect && j == leftbytes + 1) goto end;	 
								if(j == 512)		 
								{
									if(part == (SectorsPerClust - 1))	 
									{
										
										p=FAT_NextCluster(p);
										if(p == 0x0fffffff || p == 0x0ffffff8 || (FAT32_Enable == 0 && p == 0xffff))
										{



											goto end;
										}
										part = 0;	 
										if(FAT_LoadPartCluster(p,part,buffer))
										{



											free(buffer);
											return 1;
										}
									}
									else 	 
									{
										part ++;	 
										if(FAT_LoadPartCluster(p,part,buffer))
										{



											free(buffer);
											return 1;
										}
									}
									sector ++;	 
									j = 0;		 
								}
								 														  
								if((temp < '0' || temp > '9') && temp != ':' && temp != '.')break;	 
								if(temp == ':'){i=1;continue;}

⌨️ 快捷键说明

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