資源簡(jiǎn)介
STM32的照相機(jī)程序,親測(cè)可用。內(nèi)有詳細(xì)的注釋和文檔。很好的學(xué)習(xí)資料。

代碼片段和文件信息
#include?“string.h“
#include?“exfuns.h“
#include?“fattester.h“
#include?“malloc.h“
#include?“usart.h“
////////////////////////////////////////////////////////////////////////////////// ?
//FATFS?擴(kuò)展代碼 ???
//修改日期:2012/9/18
//版本:V1.0
//All?rights?reserved ??
//////////////////////////////////////////////////////////////////////////////////
?//文件類型列表
const?u8?*FILE_TYPE_TBL[6][13]=
{
{“BIN“} //BIN文件
{“LRC“} //LRC文件
{“NES“} //NES文件
{“TXT““C““H“} //文本文件
{“MP1““MP2““MP3““MP4““M4A““3GP““3G2““OGG““ACC““WMA““WAV““MID““FLAC“}//音樂(lè)文件
{“BMP““JPG““JPEG““GIF“}//圖片文件
};
共文件區(qū)使用malloc的時(shí)候////////////////////////////////////////////
FATFS?*fs[2];?? //邏輯磁盤工作區(qū). ?
FIL?*file; ?? //文件1
FIL?*ftemp; ?? //文件2.
UINT?brbw; //讀寫變量
FILINFO?fileinfo; //文件信息
DIR?dir;?? //目錄
u8?*fatbuf; //SD卡數(shù)據(jù)緩存區(qū)
///////////////////////////////////////////////////////////////////////////////////////
//為exfuns申請(qǐng)內(nèi)存
//返回值:0成功
//1失敗
u8?exfuns_init(void)
{
fs[0]=(FATFS*)mymalloc(SRAMINsizeof(FATFS)); //為磁盤0工作區(qū)申請(qǐng)內(nèi)存
fs[1]=(FATFS*)mymalloc(SRAMINsizeof(FATFS)); //為磁盤1工作區(qū)申請(qǐng)內(nèi)存
file=(FIL*)mymalloc(SRAMINsizeof(FIL)); //為file申請(qǐng)內(nèi)存
ftemp=(FIL*)mymalloc(SRAMINsizeof(FIL)); //為ftemp申請(qǐng)內(nèi)存
fatbuf=(u8*)mymalloc(SRAMIN512); //為fatbuf申請(qǐng)內(nèi)存
if(fs[0]&&fs[1]&&file&&ftemp&&fatbuf)return?0;??//申請(qǐng)有一個(gè)失敗即失敗.
else?return?1;
}
//將小寫字母轉(zhuǎn)為大寫字母如果是數(shù)字則保持不變.
u8?char_upper(u8?c)
{
if(c<‘A‘)return?c;//數(shù)字保持不變.
if(c>=‘a(chǎn)‘)return?c-0x20;//變?yōu)榇髮?
else?return?c;//大寫保持不變
} ??????
//報(bào)告文件的類型
//fname:文件名
//返回值:0XFF表示無(wú)法識(shí)別的文件類型編號(hào).
// ?其他高四位表示所屬大類低四位表示所屬小類.
u8?f_typetell(u8?*fname)
{
u8?tbuf[5];
u8?*attr=‘\0‘;//后綴名
u8?i=0j;
while(i<250)
{
i++;
if(*fname==‘\0‘)break;//偏移到了最后了.
fname++;
}
if(i==250)return?0XFF;//錯(cuò)誤的字符串.
? for(i=0;i<5;i++)//得到后綴名
{
fname--;
if(*fname==‘.‘)
{
fname++;
attr=fname;
break;
}
?? }
strcpy((char?*)tbuf(const?char*)attr);//copy
? for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]);//全部變?yōu)榇髮?
for(i=0;i<6;i++)
{
for(j=0;j<13;j++)
{
if(*FILE_TYPE_TBL[i][j]==0)break;//此組已經(jīng)沒(méi)有可對(duì)比的成員了.
if(strcmp((const?char?*)FILE_TYPE_TBL[i][j](const?char?*)tbuf)==0)//找到了
{
return?(i<<4)|j;
}
}
}
return?0XFF;//沒(méi)找到 ? ???
} ?
//得到磁盤剩余容量
//drv:磁盤編號(hào)(“0:“/“1:“)
//total:總?cè)萘??(單位KB)
//free:剩余容量 ?(單位KB)
//返回值:0正常.其他錯(cuò)誤代碼
u8?exf_getfree(u8?*drvu32?*totalu32?*free)
{
FATFS?*fs1;
u8?res;
????u32?fre_clust=0?fre_sect=0?tot_sect=0;
????//得到磁盤信息及空閑簇?cái)?shù)量
????res?=?f_getfree((const?TCHAR*)drv?&fre_clust?&fs1);
????if(res==0)
{ ???
????tot_sect=(fs1->n_fatent-2)*fs1->csize; //得到總扇區(qū)數(shù)
????fre_sect=fre_clust*fs1->csize; //得到空閑扇區(qū)數(shù) ???
#if?_MAX_SS!=512 ?? //扇區(qū)大小不是512字節(jié)則轉(zhuǎn)換為512字節(jié)
tot_sect*=fs1->ssize/512;
fre_sect*=fs1->ssize/512;
#endif ??
*total=tot_sect>>1; //單位為KB
*free=fre_sect>>1; //單位為KB?
? }
return?res;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2815??2012-07-25?00:19??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\css_e.css
?????文件???????3177??2012-07-25?00:19??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\css_j.css
?????文件???????1414??2011-09-02?22:10??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\f1.png
?????文件???????1458??2007-02-10?03:12??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\f2.png
?????文件???????1039??2007-02-10?03:12??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\f3.png
?????文件???????2335??2008-01-05?20:27??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\f4.png
?????文件???????2479??2008-01-05?20:27??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\f5.png
?????文件???????1436??2010-08-21?10:13??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\f6.png
?????文件???????2401??2009-03-20?21:57??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\la
?????文件???????2379??2009-06-13?21:48??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\la
?????文件???????5209??2012-07-27?01:26??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\modules.png
?????文件??????19068??2008-10-18?19:31??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\rwtest.png
?????文件???????8153??2010-09-13?10:55??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\rwtest2.png
?????文件???????3011??2009-06-15?00:03??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\img\rwtest3.png
?????文件???????4185??2012-08-27?21:56??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\doc\updates.txt
?????文件???????3334??2017-11-25?21:10??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\exfuns\exfuns.c
?????文件???????1218??2017-11-25?21:09??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\exfuns\exfuns.h
?????文件???????6587??2017-11-25?21:09??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\exfuns\fattester.c
?????文件????????935??2017-11-25?21:10??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\exfuns\fattester.h
?????文件???????4815??2017-11-25?21:10??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\exfuns\mycc936.c
?????文件???????6821??2012-09-04?22:50??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\00readme.txt
?????文件???????5972??2017-11-25?21:10??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\diskio.c
?????文件???????2763??2012-08-27?21:39??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\diskio.h
?????文件?????143152??2012-09-19?12:58??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\ff.c
?????文件??????12506??2012-09-19?12:58??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\ff.h
?????文件???????7463??2017-11-25?21:07??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\ffconf.h
?????文件????????856??2010-04-24?23:45??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\integer.h
?????文件?????249488??2010-05-09?23:52??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\option\cc932.c
?????文件?????724232??2010-04-29?17:38??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\option\cc936.c
?????文件?????567684??2010-05-08?23:28??實(shí)驗(yàn)43?照相機(jī)實(shí)驗(yàn)\FATFS\src\option\cc949.c
............此處省略178個(gè)文件信息
評(píng)論
共有 條評(píng)論