打印
[STM32H7]

使用HAL在STM32h745上挂载SD卡时出现问题

[复制链接]
51|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
石榴大王|  楼主 | 2025-6-16 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我将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 */

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

21

帖子

0

粉丝