最近在做項目要用到FATFS文件系統和SD卡驅動,SD卡驅動我用的是SPI的通信方式,在掛載文件系統是總是掛載失敗了,經過檢查,才發現SPI在接收時候卡死:
為了尋找問題的原因,整個人都快瘋了,最終我發現一個函數有一個大坑!!
由於我需要在讀取或寫入SD數據時要把SPI的波特率調大些,就寫了下面這個函數,定義了一個結構體變量,因為SPI_InitStructure是局部變量,所以這個變量成員都是隨機值,況且我只配置了一個成員,這樣一來導致整個SPI的參數都亂了!!!
C語言基礎真的很重要,有些BUG的產生都是因為基礎不牢固導致的。
修改如下,直接配置寄存器就行了