日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

硬件——STM32 , 录音

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 硬件——STM32 , 录音 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

戰艦V3的錄音程序解析

上一章,我們實現了一個簡單的音樂播放器,本章我們將在上一章的基礎上,實現一個簡單的錄音機,實現WAV錄音。本章分為如下幾個部:

50.1 WAV簡介

50.2 硬件設計

50.3 軟件設計

50.4 下載驗證

?

50.1 WAV簡介?

?

WAVWAVE文件,WAV是計算機領域最常用的數字化聲音文件格式之一,它是微軟專門為Windows系統定義的波形文件格式(Waveform Audio),由于其擴展名為"*.wav"它符合RIFF(Resource Interchange File Format)文件規范,用于保存Windows平臺的音頻信息資源,被Windows平臺及其應用程序所廣泛支持,該格式也支持MSADPCMCCITT A LAW等多種壓縮運算法,支持多種音頻數字,取樣頻率和聲道,標準格式化的WAV文件和CD格式一樣,也是44.1K的取樣頻率,16位量化數字,因此在聲音文件質量和CD相差無幾!

?

ALIENTEK戰艦STM32開發板板載的VS1053支持2種格式的WAV錄音:PCM格式或者IMA ADPCM格式,其中PCM脈沖編碼調制最基本的WAVE文件格式,這種文件直接存儲采樣的聲音數據沒有經過任何的壓縮。而IAM ADPCM則是使用了壓縮算法,壓縮比率為4:1

?

本章,我們主要討論PCM,因為這個最簡單。我們將利用VS1053實現16位,8Khz采樣率的單聲道WAV錄音(PCM格式)。要想實現WAV錄音得先了解一下WAV文件的格式,WAVE文件是由若干個Chunk組成的。按照在文件中的出現位置包括:RIFF WAVE Chunk Format Chunk Fact Chunk(可選) Data Chunk。每個Chunk由塊標識符、數據大小和數據三部分組成,如圖50.1.1所示:

其中標識符由4ASCII碼構成,數據大小則標出緊跟其后的數據的長度(單位為字節),注意這個長度不包含塊標識符和數據大小的長度,即不包含最前面的8個字節。所以實際Chunk的大小為數據大小加8

?

首先,我們來看看RIFF塊(RIFF WAVE Chunk),該塊以“RIFF作為標示,緊跟wav文件大小(該大小是wav文件的總大小-8),然后數據段為“WAVE”,表示是wav文件。RIFF塊的Chunk結構如下:

?

//RIFF

?

typedef __packed struct

?

{

?

??? u32 ChunkID;??????? ?? ? //chunk id;這里固定為"RIFF",0X46464952

?

??? u32 ChunkSize ;??????????? //集合大小;文件總大小-8

?

??? u32 Format;??? ?? ???????? //格式;WAVE,0X45564157

?

}ChunkRIFF ;

接著,我們看看Format塊(Format Chunk),該塊以“fmt ”作為標示(注意有個空格!),一般情況下,該段的大小為16個字節,但是有些軟件生成的wav格式,該部分可能有18個字節,含有2個字節的附加信息。Format塊的Chunk結構如下:

?

//fmt

?

typedef __packed struct

?

{

?

??? u32 ChunkID;??????? ?? ? //chunk id;這里固定為"fmt ",0X20746D66

?

??? u32 ChunkSize ;??????????? //子集合大小(不包括IDSize);這里為:20.

?

??? u16 AudioFormat;? ? ??? //音頻格式;0X10,表示線性PCM;0X11表示IMA ADPCM

?

?????? u16 NumOfChannels;??? //通道數量;1,表示單聲道;2,表示雙聲道;

?

?????? u32 SampleRate;?????????? //采樣率;0X1F40,表示8Khz

?

?????? u32 ByteRate;?????????????? //字節速率;

?

?????? u16 BlockAlign;??????????? //塊對齊(字節);

?

?????? u16 BitsPerSample;????????????? //單個采樣數據大小;4ADPCM,設置為4

?

}ChunkFMT;?

接下來,我們再看看Fact塊(Fact Chunk),該塊為可選塊,以“fact”作為標示,不是每個WAV文件都有,在非PCM格式的文件中,一般會在Format結構后面加入一個Fact塊,該塊Chunk結構如下:

?

//fact

?

typedef __packed struct

?

{

?

??? u32 ChunkID;??????? ?? ? ?????? //chunk id;這里固定為"fact",0X74636166;

?

??? u32 ChunkSize ;??????????? ?? ? //子集合大小(不包括IDSize);這里為:4.

?

??? u32 DataFactSize;? ? ??? ?????? //數據轉換為PCM格式后的大小

?

}ChunkFACT;

DataFactSize是這個Chunk中最重要的數據,如果這是某種壓縮格式的聲音文件,那么從這里就可以知道他解壓縮后的大小。對于解壓時的計算會有很大的好處!不過本章我們使用的是PCM格式,所以不存在這個塊。

最后,我們來看看數據塊(Data Chunk),該塊是真正保存wav數據的地方,以“data'作為該Chunk的標示。然后是數據的大小。緊接著就是wav數據。根據Format Chunk中的聲道數以及采樣bit數,wav數據的bit位置可以分成如表50.1.1所示的幾種形式:

本章,我們采用的是16位,單聲道,所以每個取樣為2個字節,低字節在前,高字節在后。數據塊的Chunk結構如下:

//data

typedef __packed struct

{

??? u32 ChunkID;??????? ?? ? //chunk id;這里固定為"data",0X61746164

??? u32 ChunkSize ;??????????? //子集合大小(不包括IDSize);文件大小-60.

}ChunkDATA;

通過以上學習,我們對WAVE文件有了個大概了解。接下來,我們看看如何使用VS1053實現WAVPCM格式)錄音。

激活PCM錄音

VS1053激活PCM錄音需要設置的寄存器和相關位如表50.1.2所示:

通過設置SCI_MODE寄存器的21214位,來激活PCM錄音,SCI_MODE的各位描述見表49.1.4(也可以參考VS1053的數據手冊)SCI_AICTRL0寄存器用于設置采樣率,我們本章用的是8K的采樣率,所以設置這個值為8000即可。SCI_AICTRL1寄存器用于設置AGC1024相當于數字增加1,這里建議大家設置AGC44*1024)左右比較合適。SCI_AICTRL2用于設置自動AGC的時候的最大值,當設置為0的時候表示最大64(65536),這個大家按自己的需要設置即可。最后,SCI_AICTRL3,我們本章用到的是咪頭線性PCM單聲道錄音,所以設置該寄存器值為6

通過這幾個寄存器的設置,我們就激活VS1053PCM錄音了。不過,VS1053PCM錄音有一個小BUG,必須通過加載patch才能解決,如果不加載patch,那么VS1053是不輸出PCM數據的,VLSI提供了我們這個patch,只需要通過軟件加載即可。

?

讀取PCM數據

?

在激活了PCM錄音之后,SCI_HDAT0SCI_HDAT1有了新的功能。VS1053PCM采樣緩沖區由102416位數據組成,如果SCI_HDAT1大于0,則說明可以從SCI_HDAT0讀取至少SCI_HDAT116位數據,如果數據沒有被及時讀取,那么將溢出,并返回空的狀態。

?

注意,如果SCI_HDAT1896,最好等待緩沖區溢出,以免數據混疊。所以,對我們來說,只需要判斷SCI_HDAT1的值非零,然后從SCI_HDAT0讀取對應長度的數據,即完成一次數據讀取,以此循環,即可實現PCM數據的持續采集。

?

最后,我們看看本章實現WAV錄音需要經過哪些步驟:

?

1)設置VS1053 PCM采樣參數

?

這一步,我們要設置PCM的格式(線性PCM)、采樣率(8K)、位數(16位)、通道數(單聲道)等重要參數,同時還要選擇采樣通道(咪頭),還包括AGC設置等。可以說這里的設置直接決定了我們wav文件的性質。

?

2)激活VS1053PCM模式,加載patch

?

通過激活VS1053PCM格式,讓其開始PCM數據采集,同時,由于VS1053BUG,我們需要加載patch,以實現正常的PCM數據接收。

?

3)創建WAV文件,并保存wav

?

在前兩部設置成功之后,我們即可正常的從SCI_HDAT0讀取我們需要的PCM數據了,不過在這之前,我們需要先在創建一個新的文件,并寫入wav頭,然后才能開始寫入我們的PCM數據。

?

4)讀取PCM數據

?

經過前面幾步的處理,這一步就比較簡單了,只需要不停的從SCI_HDAT0讀取數據,然后存入wav文件即可,不過這里我們還需要做文件大小統計,在最后的時候寫入wav頭里面。

?

5)計算整個文件大小,重新保存wav頭并關閉文件

?

在結束錄音的時候,我們必須知道本次錄音的大小(數據大小和整個文件大小),然后更新wav頭,重新寫入文件,最后因為FATFS,在文件創建之后,必須調用f_close,文件才會真正體現在文件系統里面,否則是不會寫入的!所以最后還需要調用f_close,以保存文件。

?

50.2 硬件設計

?

本章實驗功能簡介:開機的時候先檢測字庫,然后初始化VS1053,進行RAM測試和正弦測試,之后,檢測SD卡根目錄是否存在RECORDER文件夾,如果不存在則創建,如果創建失敗,則報錯。在找到SD卡的RECORDER文件夾后,即設置VS1053進入錄音模式,此時可以在耳機聽到VS1053采集的音頻。KEY0用于開始/暫停錄音,KEY2用于保存并停止錄音,WK_UP用于AGC增加、KEY1用于AGC減小,TPAD用于播放最近一次的錄音。當我們按下KEY0的時候,可以在屏幕上看到錄音文件的名字,以及錄音時間,然后通過KEY2可以保存該文件,同時停止錄音(文件名和時間也都將清零),在完成一個錄音后,我們可以通過按TPAD按鍵,來試聽剛剛的錄音。DS0用于提示程序正在運行,DS1用于指示當前是否處于錄音暫停狀態。

?

本實驗用到的資源如下:

?

1)? 指示燈DS0DS1

?

2)? 五個按鍵(WK_UP/KEY0/KEY1/KEY2/TPAD

?

3)? 串口

?

4)? TFTLCD模塊

?

5)? SD

?

6)? SPI FLASH

?

7)? VS1053

?

8)? 74HC4052

?

9)? TDA1308

?

本章用到的硬件資源同上一章基本一樣,就多了一個TPAD按鍵,用于播放最近一次錄音。

?

本實驗,大家需要準備1SD卡和一個耳機,分別插入SD卡接口和耳機接口,然后下載本實驗就可以實現一個簡單的錄音機了。

?

50.3 軟件設計

?

打開上一章的工程,首先在APP文件夾下面新建recorder.crecorder.h兩個文件,然后將recorder.c加入到工程的APP組下。

?

因為recorder.c代碼比較多,我們這里僅介紹其中的三個函數,首先是設置VS1053進入PCM模式的函數:recoder_enter_rec_mode,該函數代碼如下:

?

//進入PCM 錄音模式

?

//agc:0,自動增益.1024相當于1,512相當于0.5,最大值65535=64?????????? ?

?

void recoder_enter_rec_mode(u16 agc)

?

{

?

?????? //如果是IMA ADPCM,采樣率計算公式如下:

?

????? //采樣率=CLKI/256*d;?

?

?????? //假設d=0,2倍頻,外部晶振為12.288M.那么Fc=(2*12288000)/256*6=16Khz

?

?????? //如果是線性PCM,采樣率直接就寫采樣值

?

?? ? VS_WR_Cmd(SPI_BASS,0x0000);???

?

????? VS_WR_Cmd(SPI_AICTRL0,8000);?? //設置采樣率,設置為8Khz

?

????? VS_WR_Cmd(SPI_AICTRL1,agc);????????????

?

//設置增益,0,自動增益.1024相當于1,512相當于0.5,最大值65535=64?

?

????? VS_WR_Cmd(SPI_AICTRL2,0);???????? //設置增益最大值,0,代表最大值65536=64X

?

????? VS_WR_Cmd(SPI_AICTRL3,6);???????? //左通道(MIC單聲道輸入)

?

?????? VS_WR_Cmd(SPI_CLOCKF,0X2000);??????

?

//設置VS10XX的時鐘,MULT:2倍頻;ADD:不允許;CLK:12.288Mhz

?

?????? VS_WR_Cmd(SPI_MODE,0x1804);??? //MIC,錄音激活???

?

????? delay_ms(5);?????????????????????????????? ?????? //等待至少1.35ms

?

????? VS_Load_Patch((u16*)wav_plugin,40);//VS1053WAV錄音需要patch

?

}

該函數就是用我們前面介紹的方法,激活VS1053PCM模式,本章,我們使用的是8Khz采樣率,16位單聲道線性PCM模式,AGC通過函數參數設置。最后加載patch(用于修復VS1053錄音BUG)。

第二個函數是初始化wav頭的函數:recoder_wav_init,該函數代碼如下:

//初始化WAV.

void recoder_wav_init(__WaveHeader* wavhead) //初始化WAV??????????????? ??

{

?????? wavhead->riff.ChunkID=0X46464952; ?????? //"RIFF"

?????? wavhead->riff.ChunkSize=0;?????????????? ?????? //還未確定,最后需要計算

?????? wavhead->riff.Format=0X45564157; ? ?????? //"WAVE"

?????? wavhead->fmt.ChunkID=0X20746D66; ???? //"fmt "

?????? wavhead->fmt.ChunkSize=16; ????????????????? //大小為16個字節

?????? wavhead->fmt.AudioFormat=0X01; ????????? //0X01,表示PCM;0X01,表示IMA ADPCM

????? wavhead->fmt.NumOfChannels=1;???????????? //單聲道

????? wavhead->fmt.SampleRate=8000;??????? ?????? //8Khz采樣率 采樣速率

????? wavhead->fmt.ByteRate=wavhead->fmt.SampleRate*2;//16,2個字節

????? wavhead->fmt.BlockAlign=2;???????????????????? //塊大小,2個字節為一個塊

????? wavhead->fmt.BitsPerSample=16;????????????? ?????? //16PCM

?? ? wavhead->data.ChunkID=0X61746164;?????? //"data"

????? wavhead->data.ChunkSize=0;???????????????????? //數據大小,還需要計算?

}

該函數初始化wav頭的絕大部分數據,這里我們設置了該wav文件為8Khz采樣率,16位線性PCM格式,另外由于錄音還未真正開始,所以文件大小和數據大小都還是未知的,要等錄音結束才能知道。該函數__WaveHeader結構體就是由前面介紹的三個Chunk組成,結構為:

//wav

typedef __packed struct

{

?????? ChunkRIFF riff;???? //riff

?????? ChunkFMT fmt;? //fmt

?????? //ChunkFACT fact; //fact線性PCM,沒有這個結構體?

?????? ChunkDATA data;?? //data????????

}__WaveHeader;

最后,我們介紹recoder_play函數,是錄音機實現的主循環函數,該函數代碼如下:

//錄音機

//所有錄音文件,均保存在SDRECORDER文件夾內.

u8 recoder_play(void)

{

?????? u8 res, key, rval=0;

?????? __WaveHeader *wavhead=0;

?????? u32 sectorsize=0;u16 w; u16 idx=0;????

?????? FIL* f_rec=0;???????????????????????????? //文件??????????? ???

????? DIR recdir;???? ????????????????????????? //目錄

?????? u8 *recbuf;???????????????????????????????? //數據內存????

?????? u8 rec_sta=0;????????????????????????????? //錄音狀態

??????????????????????????????????????????????????????? //[7]:0,沒有錄音;1,有錄音;

??????????????????????????????????????????????????????? //[6:1]:保留

??????????????????????????????????????????????????????? //[0]:0,正在錄音;1,暫停錄音;

????? u8 *pname=0;

?????? u8 timecnt=0;???????????????????????????? //計時器??

?????? u32 recsec=0;????????????????????????????? //錄音時間

????? u8 recagc=4;?????????????????????????????? //默認增益為4

? ??? while(f_opendir(&recdir,"0:/RECORDER"))//打開錄音文件夾

????? {????

????????????? Show_Str(60,230,240,16,"RECORDER文件夾錯誤!",16,0); delay_ms(200);???????? ?

????????????? LCD_Fill(60,230,240,246,WHITE); delay_ms(200);????????? //清除顯示????

????????????? f_mkdir("0:/RECORDER");//創建該目錄??

?????? }

? ??? f_rec=(FIL *)mymalloc(SRAMIN,sizeof(FIL));?? //開辟FIL字節的內存區域

?????? if(f_rec==NULL)rval=1;?????? //申請失敗

????? wavhead=(__WaveHeader*)mymalloc(SRAMIN,sizeof(__WaveHeader));

//開辟__WaveHeader字節的內存區域

?????? if(wavhead==NULL)rval=1;

?????? recbuf=mymalloc(SRAMIN,512); ?????

?????? if(recbuf==NULL)rval=1;???? ? ?????????? ???

?????? pname=mymalloc(SRAMIN,30);?

//申請30個字節內存,存放路徑+名字,類似"0:RECORDER/REC00001.wav"

?????? if(pname==NULL)rval=1;

????? if(rval==0)????????????????????????????????????????????????????? //內存申請OK

?????? {?????

???????????? recoder_enter_rec_mode(1024*recagc);???????????????????????????

?? ???????? while(VS_RD_Reg(SPI_HDAT1)>>8);??????? //等到buf 較為空閑再開始?

? ?????????? recoder_show_time(recsec);??????????????????????? //顯示時間

????????????? recoder_show_agc(recagc);???????????????????????? //顯示agc

????????????? pname[0]=0;???????????????????????????????????????????? //pname沒有任何文件名????????????

????? ?? ? while(rval==0)

????????????? {

???????????????????? key=KEY_Scan(0);

???????????????????? switch(key)

???????????????????? {???????????

??????????????????????????? case KEY_LEFT:?? //STOP&SAVE

?????????????????????????????????? if(rec_sta&0X80)//有錄音

?????????????????????????????????? {

????????????????????????????????????????? wavhead->riff.ChunkSize=sectorsize*512+36;???? //文件大小-8;

??????????????????????????? ?? ???????? wavhead->data.ChunkSize=sectorsize*512;???????? //數據大小

????????????????????????????????????????? f_lseek(f_rec,0);?????????????????????????????????????????????? //偏移到文件頭.

??????????????????????????? ? ?????????? f_write(f_rec,(const void*)wavhead,sizeof(__WaveHeader),

&bw);//寫入頭數據

????????????????????????????????????????? f_close(f_rec); sectorsize=0;

?????????????????????????????????? }

?????????????????????????????????? rec_sta=0; recsec=0; LED1=1; //關閉DS1?????????

?????????????????????????????????? LCD_Fill(60,230,240,246,WHITE);????

//清除顯示,清除之前顯示的錄音文件名??? ????

?????????????????????????????????? recoder_show_time(recsec);????????? //顯示時間

?????????????????????????????????? break;????

??????????????????????????? case KEY_RIGHT: //REC/PAUSE

?????????????????????????????????? if(rec_sta&0X01)//原來是暫停,繼續錄音

?????????????????????????????????? {

????????????????????????????????????????? rec_sta&=0XFE;//取消暫停

?????????????????????????????????? }else if(rec_sta&0X80)//已經在錄音了,暫停

?????????????????????????????????? {

????????????????????????????????????????? rec_sta|=0X01;?????? //暫停

?????????????????????????????????? }else??????????????????????????? //還沒開始錄音

?????????????????????????????????? {

?????? ????????????????????????????????? rec_sta|=0X80;?????? //開始錄音???? ???? ?

????????????????????????????????????????? recoder_new_pathname(pname);???????????????? //得到新的名字

????????????????????????????????????????? Show_Str(60,230,240,16,pname+11,16,0);? //顯示錄音文件名字

??????????????????????????? ???????????? recoder_wav_init(wavhead);?????????????????????? //初始化wav數據

?????? ????????????????????????????????? res=f_open(f_rec,(const TCHAR*)pname,FA_CREATE_ALWAYS

|FA_WRITE);

????????????????????????????????????????? if(res)//文件創建失敗

????????????????????????????????????????? {

???????????????????????????????????????????????? rec_sta=0;?????? //創建文件失敗,不能錄音

???????????????????? ??????????????????????????? rval=0XFE;??? //提示是否存在SD

????????????????????????????????????????? }else res=f_write(f_rec,(const void*)wavhead,

sizeof(__WaveHeader),&bw);//寫入頭數據

?????? ?????????????????????????? }

?????????????????????????????????? if(rec_sta&0X01)LED1=0;??? //提示正在暫停

?????????????????????????????????? else LED1=1;

?????????????????????????????????? break;

??????????????????????????? case KEY_UP:?????? //AGC+??

??????????????????????????? case KEY_DOWN: //AGC-

?????????????????????????????????? if(key==KEY_UP)recagc++;

?????????????????????????????????? else if(recagc)recagc--;

?????????????????????????????????? if(recagc>15)recagc=15;?????? //范圍限定為0~15,自動AGC.其他AGC倍數

?????????????????????????????????? recoder_show_agc(recagc);

?????????????????????????????????? VS_WR_Cmd(SPI_AICTRL1,1024*recagc);??????

//設置增益,0,自動增益.1024相當于1,512相當于0.5

?????????????????????????????????? break;

???????????????????? }

???????????????????? if(rec_sta==0X80)//已經在錄音了

?????? ????????????? {

????????????? ? ?????????? w=VS_RD_Reg(SPI_HDAT1);????

??????????????????????????? if((w>=256)&&(w<896))

??????????????????????????? {

?????? ?????????????????????????? idx=0;????????????????????????? ?? ? ?

????????????? ? ????????????????? while(idx<512) ??? //一次讀取512字節

?????????????????????????????????? {????

???????????????????? ??????????????????? w=VS_RD_Reg(SPI_HDAT0);????????????????????????? ?? ? ????

????????????? ?????????????????????????? recbuf[idx++]=w&0XFF; recbuf[idx++]=w>>8;?????????????????????

?????????????????????????????????? }???? ? ?????????? ?

?????? ?????????????????????????? res=f_write(f_rec,recbuf,512,&bw);//寫入文件

?????????????????????????????????? if(res) break;//寫入出錯.??????

?????????????????????????????????? sectorsize++;//扇區數增加1,約為32ms?????

??????????????????????????? }??????????????????

???????????????????? }else//沒有開始錄音,則檢測TPAD按鍵

???????????????????? {????????????????????????????????????????????????????? ?

??????????????????????????? if(TPAD_Scan(0)&&pname[0])//如果觸摸按鍵被按下,pname不為空

??????????????????????????? {?????????????????????????

?????????????????????????????????? Show_Str(60,230,240,16,"播放:",16,0);???????????? ??

?????????????????????????????????? Show_Str(60+40,230,240,16,pname+11,16,0);//顯示播放的文件名字??

?????????????????????????????????? rec_play_wav(pname);??????????????????????? 播放pname

?????????????????????????????????? LCD_Fill(60,230,240,246,WHITE);???? /清除之前顯示的錄音文件名?

?????????????????????????????????? recoder_enter_rec_mode(1024*recagc);?????? //重新進入錄音模式????

???????????????????? ?? ???????? while(VS_RD_Reg(SPI_HDAT1)>>8); //等到buf 較為空閑再開始?

???????????????????? ? ?????????? recoder_show_time(recsec);???????????????? //顯示時間

???????????????????? ????????????? recoder_show_agc(recagc);????????????????? //顯示agc

?????????????????????????? }

??????????????????????????? delay_ms(5); timecnt++;

??????????????????????????? if((timecnt%20)==0)LED0=!LED0;//DS0閃爍

???????????????????? }

??????????????????? if(recsec!=(sectorsize*4/125))//錄音時間顯示

???????????????????? {???? ??

??????????????????????????? LED0=!LED0;//DS0閃爍

??????????????????????????? recsec=sectorsize*4/125;

??????????????????????????? recoder_show_time(recsec);//顯示時間

???????????????????? }

????????????? }???????????????????????????????? ??

?????? }???? ?? ???????? ????????????????????????? ????

?????? myfree(SRAMIN,wavhead); myfree(SRAMIN,recbuf);????? ?????? ?

????? myfree(SRAMIN,f_rec);?????? myfree(SRAMIN,pname);

?????? return rval;

}

