最近在做项目要用到FATFS文件系统和SD卡驱动,SD卡驱动我用的是SPI的通信方式,在挂载文件系统是总是挂载失败了,经过检查,才发现SPI在接收时候卡死:
为了寻找问题的原因,整个人都快疯了,最终我发现一个函数有一个大坑!!
由于我需要在读取或写入SD数据时要把SPI的波特率调大些,就写了下面这个函数,定义了一个结构体变量,因为SPI_InitStructure是局部变量,所以这个变量成员都是随机值,况且我只配置了一个成员,这样一来导致整个SPI的参数都乱了!!!
C语言基础真的很重要,有些BUG的产生都是因为基础不牢固导致的。
修改如下,直接配置寄存器就行了