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

📄 led.c

📁 一个精简的FAT16文件系统在NandFLASH上的建立。开发环境ARM7 S3C44b0
💻 C
字号:
#include "def.h"
#include "44b.h"
#include "utils.h"

typedef struct{
   U8 name[11];
   U8 attributes;
   U16 startclus;
   U16 dirID;
   U32 filesize;
   }DIR1;

void delay(void);
void ReadFAT(void);
void Readdir(void);
//*******************************
int Main()
{ 
   U16 i,sel; 
   unsigned char filename[11],c;
   U32 size;
    rPCONE	= 0x26568;	//0->input, 1 2->TXD0 RXD0, 3 4->input, 5->led, 6->buzzer, 7->led, 8->CODECLK
    rPDATE	= 0x70;
    rPUPE	= 0x000;	//disable all pull-up    
     
	rPCONC =0xfff4ff54;	//8 input,9 output
	rPUPC  = 0x0000;
	
    SystemClockInit();
    SerialSwitch(0);
    SerialChgBaud(115200);	
   
    puts("\n **************************************\n");
	puts("*                                       *\n");
	puts("*          Welcome to FAT !!!           *\n");
	puts("*             zouzhihuang               *\n");
	puts("*              2006.11.1                *\n");
	puts(" ***************************************\n");
	
   NandFlashInit();       
   //NandFlashEarse(0);
   delay();	
   //fatInit();  		    
   //dirInit();
   while(1)
   {
   puts("\n******************************************");
   puts("\n     *Select you command:              *\n");
   puts("*                      1---create a file *\n"); 
   puts("*                      2---Write a file  *\n");
   puts("*                      3---Read a file   *\n");
   puts("*                      4---Delete a file *\n");
   puts("*                      5---Show FAT      *\n"); 
   puts("*                      6---Show Dir      *\n");
   puts("*                      7---Clear         *\n"); 
   printf("\\>");
   sel=Uart_GetIntNum_GJ(); 
   printf("\nYour select is %d  ",sel);     
   switch(sel)
    {
     case 1:
       {
       printf("  Create a file\n");  
       printf("Please input file name:\n");
       printf("\\>");
        
        for(i=0;i<11;i++)filename[i]='\0';
        for(i=0;i<11;i++)
            {
             if((c=SerialRxChar())=='\r') {i=11;break;}
             filename[i]=c; //Uart_Getchar_GJ();
             printf("%c",filename[i]);
             }
        printf("\nPlease input file size:\n");
        printf("\\>");
        size=Uart_GetIntNum_GJ();
        printf("\n"); 
               	    
        CreateFile( filename,size);
        break;
        }
     case 2:
        {
         printf("  Write a file \n"); 
         printf("Please input file name:\n");
         printf("\\>");
         for(i=0;i<11;i++)
            {
             if((c=SerialRxChar())=='\r') {i=11;break;}
             filename[i]=c; //Uart_Getchar_GJ();
             printf("%c",filename[i]);             
             }
         printf("\nPlease input file size:\n");
         printf("\\>");
         size=Uart_GetIntNum_GJ();        	    
         WriteFile( filename,size);
         break;
        }     
     case 3:
       { 
        printf("  Read a file \n");
        printf("Please input file name:\n");
        printf("\\>");
        for(i=0;i<11;i++)
            {
             if((c=SerialRxChar())=='\r') {i=11;break;}
             filename[i]=c; //Uart_Getchar_GJ();
             printf("%c",filename[i]);
             
             }
        printf("\nPlease input file size:\n");
        printf("\\>");
        size=Uart_GetIntNum_GJ();
        printf("\n"); 	    
        ReadFile( filename,size);
        break;
        }
      case 4:
         { 
        printf("  Delete a file \n"); 
        printf("Please input file name:\n");
        printf("\\>");
        for(i=0;i<11;i++)
            {
             if((c=SerialRxChar())=='\r') {i=11;break;}
             filename[i]=c; //Uart_Getchar_GJ();
             printf("%c",filename[i]);
             
             }        	    
        DeleteFile( filename);
        break;
        }
          
      case 5: 
          printf("  Show FAT \n");
          ReadFAT(); break;
      case 6:
          printf("  Show Dir \n");
          Readdir(); break;
      case 7:
          {
          printf("  Clear\n");
          NandFlashEarse(0);
          fatInit();  		    
          dirInit(); 
           break;
           }
            
       }
    }

   return 0;    
}
//******************************
void delay()
{
 int i;
 for(i=0;i<=40000;i++);

}
//****************************** //读FAT
void ReadFAT(void)
{
  U16 fat1[256],i;
 NandFlashRead(0,0,fat1);
	 printf("\nRead FAT:  \n");
    
   for(i=0;i<10;i++){
      printf("        %d->(0x%4x)",i,fat1[i]);}
 } 
//******************************* //读dir 
void Readdir()
{ U16 i,j;
  DIR1 file1[16];
  unsigned char a[512];
  
 
  NandFlashRead(0,1,a);	                             
	 u8toDir(a,file1);
printf("\nRead DIR:  ");
printf("\n     Dir           Name      startclus    filesize ");

	 for(i=0;i<4;i++){
	                   printf("\n    File%d: ",i);
	                   printf("   %s   ",file1[i].name);
	                   //printf("    attributes-><0x%x>  ",file1[i].attributes);	                   
	                   printf("     0x%x    ",file1[i].startclus);
	                   //printf("    dirID-><0x%x>  ",file1[i].dirID);
	                   printf("      %d    ",file1[i].filesize);
	                  }
 }  
//****************************** 

⌨️ 快捷键说明

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