亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dso.c

?? STM32手持式示波器源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************
* Copyright (C), 2010, www.armfly.com
*
* 【本例程在安富萊STM32F103ZE-EK開發板上調試通過             】
* 【QQ: 1295744630, 旺旺:armfly, Email: armfly@qq.com       】
*
* 文件名: dso.c
* 內容簡述: 本模塊完成示波器adc采樣方面的工作
*
* 文件歷史:
* 版本號  日期       作者    說明
* v0.1    2010-03-18 armfly  創建該文件
*
*/

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include <stdio.h>
#include <string.h>
#include "tft_lcd.h"
#include "systick.h"
#include "dso.h"
#include "button.h"
#include "BackLight.h"
#include "WaveMaker.h"

#define DSO_VER	"V0.6"		  /* 當前版本 */

/* 主程序狀態字 */
enum
{
	S_HELP		= 0,	/* 幫助頁面 */
	S_RUN		= 1,	/* 采集狀態 */
	S_HOLD		= 2		/* 暫停狀態 */
};

/* 時間分度表, g_DSO.TimeBaseId作為數組索引  */
const uint32_t g_TimeTable[] =
{
	20, 	50, 	100, 
	200,	500,	1000,
	2000,	5000,	10000,
	20000,	50000,	100000,
	200000,	500000,	1000000		
};

/* 衰減倍數表  
	g_DSO.Ch1Attenuation = 23
	幅度衰減因子:
	(1) 28 === 1V  (1:1)
*/
#define ATT_COUNT	6
const uint32_t g_AttTable[ATT_COUNT][2] =
{
	/* {除數,每大格電壓}  1:1 */
	{1400,	5000},
	{560,	2000},
	{280,	1000},
	{140,	500},
	{56,	200},
	{28,	100},
};

static void DsoHelp(uint8_t *pMainStatus);
static void DsoRun(uint8_t *pMainStatus);

/*
	安富萊STM32F103ZE-EK 口線分配:

	示波器通道1同時連接到CPU的PC0、PC2、PC3,這3個口線作為ADC輸入使用
		PC0 = ADC1_IN10
		PC2 = ADC2_IN12
		PC3 = ADC3_IN13

	示波器通道2只連接到CPU的PC1,這個口線作為ADC輸入使用
		PC1 = ADC2_IN12

	對于通道1的模擬信號,可以同時啟動3個ADC進行交錯采樣,理論上可以實現3Mbps采樣速率 
	(后來發現ADC2不能DMA操作,因此這句話還有待考究)

	通道2只能啟動1個ADC進行采樣。
	支持通道1和通道2進行同步采樣。
*/

DSO_T g_DSO;	/* 全局變量,是一個結構體 */

/*******************************************************************************
*	函數名: DsoMain
*	輸  入:	無
*	輸  出:	無
*	功能說明:DSO主程序,是一個循環體
*/
void DsoMain(void)
{
	uint8_t MainStatus = S_RUN;		/* 程序執行狀態 */

	InitWaveMaker();
//	SetupWaveType(WT_SIN);		/* 設置正弦波 */

	LCD_Init();		/* 顯示器初始化 */

	SetBackLight(BRIGHT_DEFAULT);  /* 設置背光亮度 */

	/* 進入主程序循環體 */
	while (1)
	{
		switch (MainStatus)
		{
			case S_HELP:
				DsoHelp(&MainStatus);		/* 顯示幫助 */
				break;

			case S_RUN:
				DsoRun(&MainStatus);		/* 全速采集,實時顯示 */
				break;

			default:
				break;
		}
	}
}

/*******************************************************************************
*	函數名: InitDSO
*	輸  入:	無
*	輸  出:	無
*	功能說明:對示波器通道1進行初始化配置。主要完成GPIO的配置、ADC的配置、
*		定時器的配置以及DMA的配置。
*/
static void InitDSO(void)
{
	/* 配置GPIO.  */
	{
		GPIO_InitTypeDef GPIO_InitStructure;

		/* 打開GPIO_C 和 AFIO 的時鐘 */
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC	| RCC_APB2Periph_AFIO, ENABLE);

		/* 配置PC0為模擬輸入模式 */
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_Init(GPIOC, &GPIO_InitStructure);
	}


	/* 配置DMA1_1 用于CH1 */
	#if 1
	{
		DMA_InitTypeDef DMA_InitStructure;

		/* Enable DMA1 clock */
		RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

		DMA_DeInit(DMA1_Channel1);		/* 復位DMA1寄存器到缺省狀態 */
		DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;	/* 選擇ADC1的數據寄存器作為源 */
		DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&g_DSO.Ch1Buf;	/* 目標地址 */
		DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;	/* 設置DMA傳輸方向,外設(ADC)作為源 */
		DMA_InitStructure.DMA_BufferSize = SAMPLE_COUNT;	/* 設置緩沖區大小 */
		DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;	/* 外設地址不自增 */
		DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;	/* 存儲器地址需要自增 */
		DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;	/* 選擇外設傳輸單位:16bit */
		DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;	/* 選擇內存傳輸單位:16bit */
		DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;	/* 無需循環模式   */
		DMA_InitStructure.DMA_Priority = DMA_Priority_High;	/* 選擇DMA優先級 */
		DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;	/* DMA傳輸類型,不是內存到內存 */
		DMA_Init(DMA1_Channel1, &DMA_InitStructure);

		/* Enable DMA1 channel1 */
		DMA_Cmd(DMA1_Channel1, ENABLE);
	}
	#endif

	/* 配置DMA2_5 用于CH2 */
	#if 1
	{
		DMA_InitTypeDef DMA_InitStructure;

		/* Enable DMA1 clock */
		RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);

		DMA_DeInit(DMA2_Channel5);		/* 復位DMA2寄存器到缺省狀態 */
		DMA_InitStructure.DMA_PeripheralBaseAddr = ADC3_DR_Address;	/* 選擇ADC3的數據寄存器作為源 */
		DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&g_DSO.Ch2Buf;	/* 目標地址 */
		DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;	/* 設置DMA傳輸方向,外設(ADC)作為源 */
		DMA_InitStructure.DMA_BufferSize = SAMPLE_COUNT;	/* 設置緩沖區大小 */
		DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;	/* 外設地址不自增 */
		DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;	/* 存儲器地址需要自增 */
		DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;	/* 選擇外設傳輸單位:16bit */
		DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;	/* 選擇內存傳輸單位:16bit */
		DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;	/* 無需循環模式   */
		DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;	/* 選擇DMA優先級 */
		DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;	/* DMA傳輸類型,不是內存到內存 */
		DMA_Init(DMA2_Channel5, &DMA_InitStructure);

		/* Enable DMA2 channel5 */
		DMA_Cmd(DMA2_Channel5, ENABLE);
	}
	#endif

	/* 配置ADC1  */
	
	 /* ADCCLK = PCLK2/2 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div2);     //ADCCLK = PCLK2/4 = 18MHz

	#if 1
	{
		ADC_InitTypeDef	ADC_InitStructure;

		RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

		ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
		ADC_InitStructure.ADC_ScanConvMode = DISABLE;
		ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;		/* 連續轉換靜止 */
		ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC3;	/* 選擇TIM1的CC3做觸發 */
		//ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;	/* 選擇TIM2的CC2做觸發 */

		ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	/* 數據右對齊,高位為0 */
		ADC_InitStructure.ADC_NbrOfChannel = 1;	/* 1個通道 */
		ADC_Init(ADC1, &ADC_InitStructure);

		/* ADC1 regular channels configuration */
		ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_1Cycles5);

		/* Enable ADC1 external trigger conversion */
		ADC_ExternalTrigConvCmd(ADC1, ENABLE);

		/* 使能 ADC1 */
		ADC_Cmd(ADC1, ENABLE);

		/* Enable ADC1 DMA */
		ADC_DMACmd(ADC1, ENABLE);

		/* 使能 ADC1 復位校準寄存器 */
		ADC_ResetCalibration(ADC1);
		/* 檢測復位校準寄存器 */
		while(ADC_GetResetCalibrationStatus(ADC1));

		/* 開始 ADC1 校準 */
		ADC_StartCalibration(ADC1);
		/* 等待校準結束 */
		while(ADC_GetCalibrationStatus(ADC1));
	}
	#endif

	/* 配置ADC3  */
	#if 1
	{
		ADC_InitTypeDef	ADC_InitStructure;

		RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);

		ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
		ADC_InitStructure.ADC_ScanConvMode = DISABLE;
		ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;		/* 連續轉換靜止 */
		//ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;	/* 選擇TIM1的CC1做觸發 */
		ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC3;	/* 選擇TIM2的CC2做觸發 */
		ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	/* 數據右對齊,高位為0 */
		ADC_InitStructure.ADC_NbrOfChannel = 1;	/* 1個通道 */
		ADC_Init(ADC3, &ADC_InitStructure);

		/* ADC1 regular channels configuration */
		ADC_RegularChannelConfig(ADC3, ADC_Channel_11, 1, ADC_SampleTime_1Cycles5);

		/* Enable ADC3 external trigger conversion */
		ADC_ExternalTrigConvCmd(ADC3, ENABLE);

		/* 使能 ADC3 */
		ADC_Cmd(ADC3, ENABLE);

		/* Enable ADC3 DMA */
		ADC_DMACmd(ADC3, ENABLE);

		/* 使能 ADC3 復位校準寄存器 */
		ADC_ResetCalibration(ADC3);
		/* 檢測復位校準寄存器 */
		while(ADC_GetResetCalibrationStatus(ADC3));

		/* 開始 ADC3 校準 */
		ADC_StartCalibration(ADC3);
		/* 等待校準結束 */
		while(ADC_GetCalibrationStatus(ADC3));
	}
	#endif

	/* 配置采樣觸發定時器,使用TIM1 CC1 */
	SetSampRate(g_DSO.SampleFreq);	/* 修改采樣頻率(啟動時100K) */
}

