?? rap.c
字號:
//***********************************************************
// Note: DVR有兩種錄放音方式,即自動方式和非自動方式,我們可以通
// 過改變Mode的值來切換這兩種方式:當Mode=0時以非自動方式錄放音,
// 當Mode=1時,以自動方式錄放音,而且中斷中分別用FIQ中斷實現語音的
// 播放,用IRQ1中斷實現語音的錄制。這里我們給出非自動方式的例子:
// DATA:2003/05/14
// IDE: 1.8.0
//*************************************************************
#define Manual 0
#define Auto 1
#define SRAM_Size 0xffff-2
#define RceMonitorOff 0
#define RceMonitorOn 1
#define DAC1 1
#define DAC2 2
#define Full 1
#define Empty 2
int main()
{
int Ret=0;
int Addr;
SACM_DVR_Initial(Manual); //手動方式初始化
Addr = 0; //定義語音存放的首址變量
InitWriteSRAM();
SACM_DVR_InitEncoder(RceMonitorOn); //開始對A2000的語音數據以非自動方式編碼
while(Addr<SRAM_Size) //判斷存儲語音的地址是否超出存儲單元的大小
{
SACM_DVR_Encode (); //獲取數據并編碼
if(SACM_DVR_TestQueue()!= Empty)
{
Ret=SACM_DVR_FetchQueue(); // 從隊列中獲取數據
WriteSRAM(Addr,Ret); // 存入用戶定義的存儲單元區
Addr+=2; //兩個8位SRAM存儲一個16位數據
}
}
SACM_DVR_StopEncoder();
SACM_DVR_Initial(Manual); //非自動方式播放的初始化
InitReadSRAM();
Addr=0;
SACM_DVR_InitDecoder(DAC1); //開始對A2000的語音數據以非自動方式解碼
while(1)
{
if(SACM_DVR_TestQueue()!=Full)
{
Ret =ReadSRAM(Addr);
SACM_DVR_FillQueue(Ret);
Addr+=2;
}
if(Addr<SRAM_Size) //如果該段語音播完,即到達末地址時
SACM_DVR_Decode (); //獲取資源并進行解碼,再通過中斷服務子程序送入DAC通道播放
else
SACM_DVR_StopDecoder(); //否則,停止播放
}
F_ClearWatchdog(); //清看門狗
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -