tangkeyang 发表于 2024-3-3 22:42:21

请教一下,STM32L4 使用FATFS+低功耗停止模式,退出停止模式后,FATFS不工作

求救,使用STM32+sd+fatfs搞了一个低功耗采集的仪表,定时唤醒采集,空闲时进入低功耗STOP模式, 从停止模式唤醒后, FATFS出错不工作   串口等其他功能正常
试了很多方法 如: 进入低功耗前卸载文件系统   之后再重新初始化,重新挂载等方式 然后卡在fmount, 可以给点参考意见吗?

retSD = f_mount(NULL, "0:", 1);       
        if(retSD == 0)
        printf("f_unmout\n");
        else printf("f_unmouterror\n");
                printf("准备进入停止模式\n");
                MyIWDG.FeedDog();
                        __HAL_RCC_PWR_CLK_ENABLE();
                __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON ,PWR_SLEEPENTRY_WFI);


                        SystemClock_Config();
//                       
                        HAL_Init();
//HAL_ResumeTick();
MX_GPIO_Init();
MX_DMA_Init();
MyIWDG.FeedDog();
                printf("已经退出停止模式\n");

MX_SDMMC1_SD_Init();

MX_FATFS_Init();
        printf("初始化完成\n");
        MyIWDG.FeedDog();

        retSD = SdMount();//挂载文件系统退出stop模式卡在这   下面信息也不打印
        printf("SdMountretSD=%d\n",retSD);
        if(retSD == 0)
        printf("sdmount_success\n");
        else printf("sdmount_serror\n");


eric2013 发表于 2024-3-4 00:51:59

唤醒后重新配置系统时钟就行,外设时钟一般不用重新初始化。

tangkeyang 发表于 2024-3-4 09:43:06

试过只重新配置系统时钟出错采想着重新初始化外设;进入低功耗前要不要关闭文件、卸载文件系统 ,唤醒后再重新挂载、以及打开文件,    我现在一个个试了,唤醒后,无论是挂载文件系统还是打开文件    都是返回FR_DISK_ERR,要么直接卡死   ;    唤醒后直接写的话(进入低功耗模式前不关闭文件,也不卸载文件系统,) 则返回FR_INVALID_OBJECT,    这个问题搞了两三天了
页: [1]
查看完整版本: 请教一下,STM32L4 使用FATFS+低功耗停止模式,退出停止模式后,FATFS不工作