STMCU小助手
发布时间:2021-12-15 11:00
|
关于STM32F7使用SDMMC外设移植FatFs遇到f_mount 挂载成功,而f_open 函数未运行的解决方法/ f/ ~1 R' {; w1 N5 ]: O 本文开发环境:' c9 G, r/ S2 L F [ IDE环境:Keil_MDK_5.28 ]" v. A$ ^3 t( l6 ^ [ MCU型号:STM32F723 ], @0 F, o" Q1 v- q& |( i8 c 这是我在main()函数内的代码,完成SDMMC和FatFs的初始化后打印SD卡的信息及操作步骤的反馈信息,如果正常的话应该会在SDCard里新建一个test.txt的文件;
5 B7 w# q# E v3 G. G4 L3 z 但事实上打印出来是这样: ) T ^( h0 t" [; V' [0 @" ^5 R
挂载成功后,f_open函数没有正常运行,(没有打印Code值),在Fatfs初始化函数中设置打印看程序是否运行
发现没什么卵用,最后通过仿真发现代码运行到这里卡死: 也就是HAL库文件下的stm32f7xx_hal_sd.c的SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR)函数下
最后发现问题出在SDMMC的初始化函数中,下面这是没能正常工作的代码:1 V0 ~- q! t2 `7 U9 }$ W5 I1 \
下面这个是修改过后的代码:9 X9 {' v/ Q+ s6 j* r 4 a& A/ c2 X9 y5 i9 a3 w7 w, ]$ w
. S" a4 g2 Y L4 |, l 在HAL_SD_Init()初始化之前需要将BusWide设置为1位宽度,在SD的完成初始化后再将位宽设置为4位,重新编译,下载,实验现象:# m- ^0 b5 n. E6 c8 N! q7 v
查看内存卡内是否新建了test.txt文件6 `2 A `/ H# |6 E6 b4 v 8 ?# u8 q. q/ p# }9 L/ L
) X9 T2 G7 W* L, o4 s 创建文件成功,实验正常; 肝了一天两夜,好在问题发现了,先记个笔记,怕以后再用到的时候又出现这个问题,也希望对卡在这里的人有些帮助;" P# w$ b0 f: t4 l& D6 @ 至于这个问题好像是SD的规范吧,必须要设置为1位,初始化后为4位,当然你也可以一直用1位没什么影响,这个下去在学习学习!8 N% s* k- b3 g- a9 n! l ) ~. t' j, Z, ~- l |
STM32F746G-DISCO移植lvgl9.0性能基准测试
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
2025国庆中秋活动体验报告2——TouchGFX的UI设计
微信公众号
手机版