水平不行,光入坑了。每次爬出来都精疲力竭。
把野火的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

在将野火的SD卡测试程序移植到STM32H743的项目中遇到困难,初始移植后程序无法正常工作。问题出在`hal_conf`文件的配置上,特别是`USE_SD_TRANSCEIVER`的定义。通过调整该定义以及SDMMC的分频、SYSTICK中断优先级和SDMMC中断优先级,最终实现了SD卡的正常读写。这是一个关于STM32H743 SDIO接口调试的实战经验。
最低0.47元/天 解锁文章
829

被折叠的 条评论
为什么被折叠?



