我将SDCARD插到板上时遇到了一些问题。想使用SDIO 4-Wire将数据写入SD卡,我使用的是带Waveshare适配器的STM32 h745 Nucleo板。我能够初始化卡,能够读取CID数据,并确认它是正确的卡,但当我尝试挂载卡:
void StartDefaultTask(void const * argument){ /* USER CODE BEGIN StartDefaultTask */ if(f_mount(&fs, SDPath, 0) == FR_OK) { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, GPIO_PIN_SET); } /* Infinite loop */ for(;;) { osDelay(1); } /* USER CODE END StartDefaultTask */}在sd_diskio. c中的初始SD_read函数中卡住了 DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count){ DRESULT res = RES_ERROR; uint32_t timer;#if (osCMSIS < 0x20000U) osEvent event;#else uint16_t event; osStatus_t status;#endif#if (ENABLE_SD_DMA_CACHE_MAINTENANCE == 1) uint32_t alignedAddr;#endif /* * ensure the SDCard is ready for a new operation */ if (SD_CheckStatusWithTimeout(SD_TIMEOUT) < 0) { return res; } #if defined(ENABLE_SCRATCH_BUFFER) if (!((uint32_t)buff & 0x3)) {#endif /* Fast path cause destination buffer is correctly aligned */ uint8_t ret = BSP_SD_ReadBlocks_DMA((uint32_t*)buff, (uint32_t)(sector), count); if (ret == MSD_OK) {#if (osCMSIS < 0x20000U) /* wait for a message from the queue or a timeout */ event = osMessageGet(SDQueueID, SD_TIMEOUT);卡在这条语句: event = osMessageGet(SDQueueID, SD_TIMEOUT);已禁用SD_TRANSCIEVER: #define USE_SD_TRANSCEIVER 0U /*!< use uSD Transceiver */
|