中级会员
 
- 积分
- 465
- 金钱
- 465
- 注册时间
- 2016-1-20
- 在线时间
- 89 小时
|
1金钱
FATFS fs; /* FatFs文件系统对象 */
FIL fnew; /* 文件对象 */
FRESULT res_flash; /* 文件操作结果 */
UINT fnum; /* 文件成功读写数量 */
BYTE ReadBuffer[1024]={0}; /* 读缓冲区 */
BYTE WriteBuffer[] = /* 写缓冲区*/
"欢迎使用TBOX开发板 今天是个好日子,新建文件系统测试文件\r\n";
int main(void)
{
uint32_t free, total, i = 0;
/* 初始化调试串口,一般为串口1 */
USART1_Config(9600);
SPI1_Config();
printf("****** 这是一个SPI FLASH 文件系统实验 ******\r\n");
//在外部SPI Flash挂载文件系统,文件系统挂载时会对SPI设备初始化
res_flash = f_mount(&fs,"1:",1);
/*----------------------- 格式化测试 ---------------------------*/
/* 如果没有文件系统就格式化创建创建文件系统 */
if(res_flash == FR_NO_FILESYSTEM)
{
printf("》FLASH还没有文件系统,即将进行格式化...\r\n");
/* 格式化 */
res_flash=f_mkfs("1:",0,0);
if(res_flash == FR_OK)
{
printf("》FLASH已成功格式化文件系统。\r\n");
/* 格式化后,先取消挂载 */
res_flash = f_mount(NULL,"1:",1);
/* 重新挂载 */
res_flash = f_mount(&fs,"1:",1);
}
else
{
printf("《《格式化失败。》》\r\n");
while(1);
}
}
else if(res_flash!=FR_OK)
{
printf("!!外部Flash挂载文件系统失败。(%d)\r\n",res_flash);
printf("!!可能原因:SPI Flash初始化不成功。\r\n");
while(1);
}
else
{
printf("》文件系统挂载成功,可以进行读写测试\r\n");
}
//读取FLASH卡FAT的容量和空余
while(FATFS_GetFree("1:", &total, &free))
{
f_mkfs("1:", 1, 4096); //如果读取失败,格式化FLASH
i++;
if(i > 10)
{
break;
}
}
//显示FAT容量
if(i > 10)
{
printf(" FLASH FAT 错误!");
}
else
{
printf(" FLASH total memory:%d KB\n", total);
printf(" FLASH free memory:%d KB\n", free);
}
/*----------------------- 文件系统测试:写测试 -----------------------------*/
/* 打开文件,如果文件不存在则创建它 */
printf("\r\n****** 即将进行文件写入测试... ******\r\n");
res_flash = f_open(&fnew, "1:中国.txt",FA_CREATE_ALWAYS | FA_WRITE );
if ( res_flash == FR_OK )
{
printf("》打开/创建测试文件中国.txt文件成功,向文件写入数据。\r\n");
/* 将指定存储区内容写入到文件内 */
res_flash=f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum);
if(res_flash==FR_OK)
{
printf("》文件写入成功,写入字节数据:%d\n",fnum);
printf("》向文件写入的数据为:\r\n%s\r\n",WriteBuffer);
}
else
{
printf("!!文件写入失败:(%d)\n",res_flash);
}
/* 不再读写,关闭文件 */
f_close(&fnew);
}
else
{
printf("!!打开/创建文件失败。\r\n");
}
while(FATFS_GetFree("1:", &total, &free))
{
f_mkfs("1:", 1, 4096); //如果读取失败,格式化FLASH
i++;
if(i > 10)
{
break;
}
}
//显示FAT容量
if(i > 10)
{
printf(" FLASH FAT 错误!");
}
else
{
printf(" FLASH total memory:%d KB\n", total);
printf(" FLASH free memory:%d KB\n", free);
}
/*------------------- 文件系统测试:读测试 ------------------------------------*/
printf("****** 即将进行文件读取测试... ******\r\n");
res_flash = f_open(&fnew, "1:中国.txt", FA_OPEN_EXISTING | FA_READ);
if(res_flash == FR_OK)
{
printf("》打开文件成功。\r\n");
res_flash = f_read(&fnew, ReadBuffer, sizeof(ReadBuffer), &fnum);
if(res_flash==FR_OK)
{
printf("》文件读取成功,读到字节数据:%d\r\n",fnum);
printf("》读取得的文件数据为:\r\n%s \r\n", ReadBuffer);
}
else
{
printf("!!文件读取失败:(%d)\n",res_flash);
}
}
else
{
printf("%d\r\n",res_flash);
printf("!!打开文件失败。\r\n");
}
/* 不再读写,关闭文件 */
f_close(&fnew);
/* 不再使用文件系统,取消挂载文件系统 */
f_mount(NULL,"1:",1);
/* 操作完成,停机 */
while(1);
}
下面是几次更改实验串口接收的数据:
***** 这是一个SPI FLASH 文件系统实验 ******
》FLASH还没有文件系统,即将进行格式化...
》FLASH已成功格式化文件系统。
FLASH total memory:3820 KB
FLASH free memory:3820 KB
***** 这是一个SPI FLASH 文件系统实验 ******
》文件系统挂载成功,可以进行读写测试
FLASH total memory:3820 KB
FLASH free memory:3820 KB
****** 即将进行文件写入测试... ******
》打开/创建测试文件中国.txt文件成功,向文件写入数据。
》文件写入成功,写入字节数据:58
》向文件写入的数据为:
欢迎使用TBOX开发板 今天是个好日子,新建文件系统测试文件
FLASH total memory:3820 KB
FLASH free memory:3816 KB
***** 这是一个SPI FLASH 文件系统实验 ******
》文件系统挂载成功,可以进行读写测试
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件写入测试... ******
》打开/创建测试文件中国.txt文件成功,向文件写入数据。
》文件写入成功,写入字节数据:58
》向文件写入的数据为:
欢迎使用TBOX开发板 今天是个好日子,新建文件系统测试文件
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件读取测试... ******
4
!!打开文件失败。
***** 这是一个SPI FLASH 文件系统实验 ******
》文件系统挂载成功,可以进行读写测试
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件写入测试... ******
》打开/创建测试文件中国.txt文件成功,向文件写入数据。
》文件写入成功,写入字节数据:58
》向文件写入的数据为:
欢迎使用TBOX开发板 今天是个好日子,新建文件系统测试文件
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件读取测试... ******
4
!!打开文件失败。
***** 这是一个SPI FLASH 文件系统实验 ******
》文件系统挂载成功,可以进行读写测试
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件写入测试... ******
》打开/创建测试文件中国.txt文件成功,向文件写入数据。
》文件写入成功,写入字节数据:58
》向文件写入的数据为:
欢迎使用TBOX开发板 今天是个好日子,新建文件系统测试文件
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件读取测试... ******
4
!!打开文件失败。
***** 这是一个SPI FLASH 文件系统实验 ******
》文件系统挂载成功,可以进行读写测试
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件写入测试... ******
》打开/创建测试文件中国.txt文件成功,向文件写入数据。
》文件写入成功,写入字节数据:58
》向文件写入的数据为:
欢迎使用TBOX开发板 今天是个好日子,新建文件系统测试文件
FLASH total memory:3820 KB
FLASH free memory:3816 KB
****** 即将进行文件读取测试... ******
4
!!打开文件失败。
|
|