/*
說明:
* 下面的函數是測試在已有的"大海.txt"文件下繼續添加數據
* 測試條件在TF卡中建立"大海.txt"文件,并在文件中添加內容,測試過程中可以分別添加<512數據,=512數據,>512數據進行分別測試
* 作者:Flame
* 測試時間:20130711
*/
unsigned int FATFSNumSize;//文件大小存儲變量,為了查看方便放到函數外部
void OutPutFile(void)
{
unsigned int a;
FILINFO finfo;
DIR dirs;
char path[50]={""}; //目錄名為空,表示是根目錄
//開啟長文件名功能時, 要預先初始化文件名緩沖區的長度
#if _USE_LFN
static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1];
finfo.lfname = lfn;
finfo.lfsize = sizeof(lfn);
#endif
USART_OUT(USART1,"\nSTM32開發板文件系統(Tini-FatFS0.08b)啟動成功! \n");
disk_initialize(0); //fatfs可以管理多個介質的分區, 所以把物理存儲介質SST25VF016B標示為0區,相當于磁盤編號
f_mount(0, &fs); //將文件系統設置到0區
if (f_opendir(&dirs, path) == FR_OK) //讀取該磁盤的根目錄
{
while (f_readdir(&dirs, &finfo) == FR_OK) //循環依次讀取文件名
{
if (finfo.fattrib & AM_ARC) //判斷文件屬性是否為存檔型 TXT文件一般都為存檔型
{
if(!finfo.fname[0]) break; //如果是文件名為空表示到目錄的末尾。退出
if(finfo.lfname[0]){USART_OUT(USART1,"\r\n文件名是:\n %s\n",finfo.lfname);} //輸出長文件名
else{USART_OUT(USART1,"\r\n文件名是:\n %s\n",finfo.fname);} //輸出8.3格式文件名
if(finfo.lfname[0]){res = f_open(&fsrc, finfo.lfname, FA_OPEN_EXISTING | FA_READ);}//以讀的方式打開文件
else{res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ); } //8.3格式文件名 以讀的方式打開文件
FATFSNumSize = f_size(&fsrc); //讀出文件的大小,說明讀取文件大小必須在打開文件后才能讀出
br=1;
for (;;)
{ //循環讀出被打開文件的扇區
for(a=0; a<512; a++) buffer[a]=0; //因為可以一次讀出512字節,先清空數據緩沖區
res = f_read(&fsrc, buffer, sizeof(buffer), &br); //將文件內容讀出到數據緩沖區 br存儲此次讀出數據的數量,最大512
USART_OUT(USART1,"%s\n",buffer); //將緩沖區的內容輸出到串口1
if (res || br == 0) break; // error or eof //判斷是否到文件結束
}
f_close(&fsrc); //關閉源文件
res1 = f_open(&fdst, "大海.txt", FA_CREATE_ALWAYS | FA_WRITE); //以寫的方式打開"大海.txt"文件
if(finfo.lfname[0])
{
res = f_open(&fsrc, finfo.lfname, FA_CREATE_ALWAYS | FA_WRITE); //以寫的方式打開文件
} else {
res = f_open(&fsrc, finfo.fname, FA_CREATE_ALWAYS | FA_WRITE); //8.3格式文件名 以寫的方式打開文件
}
for(a=0; a<512; a++) buffer[a]=0x36; //往buffer中寫入512個6
f_lseek(&fsrc,FATFSNumSize); //偏移到打開文件內容的后面
//在這里要重點說明的是如果numSize<512將會把數據覆蓋,如果numSize>512切numSize%512得到的余數將會覆蓋,所有如果numSize不是512的整倍數,要單獨做處理
//我的方法是讀取這不到1個扇區的數據,放到緩沖區,然后將512-numSize%512的數據填入緩沖區,寫入TF(SD)卡數據,然后再寫剩余的數據
br=512; //寫入512個數據
res1 = f_write(&fsrc, buffer, br, &bw); f_close(&fsrc);//關閉目標文件 本條函數即時保存寫入的數據,又是關閉目標文件,如有很多數據要寫入,但不需要現在關閉可以調用f_sync函數,但是調用 f_sync前必把S_READONLY == 0可用
}
}
}
}
上一篇:基于STM32F407平臺實現FATFS讀寫大容量(128G)SD卡的心得
下一篇:基于STM32的SD卡FATFS文件系統學習筆記
推薦閱讀
史海拾趣
2014年,ACAM公司迎來了一個重要的里程碑事件——被奧地利微電子股份有限公司收購。這次收購極大地增強了ACAM公司在時間數字轉換器(TDC)技術領域的實力。奧地利微電子在半導體行業有著深厚的積累和豐富的經驗,與ACAM公司的技術優勢相結合,進一步提升了ACAM公司在市場上的競爭力。
在電子行業,技術創新是企業持續發展的關鍵。為了保持競爭力,ELMEC不斷投入研發資金,引進高端人才,加強技術創新。他們與多所知名大學和研究機構建立合作關系,共同開展前沿技術研究。這些努力使得ELMEC在人工智能、物聯網等新興領域取得了多項重要突破,為公司的發展注入了新的活力。
在電子行業,技術創新是企業持續發展的關鍵。為了保持競爭力,ELMEC不斷投入研發資金,引進高端人才,加強技術創新。他們與多所知名大學和研究機構建立合作關系,共同開展前沿技術研究。這些努力使得ELMEC在人工智能、物聯網等新興領域取得了多項重要突破,為公司的發展注入了新的活力。
隨著電子行業的快速發展和市場競爭的加劇,Dolphin Interconnect Solutions ASA面臨著前所未有的挑戰。為了應對這些挑戰,公司積極調整戰略方向,加大在人工智能、物聯網等新興領域的投入。同時,Dolphin還加強了與產業鏈上下游企業的合作,共同推動產業鏈的轉型升級。這些努力使得Dolphin在激烈的市場競爭中保持了穩健的發展態勢。
在電子行業的快速發展中,BCD Semi公司憑借其卓越的技術創新能力,成功研發出了一系列具有競爭力的半導體產品。公司擁有一支經驗豐富的研發團隊,不斷探索新技術和新應用,將最新的科技成果轉化為具有市場競爭力的產品。通過技術創新,BCD Semi在行業中逐漸樹立起了良好的口碑,贏得了眾多客戶的信任和支持。
1998年,Epic Games發布了一款名為“虛幻”的3D第一人稱射擊游戲。這款游戲不僅游戲內容新穎,更引人注目的是它背后完全自主開發的3D游戲引擎。這個引擎后來被稱為“虛幻引擎”,并成為了Epic Games的核心技術之一。隨著游戲的成功,虛幻引擎也逐漸受到了業界的關注。許多其他游戲開發商開始采用這款引擎來開發自己的游戲,從而使得Epic Games在游戲引擎領域取得了顯著的商業成功。
一.基于乘積項(Product-Term)的PLD結構 采用這種結構的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工藝),Xilinx的XC9500系列(Flash工藝)和Lattice,Cypress的大部分產品(EEPROM工藝)我們先看一下這種PLD的總體結構(以MAX7000為例,其 ...… 查看全部問答∨ |
系統組件面板中的總線接口給出了總線、處理器和IP間的互連關系。所以,用戶創建的任何IP都必須適應已生成的系統,為滿足這一條件,必須做到以下兩點: 1)確定IP所需要的接口 對于用戶定制的外圍設備,必須指出它們所連接的總線,如 ...… 查看全部問答∨ |
#include #define uchar unsigned char; #define uint unsigned int; uchar a[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; uchar e,d,t; void chushihua(); uint x,y,b; main() {   ...… 查看全部問答∨ |
現在想做個MULTI-bin 一步一步的來,先來實現BINFS,但是查來一些資料,看了ms的幫助文檔,還是一頭霧水。 現在我的板子上是自己寫的usbboot。看很多資料都是說什么EBOOT,問下,有是不是要實現BINFS必須要eboot? 有沒有哪為大蝦不是在 ...… 查看全部問答∨ |
MSP430G2231的基本外設IO端口學習 #include /*********************************************************************************** * Software Toggle P1.0 * P1DIR:端口輸出輸入方向設置寄存器 * P1OUT:端口數值寄存器&nbs ...… 查看全部問答∨ |
|
我不是專業的電子人員,有個設想。不知道能不能成功。現在需要做個防盜器。 要去:1。通過檢測充電器輸出電流,有電流的話,報警器不工作。一旦沒有電流,報警器就要報警。 2。電源直接用充電器48V的直流電。 需要 ...… 查看全部問答∨ |
最近對DSP很感興趣,所以發些資料,希望大家有好的資料也都共享出來,這樣才能有技術的提升!~ 資料為開發板原理圖,程序,說明文檔!~有興趣的話我們也可以組織DIY一下!~ [ 本帖最后由 wanghongyang 于 2011-2-13 10:36 編輯 ]… 查看全部問答∨ |