STM32H743的SD卡读写测试(SDIO)

水平不行,光入坑了。每次爬出来都精疲力竭。

把野火的SD卡测试程序,移植到字节的xi项目中,说啥也不行,直接用野火的程序就OK,移植过来就不行。

除了移植程序相关的.h.c文件外,发现一个很坑的文件,就是那个hal_conf文件。这里除了定义包含哪些库文件,还有其他的一些定义,已经不止一次被这个文件坑死。

这次移植sd卡程序,我的项目程序的conf文件,多了一行定义

#define  USE_SD_TRANSCEIVER           1U               /*!< use uSD Transceiver */

野火的程序里没有。

然后我的程序要么初始化失败,要么卡在Wait_SDCARD_Ready()这个函数里出不来,后来把定义改成

#define  USE_SD_TRANSCEIVER           0U               /*!< use uSD Transceiver */

这样就能初始化成功了,也不卡在上面那个函数里了。但是读写还是不行

后来发现野火程序里写了一句:SDMMC只能访问AXI_SRAM

然后我就把用于读写SD卡的数组定义到了AXI_SRAM,但是还是不行。简直要崩溃

有病乱投医,又改了3个地方

一个是SDMMC的分频: uSdHandle.Init.ClockDiv            = 8;

原来是0.  改成了8

一个是systick的中断优先级,在conf文件里:#define  TICK_INT_PRIORITY            ((uint32_t)0x0E) /*!< tick interrupt priority */

另一个是SDMMC的中断优先级:HAL_NVIC_SetPriority(SDMMC1_IRQn,3,0);  //配置SDMMC1中断

然后。。。。。。。

奇迹出现了!!!!

读写测试成功了!!!!

2020年1月1日,计划是把fatfs调好,没想到从早调到晚上,不带fatfs的程序都一直没整明白。还好苦心人天不负,得到点安慰!

水平不行,光入坑了,程序照抄都抄不明白。

你可能感兴趣的:(STM32H7)