ST意法半导体
直播中

李中宏

7年用户 1340经验值
私信 关注
[问答]

SDMMC2外设在HAL_SD_InitCard时遇到HardFault_Handler错误咋办

我正在使用带有 freeRTOS、fatFS 和 DMA 的 STM32H7A3ZI MCU
我已将 SDMMC2 外设设置为 4 位模式和 DMA(默认情况下在 STM32H7 MX 配置中)。我已经实现了这个例子中的代码来测试我的 SD 卡(microSDHC 32Gb,也在 2Gb SD 上测试)。
我在 RTOS 任务(1024 堆栈大小)中设置示例代码(CubeMX 检测到我使用 RTOS,因此 sd_diskio 文件设置为带有队列的 rtos,但是我没有在示例代码中实现队列)
我的问题是,在 HAL_SD_InitCard 部分,我在这一行遇到了 HardFault_Handler 错误:
>>> HAL_Delay(1U + (74U * 1000U / (sdmmc_clk)));
(在 stm32h7xx_hal_sd.c 中)

在硬件部分,我在数据和 CMD 引脚上有 47k 上拉电阻,电压供应正常。我也尝试不使用 47k 上拉和内部上拉。我已将 SD 时钟设置为 12.5Mhz。
关于什么可能导致此问题的任何想法?










回帖(1)

吴帆

2023-1-3 13:57:30
事实上,通过进一步调查,我注意到它来自 freeRTOS。我提高了 SDMMC 任务的优先级,硬故障消失了……现在导致 MemManage_Handler 错误(仍在使用 freeRTOS)。我需要使用 SDMMC 和 freeRTOS 找到一个好的模板示例,因为我不太确定我的代码。
但我可以确认,在没有 freeRTOS 的情况下,SDMMC 外围设备可以正常工作!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分