/*******************************************************************************
*	函數名: SetSampRate
*	輸  入:	freq : 采樣頻率 單位Hz
*	輸  出:
*	功  能:修改采樣頻率
*/
static void SetSampRate(uint32_t freq)
{
	/* 第4步: 配置定時器2第2通道CC2, CC2作為ADC1的觸發源 */
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	uint16_t Period;

	TIM_Cmd(TIM1, DISABLE);

//	g_DSO.SampleRate = freq;	/* 將采樣頻率保存到全部變量中 */

	/*
	采樣頻率計算公式 :
		period = 72000000 / freq ;
		
		1200 == 60KHz 采樣頻率
	*/
	Period = 72000000 / freq;		

	/* Enable TIM1 clock */
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

	TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
	TIM_TimeBaseStructure.TIM_Period = Period;          
	TIM_TimeBaseStructure.TIM_Prescaler = 0;   /* 計數頻率 = 72000 000 / 18 = 4000 000	 */
	TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;    
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
	TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

	/* TIM1 channel1 configuration in PWM mode */
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                
	TIM_OCInitStructure.TIM_Pulse = TIM_TimeBaseStructure.TIM_Period / 2; 
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;         
	TIM_OC3Init(TIM1, &TIM_OCInitStructure);

	/* TIM1 counter enable */
	TIM_Cmd(TIM1, ENABLE);

	/* TIM1 main Output Enable */
	TIM_CtrlPWMOutputs(TIM1, ENABLE);  
}

static void DispHelp1(void)
{
	uint16_t y;
	uint16_t LineCap;

	LCD_Clear(Blue);  			/* 清屏,背景藍色 */
	LCD_SetBackColor(Blue);		/* 設置文字背景顏色 */

	LCD_SetTextColor(White);	/* 設置文字顏色 */
	y = 0;
	LineCap = 18; /* 行間距 */
	LCD_DisplayString(20, y, "安富萊STM32F103ZE-EK開發板  www.armfly.com");
	y += LineCap;
	LCD_SetTextColor(Yellow);
	LCD_DisplayString(30, y, "QQ:1295744630     Email:armfly@qq.com");
	y += LineCap;

	y += LineCap;

	LCD_DisplayString(30, y, "操作提示:");
	y += LineCap;
	LCD_DisplayString(50, y, "TAMPER鍵 = 切換通道焦點。CH1或CH2");
	y += LineCap;
	LCD_DisplayString(50, y, "WAKEUP鍵 = 顯示幫助或退出幫助");
	y += LineCap;
	LCD_DisplayString(50, y, "USER  鍵 = 暫停或實時運行");
	y += LineCap;
	LCD_DisplayString(50, y, "搖桿上鍵 = 放大波形垂直幅度或向上移動");
	y += LineCap;
	LCD_DisplayString(50, y, "搖桿下鍵 = 縮小波形垂直幅度或向下移動");
	y += LineCap;
	LCD_DisplayString(50, y, "搖桿左鍵 = 水平展寬波形");
	y += LineCap;
	LCD_DisplayString(50, y, "搖桿右鍵 = 水平縮小波形");
	y += LineCap;
	LCD_DisplayString(50, y, "搖桿OK鍵 = 切換搖桿調節模式。幅度或位置");
	y += LineCap;
}

