代码拉取完成,页面将自动刷新
同步操作将从 nicholas3388/w800-liteos-sdk 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "wm_include.h"
#include "wm_gpio_afsel.h"
#include "ff.h"
#include "wm_demo.h"
#if DEMO_FATFS
#define TEST_DEBUG_EN 1
#if TEST_DEBUG_EN
#define TEST_DEBUG(fmt, ...) printf("%s: "fmt, __func__, ##__VA_ARGS__)
#else
#define TEST_DEBUG(fmt, ...)
#endif
#define FATFS_TASK_SIZE 1024
#define FATFS_TASK_PRIO 1
static OS_STK FatfsTaskStk[FATFS_TASK_SIZE];
static int console_cmd = 0;
//FAT功能测试:格式化测试,文件写入测试,文件读取测试(基本功能)
int fatfs_func(void)
{
FATFS fs; //FatFs文件系统对象
FIL fnew; //文件对象
FRESULT res_sd;//文件操作结果
UINT fnum; //文件成功读写数量
BYTE ReadBuffer[256] = {0};
BYTE work[FF_MAX_SS];
BYTE WriteBuffer[] = "成功移植了FatFs文件系统!\r\n"; //写缓存区
wm_sdio_host_config(0);
//挂载SD卡
res_sd = f_mount(&fs, "0:", 1);
//***********************格式化测试****************************
if(res_sd == FR_NO_FILESYSTEM)
{
while(1)
{
TEST_DEBUG("SD卡没有文件系统,即将进行格式化...\r\n");
//格式化
res_sd = f_mkfs("0:", 0, work, sizeof(work));
if(res_sd == FR_OK)
{
TEST_DEBUG("SD卡成功格式化!\r\n");
//格式化后先取消挂载
res_sd = f_mount(NULL, "0:", 1);
//再重新挂载
res_sd = f_mount(&fs, "0:", 1);
break;
}
else
{
TEST_DEBUG("文件格式化失败!错误代码:%d; will try again...\r\n",res_sd);
}
}
}
else if(res_sd != FR_OK)
{
TEST_DEBUG("挂载文件系统失败!可能是因为文件初始化失败!错误代码:%d\r\n", res_sd);
}
else
{
TEST_DEBUG("文件系统挂载成功, 可进行读写测试!\r\n");
}
//***********************写测试****************************
//打开文件,如果文件不存在则创建它
TEST_DEBUG("即将进行文件写入测试....\r\n");
//打开文件,若不存在就创建
res_sd = f_open(&fnew, "0:FatFs读写测试文件.txt", FA_CREATE_ALWAYS | FA_WRITE);
//文件打开成功
if(res_sd == FR_OK)
{
TEST_DEBUG("打开文件成功!开始写入数据!\r\n");
res_sd= f_write(&fnew, WriteBuffer, sizeof(WriteBuffer), &fnum);
if(res_sd == FR_OK)
{
TEST_DEBUG("数据写入成功,共写入%d个字符!\r\n", fnum);
TEST_DEBUG("数据:%s", WriteBuffer);
}
else
{
TEST_DEBUG("数据写入失败!\r\n");
}
//关闭文件
f_close(&fnew);
}
//***********************读测试****************************
//打开文件,如果文件不存在则创建它
TEST_DEBUG("即将进行文件读取测试....\r\n");
//打开文件,若不存在就创建
res_sd = f_open(&fnew, "0:FatFs读写测试文件.txt", FA_OPEN_EXISTING | FA_READ);
//文件打开成功
if(res_sd == FR_OK)
{
TEST_DEBUG("打开文件成功!开始读取数据!\r\n");
res_sd= f_read(&fnew, ReadBuffer, sizeof(ReadBuffer), &fnum);
if(res_sd == FR_OK)
{
TEST_DEBUG("数据读取成功!\r\n");
TEST_DEBUG("数据:%s\r\n", ReadBuffer);
}
else
{
TEST_DEBUG("数据读取失败!\r\n");
}
//关闭文件
f_close(&fnew);
}
//取消挂载文件系统
f_mount(NULL, "0:", 1);
return 0;
}
static void fatfs_task(void)
{
while(1)
{
if( console_cmd==1 )
{
fatfs_func();
console_cmd = 0;
}
tls_os_time_delay(HZ);
}
}
int fatfs_test(void)
{
static int flag = 0;
console_cmd = 1;
if( flag == 0 )
{
flag = 1;
tls_os_task_create(NULL, NULL,
( void (*))fatfs_task,
NULL,
(void *)FatfsTaskStk, /* task's stack start address */
FATFS_TASK_SIZE * sizeof(u32), /* task's stack size, unit:byte */
FATFS_TASK_PRIO,
0);
}
return 0;
}
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。