STM32 SPI總線移植fatfs產生硬件異常問題

spi總線和sd卡通信,用了部分原子的代碼。移值Fatfs,沒有用動態內存分配。產生了硬件異常的代碼如下:
res = f_open(&file, "record.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
f_write(&file,"temp",5,bw);

程序執行到f_write()後會產生硬件異常,跳入異常中斷。網上找了些資料大多是將內存泄漏之類的說法,也有說定義的結構體沒有內存對齊,或者局部變量佔用了太多的棧空間。用網友的方法都沒解決。通過單步調試,在f_write()內部執行時產生了硬件異常,但不是每次都是某條固定語句。

最後的解決方法是參照了之前測試的代碼,在f_open()之後添加一條語句,程序正常運行了。代碼如下:

res = f_open(&file, "record.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
if(res)return 1;
f_write(&file,"temp",5,bw);

程序執行時f_open()是執行成功的,res爲0,f_write()也正常執行了。猜測f_open()之後要等待一小段時間才能執行其他函數,原因未知。

另外編譯優化等級要level 0.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章