f_open()使用错误记录
来源:互联网 发布:淘宝查号131458 编辑:程序博客网 时间:2024/06/05 13:23
一、现象
调用函数 f_open()
后,程序崩溃,调试后发现,单片机产生硬件中断,即软件跳入如下部分:
void HardFault_Handler(void){ /* Go to infinite loop when Hard Fault exception occurs */ while (1) { BSP_LED_Toggle(LED3); }}
二、错误代码
代码错误处如下,就是简单的使用 f_read()
函数打开一个文件,并将这个文件的前 32 个字节打印出来。
void show_file(uint8_t idx){ FIL fil; uint8_t data[32]; uint8_t bytecounts; uint8_t ret; printf("show file\n"); if((ret = f_open(&fil,(const TCHAR *)File_path,FA_READ)) != FR_OK) { printf("ret : %d\n",ret); SD_Error_Handler(); } else { if(f_read(&fil, data, sizeof(data), (UINT *)&bytecounts) != FR_OK) { SD_Error_Handler(); } else { for(int i=0;i<32;i++) { printf(" %02x ",data[i]); } f_close(&fil); } }}
三、解决方法
看了网上的资料,在使用该函数时出现了硬件中断,一般都是单片机内存访问出现了错误。
也就是说在 f_read(&fil,(const TCHAR *)File_path,FA_READ)
的参数中,无法找到 fil
的地址。将 FIL fil;
从函数外拿出,定义为全局变量,即可解决。
参考链接
0 0
- f_open()使用错误记录
- Masonry 使用错误记录
- Git使用错误记录
- BootStrap3使用错误记录
- JRebel使用错误记录
- Hadoop-个人使用错误记录
- c#使用错误提示记录
- php使用mysql错误记录
- SQLite使用与错误记录
- Android Studio 使用错误记录
- js-dom-使用错误记录
- python使用中错误记录
- Working Practice-使用错误记录器记录错误
- FatFS f_open()函数详解
- linux mint13 android使用错误修改记录
- linux mint13 android使用错误修改记录
- postgresal使用错误解决 (记录篇)
- _snprintf 使用的一点错误记录
- 认识padding
- SVG学习-1
- Poj 1741——treap的启发式合并
- Javascript入门
- jdk源码阅读——ArrayList
- f_open()使用错误记录
- JVM GC参数说明
- 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享
- 【BZOJ 4569】【SCOI 2016】萌萌哒
- 这可能是我在CSDN的最后一篇文章了...
- 字符串右移
- 基于Qt搭建ROS开发环境
- LeetCode
- nodejs操作mongodb数据库