色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F103ZE+VS1053的音樂播放器設(shè)計(jì)

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-30 09:18 ? 次閱讀

1.硬件平臺

CPUSTM32F103ZE

屏幕:3.5寸TFTLCD屏

音頻解碼器: VS1053

SD卡、外擴(kuò)Sram

2.示例效果

pYYBAGKTcFeAS3O2AAuN7nWhtsQ967.pngpYYBAGKTcGuAHGEHAAvR6F3OGGU869.png

3.音頻解碼VS1053簡介

VS1053b 是單片 Ogg Vorbis/MP3/AAC/WMA/MIDI 音頻解碼器,及 IMA ADPCM 編碼器和用戶加載的 OggVorbis 編碼器。
支持: MP3/WMA/OGG/WAV/FLAC/MIDI/AAC 等音頻格式的解碼,并支持: OGG/WAV 音頻格式的錄音,支持高低音調(diào)節(jié)設(shè)置, 功能十分強(qiáng)大。
它包含了一個(gè)高性能、有專利的低功耗 DSP 處理器內(nèi)核VS_DSP4、工作數(shù)據(jù)存儲器、供用戶應(yīng)用程序和任何固化解碼器一起運(yùn)行的 16 KiB 指令 RAM 及 0.5KiB 多的數(shù)據(jù) RAM、串行的控制和輸入數(shù)據(jù)接口、最多 8 個(gè)可用的通用 I/O 引腳、一個(gè) UART、并有一個(gè)優(yōu)質(zhì)的可變采樣率立體聲 ADC(“咪”、“線路”、“線路+咪”或“線路*2”) 和立體聲 DAC、和跟隨的一個(gè)耳機(jī)功放及一個(gè)公共電壓緩沖器。

特性:
●能解碼 MPEG 1 和 MPEG2 音頻 層 III( CBR+VBR+ABR); WMA 4.0/4.1/7/8/9 5-384kbps 所有流文件;WAV(PCM+IMA AD-PCM);產(chǎn)生 MIDI/SP-MIDI 文件。
●對話筒輸入或線路輸入的音頻信號進(jìn)行 IMA ADPCM 編碼
●支持 MP3 和 WAV 流
●高低音控制
●單時(shí)鐘操作 12..13MHz
●內(nèi)部 PLL 鎖相環(huán)時(shí)鐘倍頻器
●低功耗
●內(nèi)含高性能片上立體聲數(shù)模轉(zhuǎn)換器, 兩聲道間無相位差
●內(nèi)含能驅(qū)動(dòng) 30 歐負(fù)載的耳機(jī)驅(qū)動(dòng)器
模擬, 數(shù)字, I/O 單獨(dú)供電
●為用戶代碼和數(shù)據(jù)準(zhǔn)備的 5.5KB 片上 RAM
●串行的控制,數(shù)據(jù)接口
●可被用作微處理器的從機(jī)
●特殊應(yīng)用的 SPI Flash 引導(dǎo)
●供調(diào)試用途的 UART 接口
●新功能可以通過軟件和 4 GPIO 添加

3.1 硬件接口

pYYBAGKTcQSAZHIlAAcQVrtGJqQ310.png
引腳 GPIO 說明
VS_MISO PA6 主機(jī)輸入
VS_MOSI PA7 主機(jī)輸出
VS_SCK PA5 時(shí)鐘
VS_XCS PF7 命令片選(低電平有效)
VS_XDCS PF6 數(shù)據(jù)片選(低電平有效)
VS_DREQ PC13 數(shù)據(jù)請求線(高電平表示可以接收數(shù)據(jù))
VS_RST PE6 復(fù)位腳(低電平復(fù)位)

VS1053通訊方式為SPI實(shí)現(xiàn)數(shù)據(jù)傳輸,分為 SDI 和 SCI, SDI 用來傳輸數(shù)據(jù), SCI 用于傳輸命令。
SDI 數(shù)據(jù)傳輸非常簡單,就是標(biāo)準(zhǔn)的 SPI 通信,不過 VS1053 的數(shù)據(jù)傳輸都是通過 DREQ 控制到主機(jī)必須在
判斷 DREQ 有效(高電平有效)后,才可以發(fā)送數(shù)據(jù)。
SCI 命令傳輸接口包含了一個(gè)指令字節(jié)、一個(gè)地址字節(jié)和一個(gè) 16 位的數(shù)據(jù)字。讀寫操作可以讀寫單個(gè)寄存
器,在 SCK 的上升沿讀出數(shù)據(jù)位,所以主機(jī)必須在下降沿刷新數(shù)據(jù)。 SCI 的字節(jié)數(shù)據(jù)總是高位在前低位在后的。
第一個(gè)字節(jié)指令字節(jié),只有 2 個(gè)指令,也就是讀和寫,讀指令為:0X03,寫指令為:0X02

SCI讀操作:

pYYBAGKTdIqAVlsuAAEV8wgnAMk662.png

VS1053b 使用下列時(shí)序?qū)?a href="http://m.1cnz.cn/tags/寄存器/" target="_blank">寄存器進(jìn)行讀取操作,它顯示在圖 6 中。首先, XCS 信號線被拉到低電平來片選此設(shè)備。隨后,讀取操作碼(0x3)加上 8 位寬度的地址后,組成的 16 位字通過 SI 信號線發(fā)送到設(shè)備。在地址被讀取之后, SI 信號線上發(fā)送的任何數(shù)據(jù)都將被芯片忽略。而被確認(rèn)的地址中的十六位寬度數(shù)據(jù)將在 SO 信號線上移動(dòng)輸出。
XCS 信號應(yīng)該在數(shù)據(jù)移動(dòng)送出之后驅(qū)動(dòng)到高電平。
DREQ 在讀取操作期間會(huì)被芯片短暫的拉到低電平,這是非常短的時(shí)間,并不需要用戶特別的留意。

SCI寫操作:

poYBAGKTdK2AchqCAAEGJWlaTf4044.png

寫入 VS1053b 寄存器的操作要使用下列順序,它顯示在圖 7 中。 XCS 信號線先下拉到低電平表示選中該設(shè)備。將寫操作碼 (0x2) 加上 8 位的字地址通過 SI 信號線發(fā)送到 VS1053b。
在這個(gè)數(shù)據(jù)字移位發(fā)送的最后一個(gè)時(shí)鐘結(jié)束之后, XCS 應(yīng)該上拉到高電平來結(jié)束這個(gè)寫入順序。

VS1053寄存器列表

VS1053 總共有16 個(gè)SCI 寄存器, 通過這些寄存器實(shí)現(xiàn)對 VS1053 的各種控制, VS1053 的所有 SCI 寄存器。

poYBAGKTdXCAYHnEAAH9R9UOzkk977.png

3.2 VS1053驅(qū)動(dòng)

/**************硬件接口*****************
**VS_MISO -- PA6 主機(jī)輸入
**VS_MOSI -- PA7 主機(jī)輸出
**VS_SCK  -- PA5 時(shí)鐘
**VS_XCS  -- PF7 命令片選(低電平有效)
**VS_XDCS -- PF6 數(shù)據(jù)片選(低電平有效)
**VS_DREQ -- PC13 數(shù)據(jù)請求線(高電平表示可以接收數(shù)據(jù))
**VS_RST  -- PE6 復(fù)位腳(低電平復(fù)位)
**
*****************************************/

