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

📄 createfiles.c

📁 文件系统在DSP5509上的实现
💻 C
字号:
#include "VoiceProcess.h"
#include "config.h"


/////////////////////////////////////////////////////////////////////////////////////////////////
uint8 WavStart[45]={/*00H*/0x52,0x49,0x46,0x46, //"RIFF"
                    /*04H*/0x2C,0x00,0x00,0x00, //文件长度 为语音数据长度+0x24 -------------------
                    /*08H*/0x57,0x41,0x56,0x45, //"WAVE"
                    /*0CH*/0x66,0x6D,0x74,0x20, //"fmt"  
                    /*10H*/0x10,0x00,0x00,0x00, //" 过度字节"
                    /*14H*/0x01,0x00,           // 1(PCM格式)
                    /*16H*/0x01,0x00,           //1(单声)或者2(立体声)
                    /*18H*/0x10,0x27,0x00,0x00, //采样频率,如11025,22050 --------------
                    /*1CH*/0x20,0x4E,0x00,0x00, //数据传送速率=采样频率*数据位数/8   -----------------
                    /*20H*/0x02,0x00,           //数据块的调整数
                    /*22H*/0x10,0x00,           //数据位数
                    /*24H*/0x64,0x61,0x74,0x61, //"data"
                    /*28H*/0x08,0x00,0x00,0x00};//语音数据长度  ------------------

//////////////////////////////////////////////////////////////////////////////////////////////////////////
uint32 Speed;   //采样频率
char const WritFileData[50]={"面向嵌入式系统开发的小型文件系统。\r\n"};

extern Uint16 mybuf[];

////////////////////////////////////////////////////////////////////////////////
//修改WAV文件头数据
static void EDIT_WAV_DATA(uint32 i)
{  
   WavStart[4]=(i+36)&0x0ff;
   WavStart[5]=((i+36)>>8)&0x000000ff;
   WavStart[6]=(((i+36)>>8)>>8)&0x000000ff;
   WavStart[7]=((((i+36)>>8)>>8)>>8)&0x000000ff;//文件长度
   
   WavStart[0x28]=(i)&0x000000ff;
   WavStart[0x29]=((i)>>8)&0x000000ff;
   WavStart[0x2a]=(((i)>>8)>>8)&0x000000ff;
   WavStart[0x2b]=((((i)>>8)>>8)>>8)&0x000000ff;//语音数据长度
   WavStart[0x18]=(Speed)&0x000000ff;
   WavStart[0x19]=((Speed)>>8)&0x000000ff;
   WavStart[0x1a]=(((Speed)>>8)>>8)&0x000000ff;
   WavStart[0x1b]=((((Speed)>>8)>>8)>>8)&0x000000ff;//采样频率
 	    
   WavStart[0x1c]=(2*Speed)&0x000000ff;
   WavStart[0x1d]=((2*Speed)>>8)&0x000000ff;
   WavStart[0x1e]=(((2*Speed)>>8)>>8)&0x000000ff;
   WavStart[0x1f]=((((2*Speed)>>8)>>8)>>8)&0x000000ff;  //数据传送速率 
}
/*********************************************************************************************************
** 函数名称: ReadFileWork
** 功能描述: 读文件
**
** 输 入: NAME:文件名       
** 输 出: 无
 
** 作 者: 万光临
** 日 期: 2007年12月28日
**-------------------------------------------------------------------------------------------------------
** 修改人: 万光临
** 日 期: 2007年12月30日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////// 
void ReadFileWork(char *NAME)
{
   uint16 i=0;
   HANDLE Handle;
 
  loop:
   
   Handle = FileOpen(NAME, "R");				// 打开或创建文件		
   if(Not_Open_FILE!=Handle)						// 打开文件成功
   {  i=0;					
	  
      do{
 	    FileSeek(Handle,i,SEEK_SET );//SEEK_CUR
 	   	FileRead(&mybuf[0], 1, Handle);
 	    i+=1;		     
 	  }while( FileEof(Handle)==FALSE); 
       	      	  
      FileClose(Handle);						// 关闭文件		
   }
   else
   { 
      i++;
      if(i>30)return;  
      DiskInit();                      /* 初始化磁盘管理模块 */   
      AddFileDriver(USBCammand);	   // 安装文件系统驱动		
      goto loop;
   }
    	   
}
/*********************************************************************************************************
** 函数名称: WriteFileWork
** 功能描述: 写文件
**
** 输 入: NAME:文件名       
** 输 出: 无
 
** 作 者: 万光临
** 日 期: 2007年12月28日
**-------------------------------------------------------------------------------------------------------
** 修改人: 万光临
** 日 期: 2007年12月30日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////
void WriteFileWork(char *NAME)
{
   uint16 i=0;
  HANDLE Handle;
  
  loop:
  Handle = FileOpen(NAME, "RW");				// 打开或创建文件		
  if(Not_Open_FILE!=Handle)						// 打开文件成功
  {						
	 FileSeek(Handle,0, SEEK_END);			// 将指针移到文件末尾
 
    FileWrite((uint8 *)WritFileData, sizeof(WritFileData),Handle);	// 写数据入文件
   
    AllCacheWriteBack();	  // 将缓冲区数据写回设备 	   
	    	  
    FileClose(Handle);					  // 关闭文件		
   }
   else
   {	 
      i++;
      if(i>30)return;
      DiskInit();                          /* 初始化磁盘管理模块 */                
      AddFileDriver(USBCammand);           // 安装文件系统驱动	
      goto loop;
   }
  
 }
///////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -