在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

FreeRTOS任務(wù)控制API函數(shù)介紹

安芯教育科技 ? 來(lái)源:極術(shù)社區(qū) ? 作者:朱工 ? 2021-03-19 10:19 ? 次閱讀

FreeRTOS任務(wù)控制API函數(shù)主要實(shí)現(xiàn)任務(wù)延時(shí)、任務(wù)掛起、解除任務(wù)掛起、任務(wù)優(yōu)先級(jí)獲取和設(shè)置等功能。

1. 相對(duì)延時(shí)

1.1 函數(shù)描述

void vTaskDelay( portTickTypexTicksToDelay ) 調(diào)用vTaskDelay()函數(shù)后,任務(wù)會(huì)進(jìn)入阻塞狀態(tài),持續(xù)時(shí)間由vTaskDelay()函數(shù)的參數(shù)xTicksToDelay指定,單位是系統(tǒng)節(jié)拍時(shí)鐘周期。常量portTICK_RATE_MS 用來(lái)輔助計(jì)算真實(shí)時(shí)間,此值是系統(tǒng)節(jié)拍時(shí)鐘中斷的周期,單位是毫秒。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskDelay 必須設(shè)置成1,此函數(shù)才能有效。

vTaskDelay()指定的延時(shí)時(shí)間是從調(diào)用vTaskDelay()后開始計(jì)算的相對(duì)時(shí)間。比如vTaskDelay(100),那么從調(diào)用vTaskDelay()后,任務(wù)進(jìn)入阻塞狀態(tài),經(jīng)過(guò)100個(gè)系統(tǒng)時(shí)鐘節(jié)拍周期,任務(wù)解除阻塞。因此,vTaskDelay()并不適用與周期性執(zhí)行任務(wù)的場(chǎng)合。此外,其它任務(wù)和中斷活動(dòng),會(huì)影響到vTaskDelay()的調(diào)用(比如調(diào)用前高優(yōu)先級(jí)任務(wù)搶占了當(dāng)前任務(wù)),因此會(huì)影響任務(wù)下一次執(zhí)行的時(shí)間。API函數(shù)vTaskDelayUntil()可用于固定頻率的延時(shí),它用來(lái)延時(shí)一個(gè)絕對(duì)時(shí)間。

1.2 參數(shù)描述

xTicksToDelay:延時(shí)時(shí)間總數(shù),單位是系統(tǒng)時(shí)鐘節(jié)拍周期。

1.3 用法舉例

voidvTaskFunction( void * pvParameters ) { /* 阻塞500ms. */ constportTickType xDelay = 500 / portTICK_RATE_MS; for( ;; ) { /* 每隔500ms觸發(fā)一次LED, 觸發(fā)后進(jìn)入阻塞狀態(tài) */ vToggleLED(); vTaskDelay( xDelay ); }}

2. 絕對(duì)延時(shí)

2.1 函數(shù)描述

void vTaskDelayUntil( TickType_t *pxPreviousWakeTime,const TickType_txTimeIncrement ); 任務(wù)延時(shí)一個(gè)指定的時(shí)間。周期性任務(wù)可以使用此函數(shù),以確保一個(gè)恒定的頻率執(zhí)行。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskDelayUntil 必須設(shè)置成1,此函數(shù)才有效。