/*******************************************************************************
*	函數名: DsoHelp
*	輸  入:	無
*	輸  出:	無
*	功  能:顯示幫助
*/
static void DsoHelp(uint8_t *pMainStatus)
{
	uint8_t KeyCode;
	uint16_t bright;
	uint8_t fRefresh = 1;	/* LCD刷新標志 */
	uint8_t SubStatus = 0;

	bright = GetBackLight();	/* 讀取背光值 */
	while (*pMainStatus == S_HELP)
	{
		CPU_IDLE();

		if (fRefresh)
		{
			fRefresh = 0;

			if (SubStatus == 0)
			{
				DispHelp1();
			}
		}

		/* 讀取按鍵,大于0表示有鍵按下 */
		KeyCode = GetKey();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久av老司机精品网站导航| 亚洲国产欧美另类丝袜| 极品少妇xxxx精品少妇偷拍| 日韩欧美www| 精品在线亚洲视频| 久久综合久久综合亚洲| 成人美女视频在线观看| 亚洲美女淫视频| 欧美一区二区三区公司| 国内成+人亚洲+欧美+综合在线 | 亚洲成人午夜电影| 337p亚洲精品色噜噜噜| 国产乱子轮精品视频| ...xxx性欧美| 欧美一区二区三区在线看| 国产成+人+日韩+欧美+亚洲| 亚洲激情自拍视频| 日韩亚洲欧美一区二区三区| 波多野结衣在线一区| 日日摸夜夜添夜夜添亚洲女人| 精品国产一二三| 99久久精品情趣| 日韩中文字幕av电影| 国产日韩高清在线| 欧洲国内综合视频| 国产精品亚洲专一区二区三区 | 久久久久久久综合日本| 色婷婷亚洲综合| 激情五月播播久久久精品| 亚洲欧美日韩国产另类专区| 欧美第一区第二区| 色综合久久综合网欧美综合网| 美腿丝袜在线亚洲一区| 亚洲欧美日韩国产中文在线| 精品国产一区二区亚洲人成毛片| 91视频国产观看| 韩国女主播成人在线| 亚洲综合一区在线| 国产精品天美传媒沈樵| 日韩一区二区三区免费看| 91亚洲国产成人精品一区二区三| 美腿丝袜亚洲色图| 亚洲影院在线观看| 国产女主播一区| 日韩欧美国产一区二区在线播放 | 亚洲电影一级片| 中文字幕第一区| 精品成人一区二区| 欧美伦理电影网| 一道本成人在线| 成人黄色在线看| 国产一区二区女| 蜜臀va亚洲va欧美va天堂| 亚洲国产成人tv| 亚洲精品免费电影| 日韩一区日韩二区| 国产日产亚洲精品系列| 欧美大片顶级少妇| 欧美一区二区三区在线电影| 欧美日韩中文字幕一区| 91亚洲男人天堂| 91在线porny国产在线看| 粉嫩av一区二区三区| 国产一区二区三区久久久| 麻豆国产精品视频| 日本视频一区二区| 日韩成人伦理电影在线观看| 午夜精品久久久久久久久久久| 亚洲免费看黄网站| 亚洲欧美乱综合| 亚洲精品视频在线| 一区二区三区在线视频观看| 亚洲精品乱码久久久久久久久| 中文字幕在线观看不卡视频| 中文天堂在线一区| 国产精品久久久久婷婷| 最新久久zyz资源站| 1024国产精品| 亚洲一级电影视频| 亚洲高清免费视频| 婷婷国产在线综合| 日本怡春院一区二区| 麻豆91免费观看| 国产电影一区二区三区| 粉嫩一区二区三区性色av| 成人看片黄a免费看在线| av电影在线不卡| 欧洲精品一区二区三区在线观看| 欧美日韩在线观看一区二区| 69成人精品免费视频| 日韩一区二区三区免费看 | 欧美精品在线观看一区二区| 欧美精品电影在线播放| 日韩免费观看高清完整版在线观看| 日韩一区二区电影| 日本一区二区视频在线观看| 国产精品国产三级国产aⅴ中文| 亚洲码国产岛国毛片在线| 亚洲福利一二三区| 久久精品国内一区二区三区 | 成人小视频在线| 91久久人澡人人添人人爽欧美| 欧美性受xxxx| 日韩精品一区二区三区四区| 欧美激情一区二区在线| 亚洲在线观看免费视频| 极品美女销魂一区二区三区免费| a级高清视频欧美日韩| 欧美日韩国产影片| 久久亚洲春色中文字幕久久久| 国产精品久久久久久亚洲伦| 亚洲国产cao| 国产成人久久精品77777最新版本| 一本色道久久综合亚洲aⅴ蜜桃| 欧美一区二区在线不卡| 欧美国产日韩一二三区| 丝袜美腿亚洲色图| 成人精品视频网站| 日韩欧美在线观看一区二区三区| 国产欧美综合色| 日韩精品一级二级| 成人动漫一区二区在线| 欧美一区二区二区| 1024国产精品| 国产精品亚洲综合一区在线观看| 欧美午夜精品免费| 中文字幕成人av| 麻豆91精品91久久久的内涵| 欧美亚洲禁片免费| 国产精品视频看| 精品综合久久久久久8888| 在线观看视频一区| 亚洲欧洲av在线| 国产精品一区二区黑丝| 5月丁香婷婷综合| 亚洲欧美一区二区三区国产精品 | 精品国产区一区| 亚洲成人激情av| 99国产精品国产精品毛片| 欧美videofree性高清杂交| 一区二区激情视频| 成人免费观看视频| 久久久久久久久久看片| 日韩影院在线观看| 欧美日韩一区二区三区在线看| 国产精品美女久久久久高潮| 精品一区二区在线免费观看| 欧美日韩一区二区在线观看| 亚洲图片激情小说| 国v精品久久久网| 精品裸体舞一区二区三区| 三级一区在线视频先锋 | 色老头久久综合| 亚洲欧美综合另类在线卡通| 国产一区二区日韩精品| 久久综合av免费| 韩国精品免费视频| 精品国产电影一区二区| 免费成人在线观看视频| 日韩一级大片在线观看| 久久精品国产亚洲5555| 日韩一区二区视频在线观看| 免费三级欧美电影| 精品少妇一区二区三区在线播放| 天使萌一区二区三区免费观看| 欧美日韩国产一级二级| 午夜成人在线视频| 6080日韩午夜伦伦午夜伦| 日韩av不卡一区二区| 日韩一卡二卡三卡四卡| 精品一区二区三区视频| 欧美mv日韩mv亚洲| 国产尤物一区二区| 国产欧美精品一区| 91色.com| 午夜国产精品影院在线观看| 欧美一三区三区四区免费在线看| 日韩综合小视频| 日韩三级中文字幕| 韩国三级电影一区二区| 国产色婷婷亚洲99精品小说| 不卡视频一二三| 亚洲小说欧美激情另类| 欧美一级视频精品观看| 激情亚洲综合在线| 国产精品美女一区二区在线观看| av中文一区二区三区| 亚洲成精国产精品女| 日韩欧美你懂的| 成人h精品动漫一区二区三区| 亚洲三级电影全部在线观看高清| 欧美在线影院一区二区| 青草国产精品久久久久久| 久久久精品免费观看| 99久久777色| 美国十次了思思久久精品导航| 国产三级久久久| 欧美伊人久久久久久午夜久久久久| 天堂va蜜桃一区二区三区漫画版| 久久精品视频免费|