久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
filerw.c周立功的SD卡操作
[打印本頁]
作者:
liuda
時間:
2015-1-23 03:53
標題:
filerw.c周立功的SD卡操作
#include "config.h"
#include "string.h"
/*
*********************************************************************************************************
** 函數(shù)名稱: SetISR()
** 函數(shù)功能: 設置向量中斷
** 入口參數(shù): no 中斷號
** pri 中斷優(yōu)先級
** isr_func 中斷服務函數(shù)入口地址
** 出口參數(shù): 操作是(1)否(0)成功
** 調試說明:
*********************************************************************************************************
*/
uint8 SetISR(uint32 no, uint32 pri, uint32 isr_func)
{
if(no > 31) return 0;
if(pri > 15) return 0;
*(volatile uint32*)((&VICVectAddr0)+no) = isr_func; //設置中斷服務函數(shù)
*(volatile uint32*)((&VICVectPri0)+no)= pri & 0x0F; //設置中斷優(yōu)先級
VICIntSelect &= ~(1<<no);
VICIntEnable = 1<<no;
return 1;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_init
** 功能描述: 文件系統(tǒng)初始化
**
** 輸 入:
**
** 輸 出: RETURN_OK:成功
**
** 全局變量: 無
** 調用模塊:
********************************************************************************************************/
uint8 File_init(void)
{
DiskInit();//磁盤初始化
FileInit();//文件初始化
SetISR(24,4,(uint32)MCI_Handler);//設置SD卡的中斷
IRQEnable();//中斷使能
AddFileDriver(SDCammand);//添加文件驅動
return 0;
}
/*********************************************************************************************************
** 函數(shù)名稱: dir_creat
** 功能描述: 創(chuàng)建目錄
**
** 輸 入: path:路徑名,dirname目錄名
**
** 輸 出: RETURN_OK:成功
**
** 全局變量: 無
** 調用模塊:
********************************************************************************************************/
uint8 Dir_creat(char *path,char *dirname)
{
uint8 state=255;
ChangeDir(path);//打開文件夾
state=MakeDir(dirname);
AllCacheWriteBack();
FileClose(0);
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: dir_delete
** 功能描述: 刪除目錄
**
** 輸 入: path:路徑名,dirname目錄名
**
** 輸 出: RETURN_OK:成功
**
** 全局變量: 無
** 調用模塊:
********************************************************************************************************/
uint8 Dir_delete(char *path,char *dirname)
{
uint8 state=0;
ChangeDir(path);//打開文件夾
state=RemoveDir(dirname);
AllCacheWriteBack();
FileClose(0);
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: FindFile
** 功能描述: 獲取目錄中的文件名
**
** 輸 入: DirFilename:路徑名,i:路徑中的第幾個文件,F(xiàn)ileName:返回的文件名
**
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
********************************************************************************************************/
/* uint8 FindFile(char *DirFilename,char i,char *FileName)
{
uint32 ClusIndex=0;
uint8 Rt=0, Drive=0;
Disk_Info *Disk;
FDT *FileFDT;
char Path[15]={0};//是為了文件、路徑小寫變大寫
strcpy(Path,DirFilename);
strupr(Path);// 變?yōu)榇髮?//
Rt = PATH_NOT_FIND;//=0x0e
ClusIndex = GetDirClusIndex(Path);//abc空空空空空
if (ClusIndex != BAD_CLUS)
{
Drive = GetDrive(Path);
Disk = GetDiskInfo(Drive);
Rt = NOT_FIND_DISK;
if (Disk != NULL)
{
Rt = RETURN_OK;
Disk->PathClusIndex = ClusIndex;
}
}
GetFDTInfo(FileFDT,Drive,ClusIndex,i);
Lcd_chinese_16(1,160,FileFDT->Name,0);
strcpy(FileName,FileFDT->Name);
return Rt;
}
*/
/*********************************************************************************************************
** 函數(shù)名稱: File_creat
** 功能描述: 創(chuàng)建文件
**
** 輸 入: path:路徑名,filename文件名
**
** 輸 出: RETURN_OK:成功
********************************************************************************************************/
uint8 File_creat(char *path,char *filename)
{
uint8 state=255;
ChangeDir(path);//打開文件夾
state=MakeDir(filename);
AllCacheWriteBack();
FileClose(0);
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: File_delete
** 功能描述: 刪除文件
**
** 輸 入: path:路徑名,filename文件名
**
** 輸 出: RETURN_OK:成功
**
** 全局變量: 無
** 調用模塊:
********************************************************************************************************/
uint8 File_delete(char *path,char *filename)
{
uint8 state=0;
ChangeDir(path);//打開文件夾
state=RemoveFile(filename);
AllCacheWriteBack();
FileClose(0);
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_find
** 功能描述: 獲取目錄中的指定文件類型的文件名
**
** 輸 入: Dirname:路徑名,fileextname:文件擴展名,filename:存放返回的文件名
**
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
********************************************************************************************************/
uint8 File_find(char *Dirname,char *fileextname,char (*filename)[12])
{ MY_FILE FileInfo[MAX_OPEN_FILES];
MY_FILE *fp;
HANDLE Rt;
FDT FileFDT;
uint32 i;
uint8 temp;
char NAME[12]={0};
ChangeDir(Dirname);
/* 查找空閑文件登記項 */
for (Rt = 0; Rt < MAX_OPEN_FILES; Rt++)
{
if (FileInfo[Rt].Flags == 0)
{
break;
}
}
if (Rt < MAX_OPEN_FILES)
{
fp = FileInfo + Rt;
/* 獲取目錄開始簇號和文件名 */
fp->DirClus = _GetFDTInfo(fp->Name,fileextname);
if (fp->DirClus < BAD_CLUS)
{
fp->Drive = GetDrive(fileextname); /* 獲取文件所在邏輯盤號 */
i = 0;
/*if (FileName[0] == DEL_FDT)
{
FileName[0] = ESC_FDT;
}*/
while (1)
{
temp = GetFDTInfo(&FileFDT, fp->Drive, fp->DirClus, i);
if (temp != RETURN_OK)
{temp = RETURN_OK;
break;
}
if (FileFDT.Name[0] == EMPTY_FDT)
{
temp = NOT_FIND_FDT;
break;
}
if ((FileFDT.Attr & ATTR_VOLUME_ID) == 0)
if((FileFDT.Name[8]==fileextname[0])&&(FileFDT.Name[9]==fileextname[1])&&(FileFDT.Name[10]==fileextname[2])&&(FileFDT.Name[0]!=0xe5))
{strcpy(NAME,FileFDT.Name);
NAME[11]='\0';
strcpy(*(filename++),NAME);
}
i++;
}
/* 獲取文件信息 */
// if (FindFDTFileInfo(&FileFDT, fp->Drive, fp->DirClus, fp->Name,(*filename)[12]) == RETURN_OK)
/*{
if ((FileFDT.Attr & ATTR_DIRECTORY) == 0)
{
fp->Flags = FILE_FLAGS_READ;
fp->FileSize = FileFDT.FileSize;
Sd_File_size = FileFDT.FileSize;//記下打開文件的大小
fp->FstClus = FileFDT.FstClusLO | (uint32)FileFDT.FstClusHI << 16;//把FDT中的信息給MY_FILE
fp->Clus = fp->FstClus;
fp->Offset = 0;//清零偏移量
return Rt;
}
}*/
}
}
return RETURN_OK;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_open
** 功能描述: 打開文件
**
** 輸 入: Dirname:路徑名
Filename:文件名
RWtype:打開方式
**
** 輸 出: 文件句柄如果為0xff表示打開失敗
**
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
********************************************************************************************************/
HANDLE File_open(char *Dirname,char *Filename, char *RWtype)
{
HANDLE FHandle;//文件句柄,代表一個打開的文件
char DirName[12]={0};
char FileName[12]={0};//文件名
char RWType[3]={0};
uint8 state=0;
strcpy(DirName,Dirname);
strcpy(FileName,Filename);
strcpy(RWType,RWtype);
state=ChangeDir(DirName);//打開文件夾
FHandle = FileOpen(FileName,RWType);//打開文件,并得到文件句柄,F(xiàn)Handle實際是現(xiàn)在打開的第幾個文件,也是MY_FILE FileInfo[FHandle]的編號
if(FHandle==Not_Open_FILE) return (int8)state;//文件打開的狀態(tài),打開錯誤則退出并返回值
return FHandle;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_read
** 功能描述: 讀文件
**
** 輸 入:FHandle:文件句柄
Whence:讀文件的位置
offset:讀文件的字節(jié)數(shù)
Readbuf:讀回數(shù)據(jù)存放位置
**
** 輸 出: RETURN_OK:成功
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
********************************************************************************************************/
uint8 File_read(HANDLE FHandle,uint8 Whence,int32 offset,char *Readbuf)
{
uint8 state;
state=FileSeek(FHandle,0,Whence);//文件的內容指針指向文件開始后的0字節(jié)
state=FileRead(Readbuf,offset,FHandle);//讀取文件內容,讀10個字節(jié)
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_close
** 功能描述: 關閉文件文件
**
** 輸 入:FHandle:文件句柄
**
** 輸 出: RETURN_OK:成功
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
**
** 作 者:
** 日 期: 2007年10月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 File_close(HANDLE FHandle)
{
uint8 state;
state=FileClose(FHandle);//關閉文件,釋放句柄,相當于文件初始化
//FileCloseAll();//關閉所有文件
AllCacheWriteBack();//所有文件的緩存數(shù)據(jù)寫回到文件
//RemoveFileDriver(0);//移除文件驅動,相當于文件磁盤初始化
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_write
** 功能描述: 讀文件
**
** 輸 入:FHandle:文件句柄
Whence:讀文件的位置
offset:讀文件的字節(jié)數(shù)
Readbuf:讀回數(shù)據(jù)存放位置
**
** 輸 出: RETURN_OK:成功
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
**
** 作 者:
** 日 期: 2007年10月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 File_write(HANDLE FHandle,uint8 Whence,int32 offset,char *Readbuf)
{
uint8 state;
state=FileSeek(FHandle,0,Whence);//文件的內容指針指向文件開始后的0字節(jié)
state=FileWrite(Readbuf,offset,FHandle);//讀取文件內容,讀10個字節(jié)
return state;
}
/*********************************************************************************************************
** 函數(shù)名稱: file_read
** 功能描述: 讀文件
**
** 輸 入: DirFilename:路徑名
**
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量: 無
** 調用模塊: GetDirClusIndex,GetDiskInfo
**
** 作 者:
** 日 期: 2007年10月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/*uint8 File_read(void)
{
HANDLE FHandle;//文件句柄,代表一個打開的文件
char FileName[12]={"15153.txt"};//文件名
char Readbuf[21]={1};//讀取的文件內容
uint8 state=0;
//AddFileDriver(SDCammand);//添加文件驅動
//ChangeDir("..");//當前目錄
state=ChangeDir("a:\\abc");//打開文件夾
//ChangeDir("131");//打開子文件夾
FHandle = FileOpen(FileName,"R");//打開文件,并得到文件句柄,F(xiàn)Handle實際是現(xiàn)在打開的第幾個文件,也是MY_FILE FileInfo[FHandle]的編號
if(FHandle==Not_Open_FILE)return 1;//文件打開的狀態(tài),打開錯誤則退出并返回值
FileSeek(FHandle, 0, SEEK_SET);//文件的內容指針指向文件開始后的0字節(jié)
FileRead(Readbuf,10, FHandle);//讀取文件內容,讀10個字節(jié)
FileClose(FHandle);//關閉文件,釋放句柄,相當于文件初始化
//FileCloseAll();//關閉所有文件
AllCacheWriteBack();//所有文件的緩存數(shù)據(jù)寫回到文件
//RemoveFileDriver(0);//移除文件驅動,相當于文件磁盤初始化
//Lcd_chinese_16(1,160,Readbuf,0);
return state;
}*/
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人精品
|
婷婷综合五月
|
亚洲特级片
|
欧美综合色
|
国产三级午夜理伦三级
|
亚洲一区免费视频
|
国产理论在线观看
|
成人b站
|
欧美国产在线观看
|
青青草精品视频
|
国产又粗又猛
|
久久精品av
|
国产91在线看
|
香蕉视频一区二区三区
|
免费黄色小视频
|
中文天堂在线观看
|
国产乱码一区二区三区
|
国产成人免费视频
|
日本在线看片
|
国产一区二区中文字幕
|
亚洲www啪成人一区二区麻豆
|
97精品在线视频
|
久久av一区二区三区亚洲
|
色婷婷久久
|
国产伦精品一区二区三区四区
|
www.国产.com
|
天天干一干
|
91桃色网站
|
九九热视频在线
|
黑森林av
|
51成人网
|
日韩精品视频免费播放
|
在线观看中文字幕码
|
久久国产一区二区
|
亚洲综合在线一区
|
亚洲午夜在线观看
|
国产精品久久久久久无人区
|
精品亚洲国产成人av制服丝袜
|
欧美日韩性
|
久草网在线
|
黄色小视频免费观看
|