请教一个问题,SD卡热拔插后挂载文件系统失败
使用的H7开发板,ThreadX全家桶例程,发现只要挂载文件系统失败一次,就再也无法挂载上了1.上电后,SD卡插在板子上读卡,可正常读卡;拔卡后读卡,提示“挂载失败”;再次插卡,提示“挂载失败”
2.上电后,SD卡未插入板子,读卡,提示“挂载失败”;插卡后读卡,提示“挂载失败”
3.上电后,SD卡插在板子上读卡,可正常读卡;拔卡后不读卡,再次插入,也可正常读卡
FileX文件系统的例程也有这样的问题
新手上路,实在分析不出原因了:'(
找到问题了,hel库的HAL_SD_Init不会清除错误,BSP包里的Init也没有清错,在BSP_SD_Init()里加上清错就好了
Init的时候清下uSdHandle.ErrorCode就好了 yono 发表于 2023-3-16 17:26
Init的时候清下uSdHandle.ErrorCode就好了
那不应该,这个是全局变量,MDK会做清零处理。估计是重复调用这个初始化函数了。
eric2013 发表于 2023-3-17 11:23
那不应该,这个是全局变量,MDK会做清零处理。估计是重复调用这个初始化函数了。
MDK初始化会清零,但是出现错误之后,再次尝试挂载时调用BSP_SD_Init(),此时ErrorCode仍然会有值,且例程没有清除。
uSdHandle传入HAL_SD_Init()时,由于ErrorCode存在值,在某个角落会导致返回错误——昨天逐句调试到过这行代码,今天忘掉在哪了
yono 发表于 2023-3-17 16:04
MDK初始化会清零,但是出现错误之后,再次尝试挂载时调用BSP_SD_Init(),此时ErrorCode仍然会有值,且 ...
总的来说所有成员都做初始值是个好习惯
页:
[1]