STM32 SD卡熱拔插 FATFS 出現FR_DISK_ERR【避坑】

想做個熱拔插的sd卡讀取寫入,但發現f_open,f_write在拔插之後就一直出DR_DISK_ERR。一開始嘗試重新呼叫HAL_SD_Init,但是發現一直卡在裡面,後面看到這個博主的文章(下方鏈接),嘗試改了1B之後就可以HAL_SD_Init成功了,但是又卡在f_mount和f_open裡面了,後來發現還要重新呼叫MX_FATFS_Init()之後就能成功在拔插過後重新讀寫sd卡啦。分享以下代碼。[STM32] - STM32F407VET6使用STM32CubeMX配置FatFs,以及挂载时返回03错误码问题的解决-CSDN博客

重新插卡之後要做的代碼

MX_FATFS_Init();

hsd1.State = HAL_SD_STATE_RESET;

hsd1.Init.BusWide=SDMMC_BUS_WIDE_1B;

BSP_SD_Init();

拔卡之後要做的:

FATFS_UnLinkDriver("0:");
HAL_SD_DeInit(&hsd1);  

你可能感兴趣的:(stm32,嵌入式硬件,单片机)