大鼻子JOJO 2023-08-25 10:03 采纳率: 75%
浏览 53
已结题

stm32如何将FTP服务器建立到SD卡中

stm32 FTP如何将服务器建立到SD卡下(已挂载fat32文件系统)的问题
现在以及实现了32芯片做FTP服务器,测试读写文件也都正常,也成功挂载了FAT32文件系统,测试功能也正常,但是现在挂载服务器的目录是在根目录下(代码附在最下面),而挂载文件系统的位置我也选在了根目录下,但是为何FTP服务器却无法显示SD卡中的文件。
这是挂载文件系统时所指定的目录

res_sd = f_mount(&fs,"0:/",1);

img

void CH563NET_FTPConnect( void )
{
    u8 i = 0;

    CH563NET_FTPInitVari( );
  //i = ETH_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr);
    mStopIfError(i);
    printf("CH563NET_LibInit Success\n");

    CH563NET_FTPCtlServer( );
}
void CH563NET_FTPInitVari( )
{
    FTP   *pFTP;
    u8
    i,j;

    pFTP = &ftp;
    memset((void *)pFTP,'\0',sizeof(ftp));
    ftp.SocketDatMonitor = 255;
    ftp.SocketDatConnect = 255;
    ftp.SocketCtlMonitor = 255;
    ftp.SocketCtlConnect = 255;
    memset((void *)SourIP,'\0',sizeof(SourIP));
    j = 0;
    for(i=0;i<4;i++){                                                           /* ½«Ê®½øÖƵÄIPµØַת»»ËùÐèÒªµÄ×Ö·û¸ñʽ */
        if( IPAddr[i]/100 ){
            SourIP[j++] = IPAddr[i]/100 + '0';
            SourIP[j++] = (IPAddr[i]%100)/10 + '0' ;
            SourIP[j++] = IPAddr[i]%10 + '0';
        }
        else if( IPAddr[i]/10 ){
            SourIP[j++] = IPAddr[i]/10 + '0';
            SourIP[j++] = IPAddr[i]%10 + '0';
        }
        else SourIP[j++] = IPAddr[i]%10 + '0';
         SourIP[j++] = '.';
    }
    mInitFtpList( );
}
void  mInitFtpList( void )
{

    memset((void *)RootBuf1,'\0',sizeof(RootBuf1));
    sprintf(RootBuf1,Atest);
    memset((void *)RootBuf2,'\0',sizeof(RootBuf2));
    sprintf(RootBuf2,Btest);
    memset((void *)RootBuf3,'\0',sizeof(RootBuf3));
    memset((void *)RootBuf4,'\0',sizeof(RootBuf4));
    memset((void *)UserBuf,'\0',sizeof(UserBuf));
    sprintf(UserBuf,Ctest);
    memset((void *)ListRoot,'\0',sizeof(ListRoot));
    sprintf(ListRoot,"%s%4d A.txt\r\n%s%4d B.txt\r\n%sUSER\r\n",FileNature,
            strlen(RootBuf1),FileNature,strlen(RootBuf1),ListNature);           /* 当前目录 */
    memset((void *)ListUser,'\0',sizeof(ListUser));
    sprintf(ListUser,"%s%4d H.txt\r\n",FileNature,strlen(UserBuf));             /* 下一级目录 */
    memset((void *)NameFile,'\0',sizeof(NameFile));
    sprintf(NameFile,"USER\r\n");
    memset((void *)NameList,'\0',sizeof(NameList));
    sprintf(NameList,"A.txt#0B.txt#1");
    ftp.BufStatus |= 0x03;                                                      /* buf1和buf2不为空 */

}
void CH563NET_FTPCtlServer(void)
{
   u8 i;
   SOCK_INF TmpSocketInf;

   memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF));
   TmpSocketInf.SourPort = 21;
   TmpSocketInf.ProtoType = PROTO_TYPE_TCP;
   i = WCHNET_SocketCreat(&SocketId1,&TmpSocketInf);
   mStopIfError(i);
   ftp.SocketCtlMonitor = SocketId1;
   i = WCHNET_SocketListen(SocketId1);
   mStopIfError(i);
   printf("SocketId1 ctl:%d\n",(u16)SocketId1);
   printf("FTP Connect Success\r\n");
   mStopIfError(i);


}

  • 写回答

13条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 创建了问题 8月25日

悬赏问题

  • ¥20 这张图页脚大概具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22