通過STM32CUBEMX生成DMA讀寫sdio的工程,再讀寫過程中總會卡死在DMA中斷等待讀寫完成的while中,最終發現while等待的標志在SDIO的中斷里置位的,而SDIO中斷優先級如果小於或等於DMA中斷優先級,則SDIO中斷永遠不能搶占DMA中斷,DMA處於持續等待中,解決辦法由兩種,一種是直接提高SDIO中斷優先級到比DMA中斷優先級高,第二種是直接在HAL庫中卡住的中斷等待函數中注釋掉while等待。
另外還有一點就是在SDIO數據讀寫的時候需要注意的兩點,一個是讀寫數據最好四字節對其,否則可能出BUG,二是讀寫BUFF的大小必須大於等於讀寫函數的SIZE參數,否則會出現內存莫名錯誤導致指針出亂,程序出亂。