?? test_sound.c
字號:
//====================================================================================
//文 件 名:Test_Sound.c
//功能描述: 音頻測試
//維護記錄: V1.0 by wangtao <wangtao@sunnorth.com.cn>
//====================================================================================
#include "SystemHeader.h"
#include "string.h"
void Test_PlaySound(void)
{
short x, y;
int i;
short Channel = 2;
TFT_SetBGColor(COLOR_WHITE);
TFT_SetWindow(40, 40, 279, 199);
TFT_SetColor(COLOR_RED);
TFT_Rectangle(0, 0, 239, 159, PAINT_HOLLOW);
TFT_SetColor(COLOR_BLUE);
TFT_SetTextPos(50, 30);
TFT_SetTextPos(40, 80);
TFT_Print("點擊屏幕的任意位置返回");
SP_Wave_Init();
while(1)
{
if(SP_Play_Status()==0)
{
TFT_SetTextPos(30, 30);
if(Channel==1)
{
TFT_Print("[右聲道]正在播放音頻……\n");
Channel = 2;
}
else
{
TFT_Print("[左聲道]正在播放音頻……\n");
Channel = 1;
}
SP_Wave_Setup((unsigned short *)RES_TESTSOUND_WAV,(unsigned short *)RES_TESTSOUND_WAV_END,8000, Channel);
}
Touch_Get(&x, &y);
if(x!=-1)
{
SP_Wave_Stop();
for(i=0; i<1000000; i++);
break;
}
}
TFT_SetBGColor(0x0001);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
}
void Test_Record(void)
{
unsigned int i,k;
unsigned int DataSizes;
unsigned char *PCMDataPtr;
unsigned char StreamPtr[(DATANUM_COUNT * DATANUM_SIZES)*4];
TFT_SetBGColor(COLOR_WHITE);
TFT_SetWindow(40, 40, 279, 199);
TFT_SetColor(COLOR_RED);
TFT_Rectangle(0, 0, 239, 159, PAINT_HOLLOW);
TFT_SetColor(COLOR_BLUE);
TFT_SetTextPos(20, 30);
TFT_Print("MIC輸入的音頻由揚聲器輸出");
TFT_SetTextPos(60, 80);
TFT_Print("10秒后自動返回");
SP_Wave_Init();
//MIC init
MIC32Init(16000); //Sample rate 16000Hz, use IRQ33
//DAC init and On
DAC_EnableSoftCh(16000); //Sample rate 16000Hz, use IRQ63
k=0;
while(k++<0x100000)
{
DataSizes = MICGetBuffSizes(); //Get Data pool sizes(bytes) in AUDIO_PCM_BUFFER
PCMDataPtr = (unsigned char *) MICGetDataPtr(DataSizes); //Request Data and return pointer
//The return pointer is the start address of data pool.
if(PCMDataPtr==MIC_DATA_NOT_ENOUGH)
{
DataSizes = 0; //must clear DataSizes to prevent fill duplicate data
}
for(i=0;i<DataSizes;i++)
{
StreamPtr[i] = PCMDataPtr[i];
}
if(DAC_Get_PCM_Free_Bytes() > DataSizes) //check DAC PCM buffer has enough space to store data
{
//According to PCMDataPtr(Source data pointer) and DataSizes that user requested and put the data to DAC PCM data pool
DAC_Write_PCM_Data((unsigned short*)StreamPtr,DataSizes);
//DAC_CheckFIFOEnough(); //make sure have enough PCMData in DAC fifo
}
}
//MIC Off
MIC32_Off();
//DAC Off
DAC_DisableSoftCh();
Touch_Init();
TFT_SetBGColor(0x0001);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
}
short Test_Sound(void)
{
short x, y, MenuItem;
int i;
static short Visited = 0;
static char *MenuText[] = {"音頻輸出測試\0★", "音頻輸入測試\0★", "返回"};
MENU SoundMenu = {
80, 70, // x, y
150, 30, // width, height
3, 1, // ItemCount
-1, // ItemSelected
0, // Chinese Font
0, // ASCII Font
15, // spacing
COLOR_RED, COLOR_BLACK, // Forecolor, Corecolor_Sel
COLOR_GREEN, COLOR_WHITE, // Back
COLOR_YELLOW, COLOR_RED, // Border
MenuText,
};
TFT_SetBGColor(0x0001);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
Menu_Display(&SoundMenu);
while(1)
{
Touch_Get(&x, &y);
MenuItem = Menu_CursorItem(x, y);
SoundMenu.ItemSelected = MenuItem;
Menu_ServiceLoop();
if(MenuItem != -1)
{
for(i=0; i<1000000; i++);
switch(MenuItem)
{
case 0:
Test_PlaySound();
strcpy(MenuText[0], "★ 音頻輸出測試");
Visited |= 0x01;
break;
case 1:
Test_Record();
strcpy(MenuText[1], "★ 音頻輸入測試");
Visited |= 0x02;
break;
case 2:
TFT_SetBGColor(0x0001);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
if(Visited==0x03)
return 1;
else
return 0;
default:
break;
}
SoundMenu.ItemSelected = -1;
Menu_Display(&SoundMenu);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -