📄 main.c
字号:
/****************************************Copyright (c)**************************************************
**
** 力天电子
** http://www.LT430.com
**作者:何呈
**文件名称:MAIN.C
**功能:FAT文件系统操作实例,实现读取一个.TXT文件,将文件内容发送到串口。
**说明:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
#include "uart.h"
#include "spi.h"
#include "sd.h"
#include "fat.h"
uint32 FAT_MASK;
extern uchar BUFFER[512];
extern void Init_SPI(void);
void File_Send(DWORD FirstClust);
//停止
void Hang(void){
UART0_PutString("Init failed!\n");
while(1);
}
//系统初始化
void Init_sys(void)
{
PLL_Init(); //设置pll
UART0_Init(); //串口初始化
UART0_PutString("\nInit SPI!\n");
Init_SPI();
UART0_PutString("\nSucceeded!\n");
UART0_PutString("\nInit SD card!\n");
if(SD_Init()){
UART0_PutString("SD_Init failed!");//CMD0 Error!
Hang();
}
UART0_PutString("\nSucceeded!\n");
UART0_PutString("\nInit Fat File Syetem!\n");
fatInit(); //初始化文件系统
UART0_PutString("\nSucceeded!\n");
}
//主函数
int main(void)
{
Init_sys();
UART0_PutString("\n\n\t\tFat file system test.V1.0 \n");
UART0_PutString("\t\t\tDesignd by HC \n\n");
UART0_PutString("Init_sys over!\n");
if(Fat32Enabled) //设置FAT格式标志
FAT_MASK=FAT32_MASK;
else
FAT_MASK=FAT16_MASK;
UART0_PutString("Send a TXT File......\n");
File_Send(fatGetDirEntry(3,"test.txt")); //查找根目录下的“test.txt”文件
UART0_PutString("\nSend Over!\n");
while(1); //停止
}
//发送文件数据
void File_Send(DWORD FirstClust)
{
uint32 LBA,NextCluster;
uint16 i,data_pointer;
DWORD SendSize=FileSize;
uint8 SendOverflag=0;
NextCluster = FirstClust;
UART0_PutString("The Content of file is:");
UART0_PutChar('"');
UART0_PutChar('\n');
while(1)
{
LBA =fatClustToSect(NextCluster); //查找簇开始的扇区
for (i=0;i<SectorsPerCluster;i++)
{
ReadBlock(LBA+i); //读完后文件指针自动后移
if(SendSize>512)
{
for(data_pointer=0;data_pointer<512;data_pointer++)
{
UART0_PutChar(BUFFER[data_pointer]);
}
SendSize-=512;
}
else{
for(data_pointer=0;data_pointer<SendSize;data_pointer++)
{
UART0_PutChar(BUFFER[data_pointer]);
}
SendOverflag=1;
break;
}
}
if(SendOverflag) //已经发送完毕
break;
NextCluster = fatNextCluster(NextCluster);
if (NextCluster >=(CLUST_RSRVD&FAT_MASK)) //文件最后一个簇标志
break;
}
UART0_PutChar('"');//end of file
UART0_PutChar('\n');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -