int main(void)
{
LED_Init(); //LED初始化
BEEP_Init();
delay_init(); //延时函数初始化
LOCK_Init();
Usart1_Init(115200);//115200波特率 debug串口
Usart2_Init(115200);//115200波特率
Usart3_Init(115200);//115200波特率
UsartPrintf(USART_DEBUG,"****** 这是一个SPI FLASH 文件系统实验 ******\r\n");
//在外部SPI Flash挂载文件系统,文件系统挂载时会对SPI设备初始化
//初始化函数调用流程如下
//f_mount()->find_volume()->disk_initialize->SPI_FLASH_Init()
res_flash = f_mount(&fs,"1:",1);
/*----------------------- 格式化测试 -----------------*/
/* 如果没有文件系统就格式化创建创建文件系统 */
if(res_flash == FR_NO_FILESYSTEM)
{
UsartPrintf(USART_DEBUG,"》FLASH还没有文件系统,即将进行格式化...\r\n");
/* 格式化 */
res_flash=f_mkfs("1:",0,0);
if(res_flash == FR_OK)
{
UsartPrintf(USART_DEBUG,"》FLASH已成功格式化文件系统。\r\n");
/* 格式化后,先取消挂载 */
res_flash = f_mount(NULL,"1:",1);
/* 重新挂载 */
res_flash = f_mount(&fs,"1:",1);
}
else
{
LED1 = 0;
UsartPrintf(USART_DEBUG,"《《格式化失败。》》\r\n");
while(1);
}
}
else if(res_flash!=FR_OK)
{
UsartPrintf(USART_DEBUG,"!!外部Flash挂载文件系统失败。(%d)\r\n",res_flash);
UsartPrintf(USART_DEBUG,"!!可能原因:SPI Flash初始化不成功。\r\n");
while(1);
}
else
{
UsartPrintf(USART_DEBUG,"》文件系统挂载成功,可以进行读写测试\r\n");
}
res_flash=f_mkfs("1:",0,0);
if(res_flash == FR_OK)
{
UsartPrintf(USART_DEBUG,"格式化成功\r\n");
}
/* 打开文件,每次都以新建的形式打开,属性为可写 */
UsartPrintf(USART_DEBUG,"\r\n****** 即将进行文件写入测试... ******\r\n");
//res_flash = f_open(&fnew, "1:FatFs读写测试文件.txt",FA_CREATE_ALWAYS | FA_WRITE );
res_flash = f_open(&fnew, "1:FatFs.txt", FA_OPEN_ALWAYS|FA_WRITE );
UsartPrintf(USART_DEBUG,"》第一次写时原文件大小:%d\r\n",f_size(&fnew));
if ( res_flash == FR_OK )
{
UsartPrintf(USART_DEBUG,"》打开/创建FatFs读写测试文件.txt文件成功,向文件写入数据。\r\n");
/* 将指定存储区内容写入到文件内 */
res_flash=f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum);
if(res_flash==FR_OK)
{
UsartPrintf(USART_DEBUG,"》文件写入成功,写入字节数据:%d\n",fnum);
UsartPrintf(USART_DEBUG,"》向文件写入的数据为:\r\n%s\r\n",WriteBuffer);
}
else
{
UsartPrintf(USART_DEBUG,"!!文件写入失败:(%d)\n",res_flash);
}
/* 不再读写,关闭文件 */
f_close(&fnew);
}
else
{
LED1 = 0;
UsartPrintf(USART_DEBUG,"!!打开/创建文件失败。\r\n");
}
UsartPrintf(USART_DEBUG,"\r\n****** 即将进行文件再次写入测试... ******\r\n");
res_flash = f_open(&fnew, "1:FatFs.txt", FA_OPEN_ALWAYS|FA_WRITE );
UsartPrintf(USART_DEBUG,"》再次写时原文件大小:%d\r\n",f_size(&fnew));
if ( res_flash == FR_OK )
{
UsartPrintf(USART_DEBUG,"》打开/创建FatFs读写测试文件.txt文件成功,向文件再次写入数据。\r\n");
/* 文件定位 */
res_flash = f_lseek(&fnew,f_size(&fnew));
if (res_flash == FR_OK)
{
/* 将指定存储区内容写入到文件内 */
res_flash=f_write(&fnew,Tx_Buffer,sizeof(Tx_Buffer),&fnum);
if(res_flash==FR_OK)
{
UsartPrintf(USART_DEBUG,"》文件再次写入成功,再次写入字节数据:%d\n",fnum);
UsartPrintf(USART_DEBUG,"》向文件再次写入的数据为:\r\n%s\r\n",Tx_Buffer);
}
else
{
UsartPrintf(USART_DEBUG,"!!文件再次写入失败:(%d)\n",res_flash);
}
}
/* 不再读写,关闭文件 */
f_close(&fnew);
}
else
{
LED1 = 0;
UsartPrintf(USART_DEBUG,"!!再次打开/创建文件失败。\r\n");
}
UsartPrintf(USART_DEBUG,"****** 即将进行文件读取测试... ******\r\n");
//res_flash = f_open(&fnew, "1:FatFs读写测试文件.txt",FA_OPEN_EXISTING | FA_READ);
res_flash = f_open(&fnew, "1:FatFs.txt",FA_OPEN_ALWAYS|FA_READ);
UsartPrintf(USART_DEBUG,"》读取时文件大小:%d\r\n",f_size(&fnew));
if(res_flash == FR_OK)
{
LED0= 0;
UsartPrintf(USART_DEBUG,"》打开文件成功。\r\n");
res_flash = f_read(&fnew,ReadBuffer,f_size(&fnew),&fnum);
if(res_flash==FR_OK)
{
UsartPrintf(USART_DEBUG,"》文件读取成功,读到字节数据:%d\r\n",fnum);
UsartPrintf(USART_DEBUG,"》读取得的文件数据为:\r\n%s \r\n", ReadBuffer);
}
else
{
UsartPrintf(USART_DEBUG,"!!文件读取失败:(%d)\n",res_flash);
}
}
else
{
LED1 = 0;
UsartPrintf(USART_DEBUG,"!!打开文件失败。\r\n");
}
/* 不再读写,关闭文件 */
f_close(&fnew);
/* 不再使用文件系统,取消挂载文件系统 */
//f_mount(NULL,"1:",1);
/* 操作完成,停机 */
while(1)
{
}
}
把打印buff设置大一些