該函數實現了我們在硬件設計時介紹的功能,我們就不詳細介紹了。recorder.c的其他代碼和recorder.h的代碼我們這里就不再貼出了,請大家參考光盤本實驗的源碼。保存recorder.c,最后,我們在test.c里面修改main函數如下:

int main(void)

{???????????

?? ? Stm32_Clock_Init(9);??? //系統時鐘設置

?????? delay_init(72);????????????? ?????? //延時初始化

?????? uart_init(72,9600); ????? //串口1初始化? ? ??

?????? LCD_Init();????????????????? //初始化液晶

?????? LED_Init();???????? ? //LED初始化

?????? KEY_Init();????????????????? //按鍵初始化

?????? TPAD_Init(72);???????????? //初始化觸摸按鍵? ?

?????? Audiosel_Init();???? ?????? //初始化音源選擇

?????? usmart_dev.init(72);????? //usmart初始化????

????? mem_init(SRAMIN);???? //初始化內部內存池????

????? VS_Init();????? ?

????? exfuns_init();??????????????? //fatfs相關變量申請內存?

? ??? f_mount(0,fs[0]); ??????? //掛載SD

????? f_mount(1,fs[1]); ??????? //掛載FLASH.

?????? POINT_COLOR=RED;?????

????? while(font_init()) ??????? //檢查字庫

?????? {???? ???

????????????? LCD_ShowString(60,50,200,16,16,"Font Error!"); delay_ms(200);??????????????????????? ?

????????????? LCD_Fill(60,50,240,66,WHITE);//清除顯示????? ????

?????? }

????? Show_Str(60,50,200,16,"戰艦 STM32開發板",16,0);?????????????????????????? ??? ?????? ?

?????? Show_Str(60,70,200,16,"WAV錄音機實驗",16,0);???????????????????????? ??? ?????? ?

?????? Show_Str(60,90,200,16,"廣州星翼電子",16,0);?????????????????????? ??? ?????? ?

?????? Show_Str(60,110,200,16,"2012920",16,0);

?????? Show_Str(60,130,200,16,"KEY0:REC/PAUSE",16,0);

?????? Show_Str(60,150,200,16,"KEY2:STOP&SAVE",16,0);

?????? Show_Str(60,170,200,16,"KEY_UP:AGC+ KEY1:AGC-",16,0);

?????? Show_Str(60,190,200,16,"TPADlay The File",16,0);

?????? while(1)

?????? {

????????????? Audiosel_Set(0); ? //MP3通道

????????????? Show_Str(60,210,200,16,"存儲器測試...",16,0);

????????????? VS_Ram_Test();???? ???

????????????? Show_Str(60,210,200,16,"正弦波測試...",16,0); ????? ????? ?

???????????? VS_Sine_Test();???? ??

????????????? Show_Str(60,210,200,16,"<<WAV錄音機>>",16,0);

????????????? recoder_play();

?????? }???? ?????????????????????????????????????????????????????????????????? ???????????????????????? ????

}

??? 該函數代碼同上一章的main函數代碼幾乎一樣,只是我們這里增加了TPAD初始化,然后修改了一些顯示內容,其他兩者就都差不多了,我們就不再細說了。

至此,本實驗的軟件設計部分結束。

?

50.4 下載驗證

?

在代碼編譯成功之后,我們下載代碼到ALIENTEK戰艦STM32開發板上,程序先檢測字庫,然后對VS1053進行RAM測試和正弦測試,之后檢測SD卡的RECORDER文件夾,一切順利通過之后,激活VS1053PCM錄音模式,得到,如圖50.4.1所示:

?


50.4.1 錄音機界面

?

此時,我們按下KEY0就開始錄音了,此時看到屏幕顯示錄音文件的名字以及錄音時長,如圖50.4.2所示:

?


50.4.2 錄音進行中

?

?????? 在錄音的時候按下KEY0則執行暫停/繼續錄音的切換,通過DS1指示錄音暫停,按WK_UPKEY1可以調節AGCAGC越大,越靈敏,不過不建議設置太大,因為這可能導致失真。通過按下KEY2,可以停止當前錄音,并保存錄音文件。在完成一次錄音文件保存之后,我們可以通過按TPAD按鍵,來實現播放這個錄音文件(即播放最近一次的錄音文件),實現試聽。

?

?????? 我們將開發板的錄音文件放到電腦上面,可以通過屬性查看錄音文件的屬性,如圖50.4.3所示:

?


50.4.3 錄音文件屬性

?

?????? 這和我們預期的效果一樣,通過電腦端的播放器(winamp/千千靜聽等)可以直接播放我們所錄的音頻。經實測,效果還是非常不錯的。

?

?

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/chulin/p/7908498.html

總結

以上是生活随笔為你收集整理的硬件——STM32 , 录音的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

中文字幕欧美日韩va免费视频 | 国产精品手机在线播放 | 在线观看av网 | 美女免费网站 | 久草久草在线观看 | 91精品视频观看 | 99 国产精品| 天天干天天做 | 天天射色综合 | 一区二区精品视频 | 狠狠干电影 | 网址你懂的在线观看 | 国产老妇av | 2018亚洲男人天堂 | 免费亚洲视频 | 中文字幕av在线电影 | 欧美最猛性xxxxx免费 | 美女很黄免费网站 | 色黄久久久久久 | 国产精品久久久一区二区三区网站 | 六月色| 国产精品欧美 | 色噜噜在线观看 | 少妇bbbb | 亚洲春色奇米影视 | 国产黄色精品网站 | 亚洲精品www久久久 www国产精品com | 亚州av成人 | 国产精品自拍av | 成人h电影在线观看 | 亚洲精品乱码久久久久久9色 | 成人在线免费观看视视频 | 亚洲欧洲在线视频 | 人人爽人人乐 | 伊人婷婷网 | 亚洲精品乱码久久久久久蜜桃不爽 | 亚洲永久精品在线观看 | 色美女在线 | 国产精品久久久久一区二区三区共 | 国产一区二区三精品久久久无广告 | 青春草免费视频 | 外国av网 | 丁香久久激情 | 国产精品video爽爽爽爽 | 99视频在线精品国自产拍免费观看 | 亚洲永久精品在线观看 | 成人动漫精品一区二区 | 免费日p视频| 91插插视频 | 精品国偷自产在线 | 国产高清在线看 | 欧美精品在线观看一区 | 成人免费观看在线视频 | 日韩视频中文字幕 | 成人免费视频观看 | 免费在线观看av不卡 | 亚洲成人精品在线 | 在线а√天堂中文官网 | 国产 日韩 欧美 自拍 | 五月婷视频 | 人人爽网站 | 81精品国产乱码久久久久久 | 国产高清专区 | 国产在线a不卡 | 狠狠狠色丁香婷婷综合久久五月 | 免费日韩 精品中文字幕视频在线 | 国产精品a久久久久 | 亚洲精品免费在线观看视频 | 久久五月天色综合 | 国产精品丝袜 | 国产精品久久久久一区二区国产 | 国产在线视频一区二区三区 | 波多野结衣精品在线 | 色婷婷六月天 | 久草在线视频新 | 亚洲在线不卡 | 国产在线视频一区二区 | av 在线观看 | 中日韩三级视频 | 国产在线观看xxx | 午夜美女视频 | 日本中文字幕在线 | 国产精品成人一区二区 | 天天干.com | 在线视频欧美日韩 | 天天干天天操天天射 | 97成人超碰 | 亚洲专区一二三 | 久久久黄色av | 成人国产一区 | 天天天在线综合网 | 天天舔夜夜操 | 国产福利91精品张津瑜 | 亚洲免费一级电影 | 日本少妇高清做爰视频 | 国产精品尤物 | 天天干,狠狠干 | 国产永久网站 | 成年人在线免费看视频 | 日韩视频精品在线 | 九九九九九国产 | 91av观看| 精品视频不卡 | 久久视频这里有精品 | 久久久久综合精品福利啪啪 | а中文在线天堂 | 狠狠艹夜夜干 | 综合色婷婷 | 久久精品99国产国产 | 日韩免费一区二区在线观看 | av福利在线导航 | 久草久草久草久草 | 99欧美精品 | 国产精品久久久久久久久岛 | 亚洲最新av | 日韩精品网址 | 99精品国自产在线 | 国产一区二区精品在线 | 国产精品一区二区久久国产 | 美女黄色网在线播放 | 天天操网站 | 久久久久久久久久电影 | 国产麻豆果冻传媒在线观看 | 中文字幕在线看 | 国产不卡视频在线播放 | 国产经典av | 国产又粗又硬又爽的视频 | 免费观看黄 | 亚洲a成人v | 午夜一级免费电影 | 天天射夜夜爽 | 欧美另类美少妇69xxxx | 久久涩涩网站 | 日韩一区视频在线 | 97激情影院 | 精品国产1区2区3区 国产欧美精品在线观看 | av中文字幕电影 | 激情综合啪 | 国产精品一区二区吃奶在线观看 | 久久精品亚洲综合专区 | 中文字幕大全 | 成人久久精品视频 | 国语精品久久 | 久久综合九色九九 | 成人国产精品久久久春色 | 色综合天天色综合 | 国产中文在线视频 | 色综合久久久网 | 手机看片 | 国产黄色在线 | 亚洲欧美日韩精品久久久 | 在线国产中文字幕 | 国产精品毛片一区二区 | 一区二区三区在线观看中文字幕 | 国产日产精品久久久久快鸭 | 亚洲人成人天堂h久久 | 色偷偷人人澡久久超碰69 | 日韩视频区 | 久久福利电影 | 国产一二三在线视频 | 中文字幕亚洲五码 | 国产精品久久麻豆 | 中文字幕欧美日韩va免费视频 | 国产午夜在线观看视频 | 久香蕉 | 国产在线2020 | 日韩一区二区三免费高清在线观看 | 521色香蕉网站在线观看 | 亚洲无人区小视频 | 最新免费av在线 | 亚洲精品在线网站 | av电影免费在线 | 亚洲综合色视频 | 婷婷九月激情 | 国产区免费 | 伊人影院在线观看 | 中文字幕在线日 | 91中文在线 | 免费中文字幕在线观看 | 成人久久18免费网站麻豆 | 狠狠躁夜夜av | 日韩在线激情 | 狠狠色狠狠色综合日日92 | 爱色av.com| 国产美女搞久久 | 日本3级在线观看 | 亚洲aⅴ乱码精品成人区 | zzijzzij亚洲日本少妇熟睡 | 人人藻人人澡人人爽 | 欧洲不卡av| 亚洲年轻女教师毛茸茸 | 日韩深夜在线观看 | 成人黄色小说视频 | www.色午夜| 亚洲在线视频免费观看 | 中文字幕中文字幕在线中文字幕三区 | 国产91精品高清一区二区三区 | 小草av在线播放 | 久久视频免费在线 | 亚洲在线视频免费观看 | 91人人插| 一区二区三区四区免费视频 | 国产裸体永久免费视频网站 | 久久久久在线视频 | 国产一区二区不卡视频 | 99这里只有精品99 | 国产精品久久久久久久久婷婷 | 久久精品影视 | 日韩区欠美精品av视频 | 五月亚洲综合 | 深爱激情亚洲 | 欧美贵妇性狂欢 | 激情五月播播久久久精品 | 992tv人人草| 欧美欧美| 日韩在线观看第一页 | 91精品国产乱码久久桃 | 黄色av电影网 | 午夜久久视频 | 国产一级不卡毛片 | 国产精品一区二区三区视频免费 | 欧美精品中文字幕亚洲专区 | 成年人黄色大全 | 亚洲黄色一级视频 | 日本韩国精品一区二区在线观看 | 亚洲精品欧美视频 | 国产精品手机在线播放 | www.久久久com| 国产精品一码二码三码在线 | 黄色av影视| www.xxx.性狂虐 | 久久国产综合视频 | 在线观看精品视频 | 亚洲精品高清在线 | 人人狠 | 国产在线视频在线观看 | 久久人人爽人人爽 | 国产精品久久久毛片 | 麻豆传媒电影在线观看 | 中文字幕在线观看视频一区二区三区 | 在线观看色视频 | 在线免费观看麻豆视频 | 日韩欧美精品在线 | 欧美日韩免费网站 | 黄污网站在线观看 | 久草网免费 | a爱爱视频 | 黄色片网站av | 91.dizhi永久地址最新 | 日本精品一| 麻豆视频在线免费观看 | 国产三级精品三级在线观看 | 国产精品永久久久久久久久久 | 国产视频1区2区 | 91看片淫黄大片一级在线观看 | 国产一二三在线视频 | 蜜臀av夜夜澡人人爽人人桃色 | 一级黄色电影网站 | 99精品国产99久久久久久97 | 亚洲午夜激情网 | 天天射狠狠干 | 国内精品视频一区二区三区八戒 | 在线精品观看国产 | 黄视频色网站 | 伊人首页 | 国产福利小视频在线 | 在线中文字幕观看 | 狠狠操狠狠插 | 亚洲91精品在线观看 | 午夜久久电影网 | 国产三级香港三韩国三级 | 狠狠干网 | 国产精品v a免费视频 | 久草在线在线视频 | 亚洲美女视频在线 | 又黄又刺激又爽的视频 | 亚洲一区二区高潮无套美女 | 久久草草热国产精品直播 | 亚洲国产免费 | 婷婷午夜天 | 欧美日在线观看 | 日韩com | 激情文学综合丁香 | 在线免费观看的av | 午夜精品视频一区 | 激情丁香久久 | 亚洲精品久久久久久久蜜桃 | 五月婷婷丁香六月 | 激情欧美在线观看 | 中文字幕在线视频免费播放 | 九九九热 | 在线观看资源 | 国产精品视频资源 | 中文字幕第一页在线vr | 男女啪啪视屏 | 日韩大陆欧美高清视频区 | 精品视频在线看 | 久草综合在线观看 | 久久国产手机看片 | 成人毛片100免费观看 | 欧美日韩国产二区 | 最近中文字幕mv免费高清在线 | 69视频在线播放 | 69视频国产 | 有码视频在线观看 | 亚洲国产小视频在线观看 | 色五月激情五月 | 天天色天天搞 | 久久国产精品一区二区三区四区 | 国产小视频精品 | 天天爽天天爽天天爽 | 国产精品99免视看9 国产精品毛片一区视频 | 国产资源免费在线观看 | 国产精品久久久久久久久久尿 | 在线影院av| 国产精品一区二区av麻豆 | 天天摸天天舔 | 久久婷婷一区 | 天天操狠狠操夜夜操 | 免费又黄又爽 | 国产91精品一区二区麻豆亚洲 | 精品免费久久 | 亚洲人成精品久久久久 | 午夜美女视频 | 很黄很黄的网站免费的 | 麻豆视频国产在线观看 | 99久久夜色精品国产亚洲96 | 国产精品久久久久久久久久尿 | 欧美福利久久 | 黄色a一级片 | 亚洲无吗视频在线 | 中文字幕在线观看免费高清完整版 | 韩国精品视频在线观看 | 99色在线播放 | 日韩手机视频 | 国产精品久久久久一区二区三区 | 黄色福利网 | 久久美女电影 | 午夜视频在线瓜伦 | 深爱激情亚洲 | 精品少妇一区二区三区在线 | 亚洲一区动漫 | 国产高清免费视频 | 色欲综合视频天天天 | 精品国产一区二区三区蜜臀 | 国产精品资源 | 久久一区二区三区国产精品 | 久久精品国产亚洲aⅴ | 日日干综合| 精品免费视频123区 午夜久久成人 | 国产乱码精品一区二区三区介绍 | 欧美一级高清片 | 欧美久久久久 | 激情婷婷六月 | 久草精品免费 | 2019天天干天天色 | 国产视频一二三 | 亚洲天堂在线观看完整版 | 日韩av黄| www视频在线免费观看 | 网站免费黄色 | 青青河边草免费直播 | 国内精品久久久久影院一蜜桃 | 五月天六月婷 | 国产精品一区二区视频 | 国产视频在线免费观看 | 国产日本在线播放 | 丁香婷婷综合五月 | 亚洲精品1234区 | 国产精品黑丝在线观看 | 日韩av美女| 中文字幕第一页av | 日韩有码中文字幕在线 | 国产淫片| 中文字幕有码在线播放 | 国产美女被啪进深处喷白浆视频 | 免费观看特级毛片 | 日日干视频 | 97在线观看免费高清完整版在线观看 | 天天干天天插 | 日本中文乱码卡一卡二新区 | 日韩欧美视频一区二区 | 伊人超碰在线 | 久久综合狠狠综合久久综合88 | 97人人澡人人添人人爽超碰 | 久精品视频免费观看2 | 国产精品久久中文字幕 | 97人人超| 免费看片网站91 | 在线亚洲日本 | 国产精品欧美一区二区三区不卡 | 91中文字幕在线视频 | 亚洲综合视频在线观看 | 免费看三级黄色片 | 亚洲国产片色 | 欧美色888 | 久久精品视频在线播放 | 国产日韩精品视频 | 五月天,com | www.久草.com | 国内精品视频在线 | 色视频网页 | 波多野结衣在线播放视频 | 日韩欧美高清一区二区三区 | 日本久久久精品视频 | 在线观看日韩国产 | 丁香激情综合久久伊人久久 | 蜜桃传媒一区二区 | 久久久久久久久影院 | 午夜精品一区二区三区免费视频 | 很黄很黄的网站免费的 | 中国黄色一级大片 | 国产精品va | 亚洲精品乱码久久久久久蜜桃91 | 成人免费在线观看电影 | 国产亚洲成av人片在线观看桃 | 久久久精品网站 | 亚洲国产精品资源 | 天天干天天在线 | 亚洲久草网 | 日韩av高清在线观看 | 亚洲精品综合在线 | 精品久久久久久一区二区里番 | 亚洲一区二区精品3399 | 中文字幕日韩在线播放 | 国产69久久精品成人看 | 91成人小视频 | 色在线亚洲| 欧美日韩国产精品一区二区亚洲 | 免费久久网 | 欧美日韩视频在线观看一区二区 | 精品一区二区三区香蕉蜜桃 | av免费电影在线 | 欧美电影在线观看 | av中文在线播放 | 黄色国产在线观看 | 中文电影网 | 玖玖爱在线观看 | 在线看v片成人 | 国内精自线一二区永久 | 99福利影院 | 国产精品色视频 | 久久麻豆精品 | 欧美激情综合色 | 欧美99精品 | 嫩草伊人久久精品少妇av | 久久视奸| 国产精品久久久久久久久久久久久 | 在线视频一二三 | 91精品无人成人www | 91爱爱免费观看 | 国产精品久久久久av免费 | 亚洲激情p | av免费在线网 | 91插插影库| 日韩激情视频在线观看 | 国产91av视频在线观看 | 久久免费观看视频 | 国内精品视频一区二区三区八戒 | 综合久久精品 | 精品一区二区三区久久久 | 99精彩视频在线观看免费 | 国产黄色片免费在线观看 | 欧美激情视频一区二区三区免费 | 久久理论电影网 | 天堂va在线高清一区 | 久草剧场 | 亚洲国产精品久久久久婷婷884 | 我爱av激情网 | 在线国产能看的 | 亚洲欧洲中文日韩久久av乱码 | 日韩a欧美 | 亚洲涩涩涩 | 日本久久视频 | 一区二区视频在线播放 | 99免费精品 | 国产精品美女视频网站 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 国产精品永久免费观看 | 美女av电影 | 欧美国产91 | 久久精品国产一区二区电影 | 中文字幕免费久久 | 丰满少妇在线观看资源站 | 日韩网站在线观看 | 91九色蝌蚪国产 | 国产免费久久 | 九九视频在线播放 | 91成年视频 | 亚洲久草在线视频 | 人人网人人爽 | 在线观看一区二区精品 | 人人玩人人添人人澡超碰 | 伊人激情网 | 久久综合综合久久综合 | av一区在线 | 五月婷婷黄色网 | 成人av在线资源 | 91伊人久久大香线蕉蜜芽人口 | a午夜电影 | 欧美日韩中文在线视频 | 96香蕉视频| 久久er99热精品一区二区三区 | 天堂av网在线| 婷婷丁香视频 | 99热最新地址 | 日韩在线视频精品 | 成人免费在线视频观看 | 国产午夜精品在线 | 精品国产一区二区三区久久影院 | 国产高清精品在线观看 | 日韩区欠美精品av视频 | 日韩成人中文字幕 | 欧美日韩精品在线视频 | 亚洲精选视频在线 | av福利在线导航 | 亚洲 av网站 | 日韩网站在线播放 | www日日夜夜| 亚洲免费专区 | 久草av在线播放 | 国产在线永久 | 欧美成人性战久久 | 欧美日韩伦理一区 | 天天躁日日 | 超碰av在线播放 | 国产精品午夜在线观看 | 久久久久伊人 | 在线亚洲日本 | 日韩aa视频 | 色综合久久综合网 | 欧美精品久久久久久久亚洲调教 | 国产在线不卡视频 | 激情久久久久久久久久久久久久久久 | 青青网视频 | 五月婷婷久 | 五月天婷婷在线观看视频 | a√天堂中文在线 | 国产亚洲精品精品精品 | 久久免费一级片 | 综合网五月天 | 精品视频123区在线观看 | 欧美精品一区二区三区一线天视频 | 国产精品精品久久久久久 | 波多野结衣视频一区 | 成人教育av | 在线视频日韩精品 | 亚洲精品午夜国产va久久成人 | 成人黄色大片在线观看 | 色免费在线 | 97电影在线| 亚洲精品在线视频 | 久草电影在线观看 | 久久www免费人成看片高清 | 久久久久国产精品免费网站 | 月下香电影 | 天天操天天干天天爽 | 99久久精品久久久久久清纯 | 97成人在线观看 | 日本精品在线 | 亚洲理论电影 | 久久综合色天天久久综合图片 | 久草亚洲视频 | 四虎成人av | 伊人手机在线 | 精品国产电影一区 | 久草.com| 夜夜夜 | 精品自拍sae8—视频 | h网站免费在线观看 | 欧美精选一区二区三区 | 美女网站在线免费观看 | 欧美一级片免费播放 | 欧美韩国日本在线观看 | 伊人五月综合 | 国产人成看黄久久久久久久久 | www.色com | 超黄视频网站 | 在线视频欧美亚洲 | 国产啊v在线观看 | 麻豆国产精品va在线观看不卡 | 视频 天天草 | av黄网站| 国产黑丝一区二区 | 日韩精品免费在线观看 | 免费观看日韩av | 深爱激情亚洲 | 国产3p视频 | 97色国产 | 亚洲综合黄色 | 91亚洲精品国偷拍自产在线观看 | 人人爽人人射 | 在线观看视频97 | 在线观看国产中文字幕 | 国产精品18久久久久久久久久久久 | 欧美日韩精品免费观看视频 | 国产手机在线观看 | 国产精品免费视频观看 | 亚洲精品自拍视频在线观看 | 国产免费又爽又刺激在线观看 | 日韩电影一区二区在线观看 | 免费看毛片网站 | 日韩精品一二三 | 婷婷 中文字幕 | 欧美日韩高清在线观看 | 亚洲国产人午在线一二区 | 亚洲黄在线观看 | 麻豆一级视频 | 国产成人精品av | 天堂激情网 | 丰满少妇一级 | 精品视频免费看 | 成人黄色电影在线 | 国产在线观看国语版免费 | 在线观看视频在线 | 美女网站黄在线观看 | 久久手机看片 | www.天天色| 一区二区视频网站 | 国产激情小视频在线观看 | 麻豆国产精品视频 | 日韩高清www | 亚洲精品一区二区在线观看 | 992tv在线成人免费观看 | 久久综合色婷婷 | 丁香九月激情 | 成人99免费视频 | 黄p在线播放 | 国产精品福利在线播放 | 久久免费精品一区二区三区 | 精品国产一二三四区 | 激情在线网址 | 亚洲片在线资源 | 973理论片235影院9 | 制服丝袜在线91 | 国产精品一区二区三区四区在线观看 | 久久99久久久久久 | 日韩av一区二区在线 | 色噜噜噜噜 | 国产中文字幕在线视频 | 色网站在线 | 亚洲视频分类 | 久久激情小说 | 中文字幕在线观看国产 | 五月天婷婷狠狠 | 久草干| 日韩精品欧美视频 | 51久久成人国产精品麻豆 | 高清av免费看 | 国产不卡在线播放 | 亚洲在线视频播放 | 日韩精品91偷拍在线观看 | av福利免费 | av观看网站| 中文在线a√在线 | 91久久精品日日躁夜夜躁国产 | 人人爽人人爱 | 中文字幕久久网 | 日韩精品一区二区三区不卡 | 97精品一区| 日韩.com | 欧美精品一二 | 91av超碰| 色先锋av资源中文字幕 | 午夜av剧场| 在线观看中文字幕一区 | 国产精品福利午夜在线观看 | 免费99精品国产自在在线 | 亚洲精品视频在线看 | 在线有码中文 | 日韩精品黄 | 成人黄性视频 | 99热在线观看免费 | 成人黄色在线视频 | 97电院网手机版 | 91香蕉视频黄 | 日本xxxx.com | 欧美综合在线视频 | 国产精品毛片久久久久久 | 亚州欧美精品 | 黄色免费网站下载 | 另类五月激情 | 国产精品久久久久久久久久东京 | 婷婷四房综合激情五月 | 日韩免费在线观看网站 | 日本久久久久久 | 激情五月婷婷综合 | 黄色的视频网站 | 欧美日韩不卡在线 | 日韩1页| 色诱亚洲精品久久久久久 | 在线亚洲激情 | 国产精品一区二区免费 | 久久黄色免费视频 | 国产一级片网站 | 久久久久久久久久久免费视频 | 国产高清日韩 | 亚洲精品综合欧美二区变态 | 狠狠的干狠狠的操 | 久久久精品视频成人 | 亚洲精品h | 欧洲亚洲女同hd | 91人人视频在线观看 | 天天综合导航 | 最近中文字幕视频网 | 婷婷视频在线观看 | 成人久久久精品国产乱码一区二区 | 亚洲国产视频在线 | 色五月成人| 精品视频不卡 | 91免费看片黄 | 少妇搡bbb | 免费视频91蜜桃 | 一区二区不卡视频在线观看 | 久久视精品| 久久久久久不卡 | 成人免费视频网址 | 黄色高清视频在线观看 | 免费观看www小视频的软件 | 国产高清在线精品 | 99人久久精品视频最新地址 | 国产日韩精品一区二区在线观看播放 | 看片网站黄色 | 水蜜桃亚洲一二三四在线 | 美女视频黄是免费的 | 日本深夜福利视频 | 色丁香色婷婷 | 天天综合久久 | 在线免费观看黄 | 992tv人人网tv亚洲精品 | 成人精品久久 | 91亚洲精品久久久 | 黄色网免费 | 欧美一区二区在线看 | 免费看的视频 | 国产97视频| 国产综合在线视频 | 久久久久久国产精品999 | 日韩av看片 | 国产一区二区三区午夜 | 久草在线视频精品 | 久久伊人八月婷婷综合激情 | 69精品久久久 | 97成人精品视频在线观看 | 五月天丁香 | 国产一级二级视频 | 国产亚洲精品久久久久久电影 | 国内精品小视频 | 在线免费观看亚洲视频 | 麻豆94tv免费版 | 精品视频久久久 | 日韩在线免费观看视频 | 日日夜夜精品网站 | 国产午夜精品一区二区三区四区 | 国产一区二区精 | 久久综合五月天 | 色综合网在线 | 婷婷伊人综合亚洲综合网 | 少妇bbw揉bbb欧美 | 夜夜狠狠 | 久久这里只有精品视频首页 | a天堂最新版中文在线地址 久久99久久精品国产 | 五月婷婷丁香网 | 成人黄色在线 | 日韩av资源站 | 高清精品视频 | 国产视频在线播放 | av电影 一区二区 | 天天躁日日躁狠狠躁 | 亚洲免费观看在线视频 | 日韩在线观看视频免费 | 精品福利av | 亚洲日本va午夜在线电影 | 久久黄色影院 | av视屏在线播放 | 久久精品亚洲综合专区 | 久久久伊人网 | av成人动漫在线观看 | 日韩av女优视频 | 久久国产品 | 欧美另类美少妇69xxxx | 黄色大全在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产美女免费观看 | 久久久久久久久久久久电影 | 人人超在线公开视频 | 中国美女一级看片 | 欧美成人tv | 国产免费a| 国产精品国产三级国产aⅴ9色 | 成年人免费观看国产 | 国产精品一区二区三区四 | 成片免费观看视频 | 韩国av电影在线观看 | 中字幕视频在线永久在线观看免费 | 最近2019中文免费高清视频观看www99 | bayu135国产精品视频 | 91精品视频免费在线观看 | 国产免费高清视频 | 中文字幕第一页在线播放 | 日韩色一区二区三区 | 在线你懂 | 国产成人一区二区啪在线观看 | 狠狠五月婷婷 | 天天干天天操天天搞 | 黄色av播放 | 欧美久久久影院 | 蜜桃av久久久亚洲精品 | 狠狠色噜噜狠狠 | 中文字幕第 | 激情文学综合丁香 | 国产美女精品久久久 | 美女黄视频免费 | 亚洲理论在线观看电影 | 日日干综合 | 成年人黄色在线观看 | 国产精品理论片在线观看 | 国产欧美综合视频 | 欧美国产日韩一区二区三区 | 97在线观看免费观看 | 亚洲欧美在线综合 | 欧美在线视频免费 | 国产精品免费在线 | 国产精品福利午夜在线观看 | 日韩女同av | 精品国产一区二区在线 | 五月激情五月激情 | 亚洲污视频 | 精品久久在线 | 日韩高清不卡在线 | 色婷婷狠| 婷婷网站天天婷婷网站 | 免费久久久 | 免费午夜在线视频 | 日韩在线中文字幕 | 国产又粗又猛又色又黄视频 | 免费福利小视频 | 成人av影院在线观看 | www99精品 | 91在线精品秘密一区二区 | 成人午夜影视 | 久久久久久中文字幕 | 国产高清日韩 | 香蕉视频在线看 | 成人影视免费看 | 久久久久免费精品国产 | 亚洲欧美日韩国产一区二区三区 | 国内精品美女在线观看 | 国产精品视频你懂的 | 亚洲天堂精品视频 | 国产精品va在线 | 色婷久久 | 欧美亚洲精品一区 | 日一日干一干 | 久久久久久久久久久久久影院 | a在线免费观看视频 | 国产亚洲精品久久久久久久久久 | 欧美资源在线观看 | 色婷丁香| 天天操天天干天天爱 | 久草在线一免费新视频 | 婷婷在线精品视频 | 美女视频网站久久 | 波多野结衣在线播放视频 | av看片网址 | 少妇bbw揉bbb欧美 | 成年免费在线视频 | 天天射天天射天天射 | 懂色av懂色av粉嫩av分享吧 | 丁香激情视频 | 在线观看成人毛片 | 国产一级免费播放 | 国产精品久久久久久久久久久久午 | 久久免费国产 | 国产黄色片在线 | 久久久三级视频 | 福利久久久 | 日韩一区二区三区高清免费看看 | 久久久久久毛片精品免费不卡 | 国产精品免费观看在线 | 美女视频黄是免费的 | 99热99re6国产在线播放 | 久久九九精品久久 | 国产一区二三区好的 | 久久久国产精品麻豆 | 国产丝袜 | 男女全黄一级一级高潮免费看 | 九九热只有这里有精品 | 日韩欧美视频免费观看 | 97免费视频在线 | 国产精品久久久久久久7电影 | 久久精品国产精品亚洲 | 最新动作电影 | 日韩3区| 亚洲a成人v | 久久国产剧场电影 | 99免费在线视频 | 欧美va天堂在线电影 | 美女网色| 视频国产在线观看18 | 欧洲性视频| 伊人影院99 | 久久免费试看 | 久久视频这里有久久精品视频11 | 日日干干 | 网站免费黄 | 亚洲精品一区二区久 | 一级欧美一级日韩 | 久久黄色美女 | 亚洲三级在线 | 国产99区 | 香蕉视频在线免费 | 91av亚洲 | av激情五月 | 91丨九色丨蝌蚪丨老版 | 久久99热国产| 黄色网址a| 精品久久久久久久久久久久久久久久久久 | 国产一卡久久电影永久 | 中文字幕在线播放日韩 | 国产专区第一页 | 黄网av在线| 成人天堂网 | 国产精品高清免费在线观看 | 草免费视频| 天天se天天cao天天干 | 蜜桃视频日本 | 97精品国自产拍在线观看 | 黄色软件在线观看免费 | 免费观看www小视频的软件 | 六月丁香激情综合色啪小说 | 国产手机视频精品 | 免费观看午夜视频 | 欧美精品被 | www.国产毛片| 永久免费看av | 99久久婷婷国产 | 免费看的黄色的网站 | 亚洲综合网站在线观看 | 天天爱天天操 | av免费网页| 国产精品手机在线观看 | 精品理论片 | 99中文字幕视频 | 亚洲区另类春色综合小说校园片 | 国产亚洲精品久久久久久网站 | 国产系列在线观看 | 超碰97国产 | 久久精品国产亚洲aⅴ | 国产视频色 | 99久久久久久国产精品 | 亚洲人av免费网站 | 婷婷五情天综123 | 黄色成人影院 | 久久人人插 | 九九综合九九综合 | 九九久久久久久久久激情 | 婷婷在线资源 | 久久综合色播五月 | 日韩二区三区在线 | 99国产一区二区三精品乱码 | 可以免费观看的av片 | 欧美无极色 | 九九久久国产精品 | 精油按摩av | 97色在线观看 | 激情偷乱人伦小说视频在线观看 | 欧美激情视频一二三区 | 国产在线观看,日本 | 91片黄在线观看 | 91三级视频| 天天色天天干天天 | 国产剧在线观看片 | 亚洲aⅴ久久精品 | 韩日精品视频 | 国产又粗又猛又黄又爽的视频 | 99r在线播放| 亚洲精品久久久久中文字幕m男 | 丁香五婷| 亚洲精品久 | 亚洲理论片| 99在线热播精品免费99热 | 97在线视频免费观看 | 依人成人综合网 | 天天躁天天躁天天躁婷 | 夜夜操网| 高清av免费看 | 国产精品黄色在线观看 | ww视频在线观看 | 精品免费久久久久久 | 欧美激情视频三区 | 91精品网站在线观看 | 国产91成人| 国产九九热视频 | 亚洲 中文 在线 精品 | 久久综合免费视频 | 99r精品视频在线观看 | 精品国产亚洲一区二区麻豆 |