void VS1053_Init(void)
{
	/*1. 開時(shí)鐘*/
	RCC->APB2ENR|=1<<2;//PA
	RCC->APB2ENR|=1<<4;//PC
	RCC->APB2ENR|=1<<6;//PE
	RCC->APB2ENR|=1<<7;//PF
	GPIOA->CRL&=0x000FFFFF;
	GPIOA->CRL|=0x38300000;
	
	GPIOF->CRL&=0x00FFFFFF;
	GPIOF->CRL|=0x33000000;
	
	GPIOC->CRH&=0xFF0FFFFF;
	GPIOC->CRH|=0x00800000;
	
	GPIOE->CRL&=0xF0FFFFFF;
	GPIOE->CRL|=0x03000000;
	VS_XCS=1;
	VS_XDCS=1;
	VS1053_RST();
	VS1053_SetVoice(255,255);
	/*2.配置時(shí)鐘寄存器*/
	VS1053_WriteRegDat(VS1053_CLOCKF,0x9800);
}
/*SPI收發(fā)一個(gè)字節(jié)*/
u8 VS1053_SPI_ReadWriteData(u8 data_tx)
{
	u8 data_rx=0;
	u8 i=0;
	for(i=0;i<8;i++)
	{
		VS_SCK=0;
		if(data_tx&0x80)VS_MOSI=1;
		else VS_MOSI=0;
		VS_SCK=1;
		data_tx<<=1;
		
		data_rx<<=1;
		if(VS_MISO)data_rx|=0x01;
	}
	return data_rx;
}
/********************往寄存器中寫入數(shù)據(jù)******************
**
**形參:u8 addr --地址
**			u16 data  -- 寫入的數(shù)據(jù)
**********************************************************/
void VS1053_WriteRegDat(u8 addr,u16 data)
{
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑
	VS_XDCS=1;//數(shù)據(jù)片選拉高
	VS_XCS=0;//命令片選拉低
	VS1053_SPI_ReadWriteData(0x02);//寫指令
	VS1053_SPI_ReadWriteData(addr);	//寄存器地址
	VS1053_SPI_ReadWriteData(data>>8);
	VS1053_SPI_ReadWriteData(data>>0);//寫入數(shù)據(jù)
	VS_XCS=1;
}
/*******************從寄存器中讀取數(shù)據(jù)*******************/
u16 VS1053_ReadRegDat(u8 addr)
{
	u16 data=0;
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑
	VS_XDCS=1;//數(shù)據(jù)片選拉高
	VS_XCS=0;//命令片選拉低
	VS1053_SPI_ReadWriteData(0x03);//讀指令
	VS1053_SPI_ReadWriteData(addr);	//寄存器地址
	data=VS1053_SPI_ReadWriteData(0xff)<<8;
	data|=VS1053_SPI_ReadWriteData(0xff);
	VS_XCS=1;
	return data;
}
/****************音量調(diào)節(jié)*****************
**
**形參:u8 vol_l -- 左聲道 0~254
**      u8 vol_r -- 右聲道 0~254
**每個(gè)增量表示0.5db的衰減,值越大,音量越小
**注意:如果設(shè)置 VOL 的值為 0xFFFF,將使芯片進(jìn)入掉電模式。
**右聲道是高 8 位 左聲道是低 8 位
*******************************************/
void VS1053_SetVoice(u8 vol_l,u8 vol_r)
{
	u16 temp=vol_r<<8|vol_l;
	VS1053_WriteRegDat(VS1053_VOL,temp);
}
/***************VS1053硬件復(fù)位**************/
void VS1053_RST(void)
{
	//硬件復(fù)位
	VS_RST=0;
	Delay_Ms(20);
	VS_XDCS=1;//取消數(shù)據(jù)傳輸
	VS_XCS=1;//取消命令傳輸
	VS_RST=1;//完成復(fù)位
	//軟件復(fù)位
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑
	VS1053_WriteRegDat(VS1053_MODE,0x0804);//設(shè)置為新模式,進(jìn)行軟件復(fù)位
	Delay_Ms(2);	
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑,復(fù)位完成
}
/****獲取解碼時(shí)間******/
u16 VS1053_Get_Time(void)
{
	u16 time=0;
	time=VS1053_ReadRegDat(VS1053_DECODE_TIME);
	return time;
}
/****清除解碼時(shí)間******/
void VS1053_Clear_Time(void)
{
	VS1053_WriteRegDat(VS1053_DECODE_TIME,0);
}

3.3 播放音樂,歌詞同步,音樂切換

