📄 createfiles.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 + -