📄 dvr.c
字号:
//========================================================
// 文件名称: dvr.c
// 功能描述: 语音录制与播放
// 维护记录: 2005-09-12 v1.0
//========================================================
#include "dvr.h"
#include "flash.h"
#define P_Watchdog_Clear (unsigned int *)0x7012
#define START_ADDR 0xA000 //定义录音开始地址
#define END_ADDR 0xBFFF //定义录音结束地址
//========================================================
// 语法格式: void Record(void)
// 实现功能: 语音录制
// 参数: 无
// 返回值: 无
//========================================================
void Record(void)
{
unsigned int uiAddr;
unsigned int uiStatus,uiRet;
for(uiAddr = START_ADDR;uiAddr <= END_ADDR;uiAddr += 0x0100)//擦除从录音开始地址到录音结束地址FLASH
{
F_FlashErase(uiAddr);
*P_Watchdog_Clear = 0x0001; //清看门狗
}
SACM_DVR_Initial(0); //初始化DVR为手动方式
SACM_DVR_InitQueue(); //初始化队列
SACM_DVR_InitEncoder(1); //初始化编码器
uiAddr = START_ADDR; //地址变量为录音起始地址
uiStatus = 1;
while(uiStatus)
{
if(uiAddr <= END_ADDR) //判断是否到录音结束地址
{
SACM_DVR_Encoder(); //编码
if(SACM_DVR_TestQueue() != 2) //录音语音队列是否为空
{
uiRet = SACM_DVR_FetchQueue(); //从录音队列中取语音资源
F_FlashWrite1Word(uiAddr,uiRet); //写到FLASH中
uiAddr++; //地址变量加1
}
}
else
{
uiStatus = 0; //录音状态清零
SACM_DVR_Stop(); //停止录音
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
//========================================================
// 语法格式: void PlayRecord(void)
// 实现功能: 语音播放
// 参数: 无
// 返回值: 无
//========================================================
void PlayRecord(unsigned int DAC_Channel)
{
unsigned int uiAddr;
unsigned int uiRet;
SACM_DVR_Initial(0); //初始化为手动方式
SACM_DVR_InitQueue(); //初始化队列
SACM_DVR_InitDecoder(DAC_Channel); //初始化译码队列
uiAddr = START_ADDR; //把录音起始地址赋给地址变量
while(1)
{
while(SACM_DVR_TestQueue() != 1) //语音队列是否满
{
if(uiAddr <= END_ADDR) //是否到录音结束地址
{
uiRet = F_FlashRead(uiAddr); //读FLASH取语音资源
SACM_DVR_FillQueue(uiRet); //填充语音队列
uiAddr++; //地址变量加1
}
else break;
}
if(SACM_DVR_TestQueue() != 2) //语音队列是否不为空
SACM_DVR_Decoder(); //是,译码
else
{
SACM_DVR_Stop(); //否,停止播放
break;
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -