先上代码: 
UINT8 znFAT_Enter_Dir2(INT8 *dirpath,UINT32 *pCluster,UINT32 *pos)  
{ 
 UINT8 index=0,res=0; 
 UINT32 i=1; 
         
// #ifndef USE_LFN 
 INT8 dirname[13]; 
// #else 
// INT8 dirname[MAX_LFN_LEN+1]; 
// #endif 
 
 *pos=1; 
 *pCluster=2; 
        printf("000\r\n"); 
 if(('\\'==dirpath[0] || '/'==dirpath[0]) && '\0'==dirpath[1]) //Èç¹ûÊÇ"\\"£¬ÔòÖ±½ÓÈ¡Ê×Ŀ¼´Ø£¬¼´µÚ2´Ø 
 { 
         printf("222\r\n"); 
  return ERR_SUCC; 
 } 
 ////////////////////////////// 
 printf("111\r\n"); 
 
 while('\0'!=dirpath) 
 { 
  if('\\'==dirpath || '/'==dirpath) 
  { 
   dirname[index]='\0'; 
   index=0; 
 
   res=Get_Dir_Start_Cluster(dirname,pCluster); 
   if(res)  
   {  
                 printf("333\r\n"); 
                        return res;  //·µ»Ø´íÎóÂë   
   } 
   *pos=i+1; 
  }  
  else 
  { 
   dirname[index]=dirpath; 
   index++; 
   #ifndef USE_LFN 
   if(index>12) //Èç¹û²»Ê¹Óó¤Ãû£¬ÔòĿ¼ÃûÒÔ¼°ÎļþÃû×²»Äܳ¬¹ý8+1+3 
   { 
                        printf("444\r\n"); 
        return ERR_SFN_ILL_LEN; //Ŀ¼Ãû³¤ÓÚ8.3£¬Òà·ÀÖ¹dirnameÒç³ö 
   } 
   #else 
   if(index>MAX_LFN_LEN) //Èç¹ûʹÓó¤Ãû£¬ÔòĿ¼ÃûÒÔ¼°ÎļþÃû×²»Äܳ¬¹ýÉ趨µÄ³¤Ãû×³¤¶È 
   { 
                 printf("555\r\n"); 
        return ERR_LFN_BUF_OUT; //Ŀ¼Ãû³¤ÓÚMAX_LFN_LEN£¬Òà·ÀÖ¹dirnameÒç³ö 
   }    
   #endif 
  } 
  i++; 
 } 
 printf("666\r\n");   
 return ERR_SUCC; //³É¹¦ 
} 
 
int main(void) 
{          
        UINT32 res=0,len=0; 
        UINT32 i,j,n,x,y; 
        UINT8 temp; 
        UINT32 ncluster=0;                                                                                //Ö¸¶¨Ä¿Â¼ÎªÊ×Ŀ¼ 
        UINT32 *p; 
         
        delay_init(); 
        uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 
        printf("´®¿ÚÉèÖÃÍê±Ï\r\n"); 
         
        znFAT_Device_Init(); //´æ´¢É豸³õʼ»¯ 
  printf("SD¿¨³õʼ»¯Íê±Ï\r\n"); 
        TFT_init2(); 
        TFT_clear(0x001f); 
        TFT_GPIO_DeInit(); 
        znFAT_Select_Device(0,&Init_Args); //Ñ¡ÔñÉ豸 
        TFT_init1(); 
        TFT_clear(0x0000); 
         
        res=znFAT_Init(); //Îļþϵͳ³õʼ»¯          
         
         if(!res) //Îļþϵͳ³õʼ»¯³É¹¦ 
         { 
                printf("Suc. to init FS\r\n"); 
                  
                printf("BPB_Sector_No: %d",Init_Args.BPB_Sector_No);    
                printf("Total_SizeKB: %d",Init_Args.Total_SizeKB);  
                printf("BytesPerSector: %d",Init_Args.BytesPerSector);  
                printf("FATsectors: %d",Init_Args.FATsectors);   
                printf("SectorsPerClust: %d",Init_Args.SectorsPerClust);  
                printf("FirstFATSector: %d",Init_Args.FirstFATSector);  
                printf("FirstDirSector: %d",Init_Args.FirstDirSector);  
                printf("FSsec: %d",Init_Args.FSINFO_Sec); 
                printf("Next_Free_Cluster: %d",Init_Args.Next_Free_Cluster); 
                printf("FreenCluster: %d\n",Init_Args.Free_nCluster);  
         } 
         else //Îļþϵͳ³õʼ»¯Ê§°Ü 
         { 
                printf("Fail to init FS , Err Code: %d",res); 
         } 
         printf("AAA\r\n"); 
         //if(!znFAT_Enter_Dir("\\ABC\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\",&ncluster,p)) 
         if(!znFAT_Enter_Dir2("\\ABC\\",&ncluster,p)) 
         { 
                 printf("start cluster is %d\n",ncluster); 
         } 
         else 
         { 
                 printf("fail.\n"); 
         } 
         printf("BBB\r\n"); 
        return 0; 
 //while(1);                                     
}    
定义了一个函数: 
UINT8 znFAT_Enter_Dir2(INT8 *dirpath,UINT32 *pCluster,UINT32 *pos)  
功能是进入一个目录,获取目录的开始簇。 
程序下载进去,用串口助手查看,如下: 
 
 
只打印到AAA就停止了。 
我在znFAT_Enter_Dir2这个函数内部也设置了好多打印语句,可是一句也没打印出来。 
貌似进入该函数以后,出不来了,而且好像什么也没执行。 
我感到很奇怪,百思不得其解。 
还有一个问题,UINT8,UINT32明明定义了,可是双击找定义的地方,提示: 
 
 
求高手解惑,谢谢! 
 
 
 |   
     
  
 |