使用的是TI官方的F28M35H52C1开发板,程序是controlSUITE中提供的例程稍加修改。
直接用例程读取文件内容没有问题,例程中没有写入的部分,所以在例程基础上稍作了修改,增加了写入部分,但是在写入时出现这样的现象,如果原文件中有几个数据,那么就只能向文件中写入几个数据,如果原文件是空的,那么就一个数据也写不进去,尽管每次都向SD卡发送了512个数据。
下面是写入部分增加的代码:
下面是原文件
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
使用的是TI官方的F28M35H52C1开发板,程序是controlSUITE中提供的例程稍加修改。
直接用例程读取文件内容没有问题,例程中没有写入的部分,所以在例程基础上稍作了修改,增加了写入部分,但是在写入时出现这样的现象,如果原文件中有几个数据,那么就只能向文件中写入几个数据,如果原文件是空的,那么就一个数据也写不进去,尽管每次都向SD卡发送了512个数据。
下面是写入部分增加的代码:
下面是原文件
andy,
你可以看一下ff.c关于f_read和f_write的定义,
其中
FRESULT f_read (
FIL *fp, /* Pointer to the file object */
void *buff, /* Pointer to data buffer */
WORD btr, /* Number of bytes to read */
WORD *br /* Pointer to number of bytes read */
)
FRESULT f_write (
FIL *fp, /* Pointer to the file object */
const void *buff, /* Pointer to the data to be written */
WORD btw, /* Number of bytes to write */
WORD *bw /* Pointer to number of bytes written */
)
然后在例程中有,
fresult = f_read(&g_sFileObject, g_cTmpBuf, sizeof(g_cTmpBuf) - 1,
&usBytesRead);
我的理解usBytesRead应该是读到的数据个数。
你应该自己新建一个变量usBytesWrite,然后赋值给它。测试一下。
Eric
跟这个变量应该没有关系,我把读的程序f_read那部分屏蔽了,所以这个变量跟新建的一样,只是没有改名字而已,况且这个变量在f_write函数里是先清零然后再统计写入个数的,是一个输出变量,所以跟我调用f_write前赋值与否没有关系