yono 发表于 2023-3-16 15:34:52

请教一个问题,SD卡热拔插后挂载文件系统失败

使用的H7开发板,ThreadX全家桶例程,发现只要挂载文件系统失败一次,就再也无法挂载上了

1.上电后,SD卡插在板子上读卡,可正常读卡;拔卡后读卡,提示“挂载失败”;再次插卡,提示“挂载失败”
2.上电后,SD卡未插入板子,读卡,提示“挂载失败”;插卡后读卡,提示“挂载失败”
3.上电后,SD卡插在板子上读卡,可正常读卡;拔卡后不读卡,再次插入,也可正常读卡

FileX文件系统的例程也有这样的问题

新手上路,实在分析不出原因了:'(

yono 发表于 2023-3-16 17:03:09


找到问题了,hel库的HAL_SD_Init不会清除错误,BSP包里的Init也没有清错,在BSP_SD_Init()里加上清错就好了

yono 发表于 2023-3-16 17:26:25

Init的时候清下uSdHandle.ErrorCode就好了

eric2013 发表于 2023-3-17 11:23:34

yono 发表于 2023-3-16 17:26
Init的时候清下uSdHandle.ErrorCode就好了
那不应该,这个是全局变量,MDK会做清零处理。估计是重复调用这个初始化函数了。


yono 发表于 2023-3-17 16:04:09

eric2013 发表于 2023-3-17 11:23
那不应该,这个是全局变量,MDK会做清零处理。估计是重复调用这个初始化函数了。

MDK初始化会清零,但是出现错误之后,再次尝试挂载时调用BSP_SD_Init(),此时ErrorCode仍然会有值,且例程没有清除。
uSdHandle传入HAL_SD_Init()时,由于ErrorCode存在值,在某个角落会导致返回错误——昨天逐句调试到过这行代码,今天忘掉在哪了

eric2013 发表于 2023-3-18 10:21:36

yono 发表于 2023-3-17 16:04
MDK初始化会清零,但是出现错误之后,再次尝试挂载时调用BSP_SD_Init(),此时ErrorCode仍然会有值,且 ...

总的来说所有成员都做初始值是个好习惯
页: [1]
查看完整版本: 请教一个问题,SD卡热拔插后挂载文件系统失败