這個(gè)函數(shù)不同于vTaskDelay()函數(shù)的一個(gè)重要之處在于:vTaskDelay()指定的延時(shí)時(shí)間是從調(diào)用vTaskDelay()之后(執(zhí)行完該函數(shù))開始算起的,但是vTaskDelayUntil()指定的延時(shí)時(shí)間是一個(gè)絕對(duì)時(shí)間。 調(diào)用vTaskDelay()函數(shù)后,任務(wù)會(huì)進(jìn)入阻塞狀態(tài),持續(xù)時(shí)間由vTaskDelay()函數(shù)的參數(shù)指定,單位是系統(tǒng)節(jié)拍時(shí)鐘周期。因此vTaskDelay()并不適用于周期性執(zhí)行任務(wù)的場(chǎng)合。因?yàn)檎{(diào)用vTaskDelay()到任務(wù)解除阻塞的時(shí)間不總是固定的并且該任務(wù)下一次調(diào)用vTaskDelay()函數(shù)的時(shí)間也不總是固定的(兩次執(zhí)行同一任務(wù)的時(shí)間間隔本身就不固定,中斷或高優(yōu)先級(jí)任務(wù)搶占也可能會(huì)改變每一次執(zhí)行時(shí)間)。

vTaskDelay()指定一個(gè)從調(diào)用vTaskDelay()函數(shù)后開始計(jì)時(shí),到任務(wù)解除阻塞為止的相對(duì)時(shí)間,而vTaskDelayUntil()指定一個(gè)絕對(duì)時(shí)間,每當(dāng)時(shí)間到達(dá),則解除任務(wù)阻塞。 應(yīng)當(dāng)指出的是,如果指定的喚醒時(shí)間已經(jīng)達(dá)到,vTaskDelayUntil()立刻返回(不會(huì)有阻塞)。因此,使用vTaskDelayUntil()周期性執(zhí)行的任務(wù),無(wú)論任何原因(比如,任務(wù)臨時(shí)進(jìn)入掛起狀態(tài))停止了周期性執(zhí)行,使得任務(wù)少運(yùn)行了一個(gè)或多個(gè)執(zhí)行周期,那么需要重新計(jì)算所需要的喚醒時(shí)間。這可以通過(guò)傳遞給函數(shù)的指針參數(shù)pxPreviousWake指向的值與當(dāng)前系統(tǒng)時(shí)鐘計(jì)數(shù)值比較來(lái)檢測(cè),在大多數(shù)情況下,這并不是必須的。 常量portTICK_RATE_MS 用來(lái)輔助計(jì)算真實(shí)時(shí)間,此值是系統(tǒng)節(jié)拍時(shí)鐘中斷的周期,單位是毫秒。 當(dāng)調(diào)用vTaskSuspendAll()函數(shù)掛起RTOS調(diào)度器時(shí),不可以使用此函數(shù)。

2.2 參數(shù)描述

pxPreviousWakeTime:指針,指向一個(gè)變量,該變量保存任務(wù)最后一次解除阻塞的時(shí)間。第一次使用前,該變量必須初始化為當(dāng)前時(shí)間。之后這個(gè)變量會(huì)在vTaskDelayUntil()函數(shù)內(nèi)自動(dòng)更新。 xTimeIncrement:周期循環(huán)時(shí)間。當(dāng)時(shí)間等于(*pxPreviousWakeTime + xTimeIncrement)時(shí),任務(wù)解除阻塞。如果不改變參數(shù)xTimeIncrement的值,調(diào)用該函數(shù)的任務(wù)會(huì)按照固定頻率執(zhí)行。

2.3 用法舉例

每10次系統(tǒng)節(jié)拍執(zhí)行一次

void vTaskFunction( void * pvParameters ) { static portTickType xLastWakeTime; const portTickType xFrequency = 10; // 使用當(dāng)前時(shí)間初始化變量xLastWakeTime xLastWakeTime = xTaskGetTickCount(); for( ;; ) { //等待下一個(gè)周期 vTaskDelayUntil( &xLastWakeTime,xFrequency ); // 需要周期性執(zhí)行代碼放在這里 } }

3. 獲取任務(wù)優(yōu)先級(jí)

3.1 函數(shù)描述

UBaseType_t uxTaskPriorityGet(TaskHandle_t xTask ); 獲取指定任務(wù)的優(yōu)先級(jí)。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskPriorityGet必須設(shè)置成1,此函數(shù)才有效。

3.2 參數(shù)描述

xTask:任務(wù)句柄。NULL表示獲取當(dāng)前任務(wù)的優(yōu)先級(jí)。

3.3 返回值

返回指定任務(wù)的優(yōu)先級(jí)。

3.4 用法舉例

voidvAFunction( void ) { xTaskHandlexHandle; // 創(chuàng)建任務(wù),保存任務(wù)句柄 xTaskCreate( vTaskCode, “NAME”,STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle ); // 。。.

// 使用句柄獲取創(chuàng)建的任務(wù)的優(yōu)先級(jí) if( uxTaskPriorityGet( xHandle ) !=tskIDLE_PRIORITY ) { // 任務(wù)可以改變自己的優(yōu)先級(jí) } // // 當(dāng)前任務(wù)優(yōu)先級(jí)比創(chuàng)建的任務(wù)優(yōu)先級(jí)高? if( uxTaskPriorityGet( xHandle ) 《uxTaskPriorityGet( NULL ) ) { // 當(dāng)前優(yōu)先級(jí)較高 } }

4. 設(shè)置任務(wù)優(yōu)先級(jí)

4.1 函數(shù)描述

void vTaskPrioritySet( TaskHandle_txTask,UBaseType_tuxNewPriority ); 設(shè)置指定任務(wù)的優(yōu)先級(jí)。如果設(shè)置的優(yōu)先級(jí)高于當(dāng)前運(yùn)行的任務(wù),在函數(shù)返回前會(huì)進(jìn)行一次上下文切換。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskPrioritySet 必須設(shè)置成1,此函數(shù)才有效。

4.2 參數(shù)描述

xTask:要設(shè)置優(yōu)先級(jí)任務(wù)的句柄,為NULL表示設(shè)置當(dāng)前運(yùn)行的任務(wù)。 uxNewPriority:要設(shè)置的新優(yōu)先級(jí)。

4.3 用法舉例

voidvAFunction( void ) { xTaskHandlexHandle; // 創(chuàng)建任務(wù),保存任務(wù)句柄。 xTaskCreate( vTaskCode, “NAME”,STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );

// // 使用句柄來(lái)提高創(chuàng)建任務(wù)的優(yōu)先級(jí) vTaskPrioritySet( xHandle,tskIDLE_PRIORITY + 1 ); // // 使用NULL參數(shù)來(lái)提高當(dāng)前任務(wù)的優(yōu)先級(jí),設(shè)置成和創(chuàng)建的任務(wù)相同。 vTaskPrioritySet( NULL, tskIDLE_PRIORITY +1 ); }

5. 任務(wù)掛起

5.1 函數(shù)描述

void vTaskSuspend( TaskHandle_txTaskToSuspend ); 掛起指定任務(wù)。被掛起的任務(wù)絕不會(huì)得到處理器時(shí)間,不管該任務(wù)具有什么優(yōu)先級(jí)。 調(diào)用vTaskSuspend函數(shù)是不會(huì)累計(jì)的:即使多次調(diào)用vTaskSuspend ()函數(shù)將一個(gè)任務(wù)掛起,也只需調(diào)用一次vTaskResume ()函數(shù)就能使掛起的任務(wù)解除掛起狀態(tài)。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskSuspend必須設(shè)置成1,此函數(shù)才有效。

5.2 參數(shù)描述

xTaskToSuspend:要掛起的任務(wù)句柄。為NULL表示掛起當(dāng)前任務(wù)。

5.3 用法舉例

voidvAFunction( void ) { xTaskHandlexHandle; // 創(chuàng)建任務(wù),保存任務(wù)句柄。 xTaskCreate( vTaskCode, “NAME”,STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle ); // // 使用句柄掛起創(chuàng)建的任務(wù)。 vTaskSuspend( xHandle ); // // 任務(wù)不再運(yùn)行,除非其它任務(wù)調(diào)用了vTaskResume(xHandle ) // // 掛起本任務(wù)。 vTaskSuspend( NULL ); // 除非另一個(gè)任務(wù)使用handle調(diào)用了vTaskResume,否則永遠(yuǎn)不會(huì)執(zhí)行到這里 }

6. 恢復(fù)掛起的任務(wù)

6.1 函數(shù)描述

void vTaskResume( TaskHandle_txTaskToResume ); 恢復(fù)掛起的任務(wù)。 通過(guò)調(diào)用一次或多次vTaskSuspend()掛起的任務(wù),可以調(diào)用一次vTaskResume ()函數(shù)來(lái)再次恢復(fù)運(yùn)行。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskSuspend必須置1,此函數(shù)才有效。

6.2 參數(shù)描述

xTaskToResume:要恢復(fù)運(yùn)行的任務(wù)句柄。

6.3 用法舉例

voidvAFunction( void ) { xTaskHandle xHandle; // 創(chuàng)建任務(wù),保存任務(wù)句柄 xTaskCreate( vTaskCode, “NAME”,STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle ); // // 使用句柄掛起創(chuàng)建的任務(wù) vTaskSuspend( xHandle ); // //任務(wù)不再運(yùn)行,除非其它任務(wù)調(diào)用了vTaskResume(xHandle ) // // 恢復(fù)掛起的任務(wù)。 vTaskResume( xHandle ); // 任務(wù)再一次得到處理器時(shí)間 // 任務(wù)優(yōu)先級(jí)與之前相同 }

7. 恢復(fù)掛起的任務(wù)(在中斷服務(wù)函數(shù)中使用)

7.1 函數(shù)描述

BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume );

用于恢復(fù)一個(gè)掛起的任務(wù),用在ISR中。 通過(guò)調(diào)用一次或多次vTaskSuspend()函數(shù)而掛起的任務(wù),只需調(diào)用一次xTaskResumeFromISR()函數(shù)即可恢復(fù)運(yùn)行。 xTaskResumeFromISR()不可用于任務(wù)和中斷間的同步,如果中斷恰巧在任務(wù)被掛起之前到達(dá),這就會(huì)導(dǎo)致一次中斷丟失(任務(wù)還沒(méi)有掛起,調(diào)用xTaskResumeFromISR()函數(shù)是沒(méi)有意義的,只能等下一次中斷)。這種情況下,可以使用信號(hào)量作為同步機(jī)制。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskSuspend 和 INCLUDE_xTaskResumeFromISR 必須設(shè)置成1,此函數(shù)才有效。

7.2 參數(shù)描述

xTaskToResume:要恢復(fù)運(yùn)行的任務(wù)句柄。

7.3 返回值

如果恢復(fù)任務(wù)后需要上下文切換返回pdTRUE,否則返回pdFALSE。由ISR確定是否需要上下文切換。

7.4 用法舉例

xTaskHandlexHandle; //注意這是一個(gè)全局變量 void vAFunction( void ){ // 創(chuàng)建任務(wù)并保存任務(wù)句柄 xTaskCreate( vTaskCode, “NAME”,STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle ); // 剩余代碼。 } void vTaskCode( void *pvParameters ){ for( ;; ) { // 在這里執(zhí)行一些其它功能 // 掛起自己 vTaskSuspend( NULL ); //直到ISR恢復(fù)它之前,任務(wù)會(huì)一直掛起 } }

void vAnExampleISR( void ){ portBASE_TYPExYieldRequired; // 恢復(fù)被掛起的任務(wù) xYieldRequired = xTaskResumeFromISR(xHandle ); if( xYieldRequired == pdTRUE ) { // 我們應(yīng)該進(jìn)行一次上下文切換 // 注: 如何做取決于你具體使用,可查看說(shuō)明文檔和例程 portYIELD_FROM_ISR(); } }

原文標(biāo)題:FreeRTOS系列第11篇---FreeRTOS任務(wù)控制

文章出處:【微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    836

    瀏覽量

    120547
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    485

    瀏覽量

    63423

原文標(biāo)題:FreeRTOS系列第11篇---FreeRTOS任務(wù)控制

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ZU+RFSoC之RFDC API介紹和使用

    RF Data Converters驅(qū)動(dòng)API是AMD Xilinx為RFSoC提供的一套軟件接口,用于控制Data Converters(RF-ADC和RF-DAC)的硬件功能。它作為用戶應(yīng)用程序
    的頭像 發(fā)表于 04-16 10:05 ?397次閱讀
    ZU+RFSoC之RFDC <b class='flag-5'>API</b><b class='flag-5'>介紹</b>和使用

    詳解RTOS中的Hook函數(shù)

    Hook函數(shù)是RTOS中的一個(gè)關(guān)鍵特性,通過(guò)該函數(shù),用戶可以增強(qiáng)對(duì)任務(wù)管理的控制,定義系統(tǒng)行為。
    的頭像 發(fā)表于 03-24 16:14 ?197次閱讀

    freertos最多支持多少個(gè)任務(wù)

    以下幾個(gè)因素: 系統(tǒng)資源 :FreeRTOS能夠支持的任務(wù)數(shù)量受到系統(tǒng)硬件資源的限制,特別是處理器的RAM大小和性能。RAM用于存儲(chǔ)任務(wù)控制塊(TCB)和
    的頭像 發(fā)表于 09-02 14:21 ?1802次閱讀

    freertos和rtos區(qū)別是什么

    。RTOS 的主要特點(diǎn)是實(shí)時(shí)性、多任務(wù)處理、資源管理、中斷處理等。 FreeRTOS 是一個(gè)開源的實(shí)時(shí)操作系統(tǒng),由英
    的頭像 發(fā)表于 09-02 14:18 ?2393次閱讀

    AG32 下使用 freeRTOS 的參考

    \\\\framework-agrv_freertos\\\\用戶使用時(shí),不必關(guān)注該源碼,只需關(guān)注 API 使用即可。 一、簡(jiǎn)單驗(yàn)證: 使用時(shí),從 VSCODE 中直接打開工程:\\\\AgRV_pio\\\\platforms
    發(fā)表于 05-28 13:34

    FreeRTOS中串口重定向使用HAL庫(kù)函數(shù)中斷出現(xiàn)異常的原因?

    由于需要使用到FreeRTOS 考慮到ISR優(yōu)先級(jí)會(huì)比任務(wù)優(yōu)先級(jí)高,并且查看HAL_UART_Transmit函數(shù)實(shí)現(xiàn)需要使用到systick 。 所以在重定義時(shí)使用了函數(shù)
    發(fā)表于 05-22 08:18

    請(qǐng)問(wèn)一下FREERTOS只能創(chuàng)建4個(gè)任務(wù),修改哪個(gè)宏定義可以增加創(chuàng)建任務(wù)的數(shù)量?

    請(qǐng)問(wèn)一下FREERTOS只能創(chuàng)建4個(gè)任務(wù),修改哪個(gè)宏定義可以增加創(chuàng)建任務(wù)的數(shù)量?解決方法:增加FREERTOS的堆。
    發(fā)表于 05-13 06:44

    淺析FreeRTOS任務(wù)調(diào)度器的三種調(diào)度算法和應(yīng)用

    FreeRTOS在MCU領(lǐng)域應(yīng)用非常廣泛,今天就給大家講解一下FreeRTOS調(diào)度器中的三種調(diào)度算法,以及在瑞薩RZ/T2L MPU中的應(yīng)用。
    的頭像 發(fā)表于 05-10 14:02 ?8579次閱讀
    淺析<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>調(diào)度器的三種調(diào)度算法和應(yīng)用

    stm32在freertos中如何接收串口數(shù)據(jù)?

    之前STM32一致裸跑,最近使用FREERTOS感覺(jué)還不錯(cuò)。最近想把UART 弄成一個(gè)API,這樣多個(gè)任務(wù)使用UART發(fā)送數(shù)據(jù)就不會(huì)亂碼了。 發(fā)送數(shù)據(jù)的API已經(jīng)寫好了。數(shù)據(jù)接受用中斷
    發(fā)表于 05-09 07:06

    求助,關(guān)于stm32f1使用freeRTOS和Fatfs時(shí)任務(wù)堆棧大小問(wèn)題求解

    哪位使用過(guò)freeRTOS和Fatfs時(shí),使用Fatfs系統(tǒng)的函數(shù)如f_open()等等時(shí),此任務(wù)的堆棧大小大致需要多大,當(dāng)前MAX_SS 定義為4096,我分配12K軟件都跑飛了,請(qǐng)哪位使用分享一下經(jīng)驗(yàn),謝謝!~~?
    發(fā)表于 05-09 06:50

    用的cube生成的freertos工程,串口和任務(wù)通過(guò)郵箱通訊,結(jié)果任務(wù)反應(yīng)很慢是怎么回事?

    初學(xué)freertos。用的cube生成的freertos工程,單片機(jī)型號(hào)位stm32f103vbt6。 建了三個(gè)人物,一個(gè)是串口任務(wù),一個(gè)是LED每秒翻轉(zhuǎn)一次,一個(gè)是空任務(wù)。 串口
    發(fā)表于 05-08 08:13

    freertos系統(tǒng)如何劃分任務(wù)

    正在看freertos方面的教程,想請(qǐng)教下如何劃分任務(wù)? 比如之前做的一個(gè)數(shù)據(jù)采集板,用到了單片機(jī)以下功能: 1,單片機(jī)通過(guò)SPI1和ADC芯片通訊,同時(shí)還要通過(guò)SPI控制ADC電路部分的其他外圍
    發(fā)表于 05-08 07:16

    freertos如何周期性的執(zhí)行一個(gè)任務(wù),比如200ms調(diào)用一次任務(wù), 用定時(shí)器發(fā)消息?

    freertos如何周期性的執(zhí)行一個(gè)任務(wù),比如200ms調(diào)用一次任務(wù), 用定時(shí)器發(fā)消息?有沒(méi)有一個(gè)函數(shù)能直接實(shí)現(xiàn)
    發(fā)表于 05-07 08:21

    關(guān)于FreeRTOS任務(wù)劃分及comsis_os函數(shù)使用的疑問(wèn)求解

    當(dāng)前任務(wù)掛起并喚醒下一個(gè)任務(wù)。比如在首頁(yè),接受到設(shè)置按鍵以后,就將當(dāng)前任務(wù)——首頁(yè)任務(wù)掛起,resume設(shè)置首頁(yè)任務(wù)。 請(qǐng)問(wèn)這樣劃分行嗎?
    發(fā)表于 05-07 07:49

    FreeRTOS系統(tǒng)使用xTaskCreate產(chǎn)生的任務(wù)與osThreadDef 產(chǎn)生的線程有什么不同?

    請(qǐng)教下是要 FreeRTOS系統(tǒng), 使用 xTaskCreate 產(chǎn)生的任務(wù) 與 osThreadDef產(chǎn)生的線程有什么不同?
    發(fā)表于 04-29 07:20
    主站蜘蛛池模板: 97超频国产在线公开免费视频 | 四虎国产一区二区三区 | asian极品呦女爱爱 | 亚洲 欧美 丝袜 制服 在线 | 天堂网www中文天堂在线 | 在线资源你懂的 | 四虎影院在线观看免费 | 国产精品1区2区3区在线播放 | 欧美一级特黄aa大片 | 国产18到20岁美女毛片 | 深夜视频免费在线观看 | 全部免费特黄特色大片视频 | 最色成人网 | 久久精品国产免费看久久精品 | 四虎影院免费在线 | 四虎在线永久 | 中国日韩欧美中文日韩欧美色 | 欧美tube44videos | 超级乱淫视频播放日韩 | 免费毛片网站 | 色播欧美 | 丁香婷婷成人 | 夜夜摸夜夜操 | 久草福利在线播放 | 国模私拍福利一区二区 | 欧美色图狠狠干 | 久青草免费视频手机在线观看 | 亚洲成色在线综合网站 | 五月婷婷激情综合网 | 色男人的天堂 | 色偷偷视频 | 欧美网色| 日日干夜夜操s8 | 欧美一级色 | 五月婷婷色网 | 永久免费看黄 | 五月花亚洲 | 国产成人一区二区在线不卡 | 青青导航| 免费理论片在线观看播放 | 免费又爽又黄的禁片1000部 |