| 在stm32f407中SD卡的读写不正常,仿真分析了程序还是不太明白如何读取SDIO的FIFO。 通过仿真发现读取FIFO是通过stm32f4xx_ll_sdmmc.c中的SDIO_ReadFIFO()函数完成的。/**  * @brief  Read data (word) from Rx FIFO in blocking mode (polling)   * @param  SDIOx Pointer to SDMMC register base  * @retval HAL status  */uint32_t SDIO_ReadFIFO(SDIO_TypeDef *SDIOx){  /* Read data from Rx FIFO */   return (SDIOx->FIFO);} 我不明白这怎样的逻辑?SD卡的FIFO怎么知道程序已经读过了,并知道要移动FIFO?在HAL_SD_ReadBlocks()下没有设置这样的标志。 
 
 if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_RXFIFOHF)){  /* 从SDIO Rx FIFO读取数据 */  for(count = 0U; count < 8U; count++)  {    *(tempbuff + count) = SDIO_ReadFIFO(hsd->Instance);  }  tempbuff += 8U;}
 
 有没有懂行的高手能解释一下?查阅了数据手册、参考手册和代码文档,还是搞不太明白。 
 |