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.