STM32 SPI总线移植fatfs产生硬件异常问题
2015-06-22 09:46
495 查看
spi总线和sd卡通信,用了部分原子的代码。移值Fatfs,没有用动态内存分配。产生了硬件异常的代码如下:
程序执行到f_write()后会产生硬件异常,跳入异常中断。网上找了些资料大多是将内存泄漏之类的说法,也有说定义的结构体没有内存对齐,或者局部变量占用了太多的栈空间。用网友的方法都没解决。通过单步调试,在f_write()内部执行时产生了硬件异常,但不是每次都是某条固定语句。
最后的解决方法是参照了之前测试的代码,在f_open()之后添加一条语句,程序正常运行了。代码如下:
程序执行时f_open()是执行成功的,res为0,f_write()也正常执行了。猜测f_open()之后要等待一小段时间才能执行其他函数,原因未知。
另外编译优化等级要level 0.
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.
相关文章推荐
- 如果您想省略JS里的分号,了解一下JS的分号插入原理吧
- tar命令的详细解释
- hdoj1078_FatMouse and Cheese(dp)
- android用pull解析xml文件
- AngularJS从构建项目开始
- mysql 分库分表
- Min Stack
- NYIST OJ 题目20 吝啬的王国
- JavaScript创建闭包的两种方式的优劣与区别分析
- 《Artech的WCF之旅系列》系列技术文章整理收藏
- 进程与PCB的关系如何看???
- 仿QQ软件收获
- 关于版本管理的一些初步理解
- 标准差(standard deviation)和标准错误(standard error)你能解释一下?
- 安卓ApiDemos最简单的使用方法
- 在Linux中调度功能是由哪个函数来实现的???
- 进程管理与SELinux初探
- 为什么要引入原语???
- Android中的消息处理实例与分析
- iOS Collection 集合