⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 用LPC2103(ARM7)操作SD卡代码。
💻 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 + -