STM32 SPI总线移植fatfs产生硬件异常问题

来源:互联网 发布:淘宝号查询信誉网址 编辑:程序博客网 时间:2024/06/05 01:20
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.


0 0
原创粉丝点击