用歌声补够:

感谢大神,我也是为了谨慎起见,在读写EMMC之前先查询一下状态。

CardState = HAL_MMC_GetCardState(&hmmc);

if(CardState == HAL_MMC_CARD_READY)//准备好

{

Emmc_Read_Enable = 1;

}

else

{

//printf("读卡查询不成功 等待后重新查询 %d\r\n",CardState);

Card_Status_Deal(CardState);

HAL_Delay(10);//延时10Ms

}

结果一直CardState返回是4,我认为4-HAL_MMC_CARD_TRANSFER代表卡正在传输中(不可用)

因此就延时,从10ms一直延时到1秒,还是不行,我一度以为我EMMC坏了。

直到看到你的这篇文章,才意识到HAL_MMC_CARD_TRANSFER代表卡正在传输模式(是可用的)

#define HAL_MMC_CARD_READY 0x00000001U /*!< Card state is ready */

#define HAL_MMC_CARD_IDENTIFICATION 0x00000002U /*!< Card is in identification state */

#define HAL_MMC_CARD_STANDBY 0x00000003U /*!< Card is in standby state */

#define HAL_MMC_CARD_TRANSFER 0x00000004U /*!< Card is in transfer state */

#define HAL_MMC_CARD_SENDING 0x00000005U /*!< Card is sending an operation */

#define HAL_MMC_CARD_RECEIVING 0x00000006U /*!< Card i