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.

cc3200 外部flash 文件操作

Other Parts Discussed in Thread: CC3200

大家好:

          我在使用3200的外部flash的时候,想要实现文件的追加功能,sl_FsWrite函数的第二个参数是偏移量,我先用 sl_FsGetInfo 得到了文件长度,sl_FsWrite的第二个参数设置成得到的长度,我使用串口输出读到的数据个数是正确的,可是串口只能输出最后一次写入的字符串.

char FileWrite(char *fileName,uint32_t *ulToken,char *data, uint16_t dataLen){
	long lRetVal = -1;
	long lFileHandle;

	SlFsFileInfo_t pFsFileInfo;
	uint32_t ulToken_t = 0;


	lRetVal = sl_FsGetInfo((uint8_t*)fileName, ulToken_t, &pFsFileInfo);
    if(lRetVal!=0)
    {
       Report("the file is not exit\n\r");
    }
    else
    {
       Report("the file is exit\n\r");

    }
	Report("pFsFileInfo.AllocatedLen:%d\n\r",pFsFileInfo.AllocatedLen);
	Report("pFsFileInfo.FileLen:%d\n\r",pFsFileInfo.FileLen);


	lRetVal = sl_FsOpen((uint8_t *)fileName,FS_MODE_OPEN_WRITE,ulToken,&lFileHandle);
	if (lRetVal < 0){
			UART_PRINT("sl_FsWrite is error \n\r");
			lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);
		}
	}

	if(pFsFileInfo.FileLen >= 20){
		pFsFileInfo.FileLen = 0;
	}

	lRetVal = sl_FsWrite(lFileHandle, pFsFileInfo.FileLen/*偏移*/,(uint8_t *)data,dataLen);
	if (lRetVal < 0){
			UART_PRINT("sl_FsWrite is error \n\r");
			lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);
	}

	lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);
	if (SL_RET_CODE_OK != lRetVal) {
		UART_PRINT("sl_FsClose is error  \r\n");
	}
	return SUCCESS;
}