static unsigned char music_lrc[4096];//存放從文件中讀取出來的歌詞
static unsigned char music_lrc_str[100][50];//存放篩選過后的歌詞
static u16 music_time[200];//保存每句歌詞時(shí)間
u8 buff_music[4096];
/**************播放音樂****************************/
u8 VS1053_PlayOneMusic(const char *music_file,u8 display_lrc)
{
	u16 i=0,time1,time2;
	u32 k=0;
	u16 y=32;
   u8 vol_l=50,vol_r=50;
	FIL fp;
	FRESULT res;
	UINT br;
	u8 key=0;
	res=f_open(&fp,music_file,FA_READ);//只讀
	if(res!=FR_OK)
	{
		//printf("%s文件打開失敗err:%d\r\n",music_file,res);
		return 1;
	}
   //printf("VS1053復(fù)位成功\r\n");
	LCD_ShowStr2(0,16,(u8 *)music_file,WHITE);//顯示歌名
   LCD_Refresh();//更新顯示
	VS1053_Clear_Time();//清除解碼時(shí)間
   	/*3.設(shè)置音量*/
	VS1053_SetVoice(50,50);
	while(!f_eof(&fp))//判斷是否到文件尾
	{
		key=Key_Scan();
		if(key==1)
		{
			break;//切換下一首
		}
      else if(key==2)//聲音加
      {
         if(vol_l<250)
         {
            vol_l+=50;
            vol_r+=50;
         }
         VS1053_SetVoice(vol_l,vol_r);
      }
      else if(key==3)//聲音減
      {
         if(vol_l>0)
         {
            vol_l-=50;
            vol_r-=50;
         }
         VS1053_SetVoice(vol_l,vol_r);
      }
		if(f_read(&fp,buff_music,sizeof(buff_music),&br)!=FR_OK)//讀取音頻數(shù)據(jù)
		{
			//printf("讀取文件失敗");
			f_close(&fp);
			return 2;
		}
//		printf("讀取數(shù)據(jù)成功\r\n");
		for(i=0;i
=music_time[k])//通過時(shí)間判斷顯示對應(yīng)歌詞 { if(y>=(LCD_HIGHT-48))//換頁顯示歌詞 { y=32; LCD_ReflashBack();//重畫背景 LCD_ShowStr2(0,16,(u8 *)music_file,WHITE);//顯示歌名 } LCD_ShowStr2(y,16,music_lrc_str[k],WHITE);//顯示當(dāng)前行 if(k>=1 && y>=48) { LCD_ShowStr2(y-16,16,music_lrc_str[k-1],GRAY);//將上一行清為底色 } LCD_Refresh();//更新顯示 y+=16; k++; } } } } return 0; } ;i++)>

3.4 讀取音樂文件,查找歌詞,播放音樂

/***********音樂播放***************/
u8 Vs1053_play_Music(const char *music_file)
{
	u32 i=0;
	u8 stat=0;
	DIR dp;
	char *p=NULL;
	FILINFO fno;
	FRESULT res;
	char buff1[50];
	char buff2[50];
	res=f_opendir(&dp,music_file);
	if(res!=FR_OK)
	{
		printf("目錄打開失敗err:%d\r\n",res);
		return 1;
	}	
	printf("目錄打卡成功\r\n");
	while(1)
	{
		res=f_readdir(&dp,&fno);
		if(res!=FR_OK || fno.fname[0]==0)
		{
			break;
		}
//		printf("%s\r\n",fno.fname);
		p=strstr(fno.fname,".mp3");//查找文件中的音頻文件
		if(p)
		{
			i=0;
			//G.E.M. 鄧紫棋 - 我的秘密
			while(1)
			{
				buff1[i]=fno.fname[i];
				if((fno.fname[i]=='.') && (fno.fname[i+1]=='m') &&  (fno.fname[i+2]=='p') &&  (fno.fname[i+3]=='3'))break;
				i++;
			}
			buff1[i]='\0';
			//顯示歌名
			LCD_ReflashBack();//重畫背景
         LCD_Refresh();//更新顯示
			//printf("歌名:%s\r\n",buff1);
			snprintf((char *)buff2,sizeof(buff2),"%s/%s.lrc",music_file,buff1);
			//printf("buff2:%s\r\n",buff2);
			stat=Vs1053_GetLrc_Music(buff2);//歌詞解析
			//if(stat==0)printf("獲取歌詞成功\r\n");
			snprintf((char *)buff2,sizeof(buff2),"%s/%s.mp3",music_file,buff1);
			stat=VS1053_PlayOneMusic(buff2,!stat);//播放音樂
			if(stat==0)
			{
				printf("音樂播放完成\r\n");
			}
			else
			{
				printf("stat=%d\r\n",stat);
			}
		}
	}
	f_closedir(&dp);
	return 0;
}

3.5 初始化硬件,掛載SD卡設(shè)備,播放音樂

int main()
{
   FRESULT ret;
   FATFS fs;
	Beep_Init();
	Led_Init();
	Key_Init();
	Usartx_Init(USART1,115200,72);
	TIMx_Init(TIM2,72,20*1000);
	W25Q64_Init();//W25Q64初始化
	IIC_Init();//IIC初始化
	NT35310_Init();//LCD初始化
	SRAM_Init();
AA:
   /*掛載磁盤*/
   ret=f_mount(&fs,"",1);
   if(ret==FR_OK)
   {
      printf("磁盤掛載成功\n");
   }
   else 
   {
      printf("請檢查SD卡是否插入!!\r\n");
      Delay_Ms(1000);
      goto AA;
   }
   VS1053_Init();
	while(1)
	{
		Vs1053_play_Music("0:/music");
	}
}
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 播放器
    +關(guān)注

    關(guān)注

    5

    文章

    397

    瀏覽量

    37409
  • vs1053
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    12910
  • STM32F103ZE
    +關(guān)注

    關(guān)注

    2

    文章

    14

    瀏覽量

    10886
收藏 人收藏

    評論

    相關(guān)推薦

    串口接收數(shù)據(jù)實(shí)現(xiàn)VS1053解碼播放

    STM32F103VET6+VS1053,通過串口接收數(shù)據(jù),送給VS1053解碼播放播放時(shí)一直是滋滋滋的聲音,是什么問題
    發(fā)表于 02-21 15:10

    VS1053b不能播放音樂

    各位大佬,請求援助啊。。 最近在做一個(gè)MP3播放器,大概做法就是stm32f103vet6讀取SD卡中的音頻文件,然后在傳入VS1053b進(jìn)行解碼播放。我用FATfs文件系統(tǒng)讀取SD卡
    發(fā)表于 01-19 15:58

    VS1053播放出現(xiàn)雜音怎么改進(jìn)

    原子哥,是這樣子的。我仿照你們的音樂播放器例程寫了個(gè)程序,但是我是把音樂文件下載到W25Q128里面,然后沒有用FATS,而是直接從W25Q128里面讀取音樂文件發(fā)送到
    發(fā)表于 03-06 01:01

    VS1053STM32F103ZET6芯片的連接

    音樂播放實(shí)驗(yàn)還未深入研究,本章內(nèi)容不涉及。硬件連接:如下圖所示:VS1053STM32F103ZET6芯片的連接關(guān)系如下:1) VS_M
    發(fā)表于 08-12 06:21

    怎么實(shí)現(xiàn)基于STM32F4的音樂播放器的設(shè)計(jì)?

    怎么實(shí)現(xiàn)基于STM32F4的音樂播放器的設(shè)計(jì)?
    發(fā)表于 09-23 08:34

    怎樣去設(shè)計(jì)一種基于VS1053B-L解碼的MP3播放器

    VS1053B-L的特點(diǎn)有哪些?VS1003B-L的應(yīng)用有哪些?怎樣去設(shè)計(jì)一種基于VS1053B-L解碼的MP3播放器
    發(fā)表于 09-29 07:42

    基于STM32F103的MP3播放器完整項(xiàng)目源代碼

    基于STM32F103的MP3播放器完整項(xiàng)目源代碼
    發(fā)表于 12-29 17:22 ?195次下載

    STM32F103ZE最小系統(tǒng)原理圖

    STM32F103ZE最小系統(tǒng)原理圖
    發(fā)表于 09-20 11:07 ?196次下載
    <b class='flag-5'>STM32F103ZE</b>最小系統(tǒng)原理圖

    基于STM32F103VCT的嵌入式媒體播放器設(shè)計(jì)

    基于STM32F103VCT的嵌入式媒體播放器設(shè)計(jì)
    發(fā)表于 09-25 11:23 ?18次下載
    基于<b class='flag-5'>STM32F103</b>VCT的嵌入式媒體<b class='flag-5'>播放器</b>設(shè)計(jì)

    基于stm32f103ze的四軸飛控代碼

    基于stm32f103ze的四軸飛控代碼
    發(fā)表于 01-13 10:21 ?30次下載

    如何使用STM32F103RB芯片制作一個(gè)MP3播放器的詳細(xì)資料程序合集

    本文主要介紹了使用STM32F103RB芯片的32位閃存微控制為內(nèi)核制作一個(gè)MP3播放器,此芯片是基于ARMCortex-M3為內(nèi)核,具有強(qiáng)大的功能。該MP3播放器由上述的微控制
    發(fā)表于 08-17 08:00 ?66次下載

    基于STM32的錄音機(jī)設(shè)計(jì)(STM32F103+VS1053B)

    基于STM32的錄音機(jī)設(shè)計(jì)(STM32F103+VS1053B)
    發(fā)表于 11-23 18:06 ?120次下載
    基于<b class='flag-5'>STM32</b>的錄音機(jī)設(shè)計(jì)(<b class='flag-5'>STM32F103+VS1053</b>B)

    STM32F103使用TIM DMA DAC實(shí)現(xiàn)播放WAV音樂

    STM32F103使用TIM DAC DMA播放wave音樂
    發(fā)表于 11-24 14:51 ?28次下載
    <b class='flag-5'>STM32F103</b>使用TIM DMA DAC實(shí)現(xiàn)<b class='flag-5'>播放</b>WAV<b class='flag-5'>音樂</b>

    STM32F103ZE構(gòu)建固件庫模板

    STM32F103ZE構(gòu)建固件庫模板
    發(fā)表于 12-08 18:51 ?13次下載
    <b class='flag-5'>STM32F103ZE</b>構(gòu)建固件庫模板

    STM32 VS1053單首歌曲播放資料

    STM32 VS1053單首歌曲播放STM32初學(xué)者參考。
    發(fā)表于 12-30 10:43 ?4次下載
    主站蜘蛛池模板: 把极品白丝班长啪到腿软| 亚洲AV无码乱码A片无码蜜桃| 日本19禁啪啪吃奶大尺度| 伊人久久精品AV无码一区| 国产精品爽黄69天堂A片| 三级黄.色| 国产高清视频免费在线观看| 插骚妇好爽好骚| 欧美GAY猛男GAYA片18禁| 99热久久这里只精品国产WWW| 理论片午午伦夜理片2021| 这里只有精品在线视频| XXX欧美性兽交| 欧美性受xxxx狂喷水| 凹凸精品视频分类视频| 日本zljzljzlj精品| 俄罗斯美女z0z0z0在线| 色欲AV亚洲情无码AV蜜桃| 国产高清在线a视频大全| 息与子在线交尾中文字幕| 99视频在线观看视频| 欧美zzo交| 超碰在线视频| 无限资源日本2019版免费| 国产亚洲va在线电影| 亚洲日韩在线观看| 老鸭窝毛片| 操老太太的逼| 午夜想想爱午夜剧场| 精品国产原创在线观看视频| 神马伦理不卡午夜电影| 国产精品久久毛片A片软件爽爽| 午夜理论片日本中文在线| 国产自产视频在线观看香蕉| 伊人影院综合| 欧美性XXXXX极品娇小| 国产成人精品123区免费视频| 性VIDEOSTV另类极品| 伦理片 a在线线版韩国| 成人无码精品1区2区3区免费看| 幸福草电视剧演员表介绍 |