蓝蓝的天
获得 57 次赞
帮助过170人
先上代码:UINT8 znFAT_Enter_Dir2(INT8 *dirpathUINT32 *pClusterUINT32 *pos) { UINT8 index=0res=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[i]) { if('\\'==dirpath[i] || '/'==dirpath[i]) { dirname[index]='\0'; index=0; res=Get_Dir_Start_Cluster(dirnamepCluster); if(res) { printf("333\r\n");return res; //·µ»Ø´íÎóÂë } *pos=i+1; } else { dirname[index]=dirpath[i]; 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=0len=0;UINT32 ijnxy;UINT8 temp;UINT32 ncluster=0; //Ö¸¶¨Ä¿Â¼ÎªÊ×Ŀ¼UINT32 *p;delay_init();uart_init(115200); //´®¿Ú³õʼ»¯Îª115200printf("´®¿ÚÉèÖÃÍê±Ï\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\\"&nclusterp)) if(!znFAT_Enter_Dir2("\\ABC\\"&nclusterp)) { printf("start cluster is %d\n"ncluster); } else { printf("fail.\n"); } printf("BBB\r\n");return 0; //while(1); } 定义了一个函数:UINT8 znFAT_Enter_Dir2(INT8 *dirpathUINT32 *pClusterUINT32 *pos) 功能是进入一个目录,获取目录的开始簇。程序下载进去,用串口助手查看,如下:只打印到AAA就停止了。我在znFAT_Enter_Dir2这个函数内部也设置了好多打印语句,可是一句也没打印出来。貌似进入该函数以后,出不来了,而且好像什么也没执行。我感到很奇怪,百思不得其解。还有一个问题,UINT8UINT32明明定义了,可是双击找定义的地方,提示:求高手解惑,谢谢!
我们公司搞硬件的画了一块板子,要改,加一根线,可是那个搞硬件的辞职了。老板让我搞。我直接在板子PCB上加了一根线,没经过原理图。可是铺铜的时候出问题了,如下图:没有节点,那个LYLJZT是我自己加的一个网络标号。不知道那个搞硬件的是怎么整的。请高手指教,谢谢!
我买了振南的板子和书,看上册第三章,做实验。主程序如下: delay_init(); //ÑÓʱº¯Êý³õʼ»¯ uart_init(9600);ZNX_Board_Init(); //ÕñÄÏZN-X¿ª·¢°å°å¼¶³õʼ»¯ VS1003_GPIO_Init();SD1_Init();TFT_init1(); //TFTÒº¾§³õʼ»¯TFT_clear(0x001f); //½«TFTÒº¾§ÓúìÉ«ÇåÆÁTFT_addr_set(00239319);for(j=32800;j<33104;j++){SD1_Read_Sector(jbuf1);for(i=0;i<256;i++)TFT_write_data((((u16)(buf1[i*2+1])<<8))+((u16)(buf1[i*2]))); //½«Í¼ÏñÊý¾ÝдÈëTFTÒº¾§}VS_Reset();VS_sin_test(100);MP3_XDCS=0; //ʹÄÜVS1003µÄÊý¾ÝƬѡfor(j=33104;j<33234;j++){SD1_Read_Sector(jbuf1);for(i=0;i<512;i++){VS_Send_Dat(buf1[i]);}}MP3_XDCS=1; //¹Ø±ÕÊý¾ÝƬѡVS_Flush_Buffer();//Çå¿ÕVS1003µÄÊý¾Ý»º³åÇø£¬´Ëº¯ÊýÖÐ×îºó½«VS_XDCSÖøߣ¬¼´¹Ø±ÕSDI SD卡里的图片可以正常在液晶上显示,可是MP3播放不正常。在SD卡里存的MP3在电脑上可以正常播放。用以下这一段程序MP3_XDCS=0; //´ò¿ªSDI£¬´Ëʱ¿ÉÒÔÏòVS1003дÈëÒôƵÊý¾Ýfor(i=0;i<15000;i++){ VS_Send_Dat(music[i]);//ÏòVS1003дÈëÒôƵÊý¾Ý } MP3_XDCS=1; //¹Ø±ÕSDI VS_Flush_Buffer();//Çå¿ÕVS1003µÄÊý¾Ý»º³åÇø£¬´Ëº¯ÊýÖÐ×îºó½«VS_XDCSÖøߣ¬¼´¹Ø±ÕSDImusic数组里存的mp3数据可以正常播放。请问高手,哪里有问题,谢谢!
我现在搞试验机,标定速度。单片机驱动步进电机驱动器,控制油缸的速度,还有个油箱。现在有个问题,速度不成比例,标定出来一个系数。然后控制油缸速度,设定0.5mm/s,1mm/s,2mm/s速度,结果油缸的速度不成比例,不是1:2:4的比例。不知道为什么。请高手指教,谢谢!