久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

從零開始給單片機移植QuarkTS:協(xié)作式調(diào)度內(nèi)核踩坑記錄

從零開始給單片機移植QuarkTS:協(xié)作式調(diào)度內(nèi)核踩坑記錄 幾個月前我被手上一臺 32 位單片機搞得焦頭爛額一個溫控儀功能并不復(fù)雜就是按鍵面板、一路溫度傳感器、一組繼電器輸出外加數(shù)碼管顯示。結(jié)果裸機主循環(huán)里塞滿了 debounce 標志、采樣定時標志、串口協(xié)議狀態(tài)機光全局標志就定義了十幾個。直到我認真試了 QuarkTS 這個輕型調(diào)度內(nèi)核才算是把單片機軟件從“一堆 if 的迷宮”里解放出來。這篇文章不是講 Kernel 源碼解析也不是官方文檔翻譯而是我自己從零開始、在一顆普通 MCU 上完成移植的完整記錄和踩坑總結(jié)。給單片機“移植操作系統(tǒng)”這個詞聽起來嚇人但實際上 QuarkTS 并不要求你去改內(nèi)核源碼它更強調(diào)“配置 接好兩個硬件依賴”。真正需要你親自動手的只有系統(tǒng) tick 源、臨界區(qū)保護再加上任務(wù)劃分。下面我把整個過程拆開講。1. 為什么我不建議一上來就上 FreeRTOSQuarkTS 的定位差別1.1 裸機主循環(huán)到了什么階段會撐不住我見過不少人的單片機項目是這樣一個套路主循環(huán)里寫一個巨大的 while(1)每隔 10ms 掃描一次按鍵每隔 50ms 刷新一次數(shù)碼管每隔 200ms 讀一次傳感器中間再穿插串口接收解析。最初功能少這種寫法沒什么問題一旦業(yè)務(wù)變多你會發(fā)現(xiàn)每個功能模塊都要“見縫插針”地擠進這個大循環(huán)修改一個地方的延時另一處的響應(yīng)時間就跟著漂。更難受的是中斷里攢了一堆事件標志主循環(huán)里到處查標志。查著查著代碼就變成一團毛線。這個階段你不是缺一個功能而是缺一套“如何組織多個并發(fā)業(yè)務(wù)”的框架。往小了說這是軟件結(jié)構(gòu)問題往大了說你需要一個能在小型 MCU 上跑起來的多任務(wù)環(huán)境。但這里有個陷阱多數(shù)人第一反應(yīng)是上實時操作系統(tǒng)比如搶占式調(diào)度的那一類。1.2 協(xié)作式調(diào)度與搶占式調(diào)度的一字之差QuarkTS 本身是協(xié)作式調(diào)度內(nèi)核和常見的搶占式 RTOS 有本質(zhì)區(qū)別。搶占式內(nèi)核會在任意時刻打斷一個任務(wù)切換給另一個高優(yōu)先級任務(wù)這需要完整的上下文切換、優(yōu)先級反轉(zhuǎn)保護、互斥量等機制。而協(xié)作式調(diào)度器依賴每個任務(wù)主動讓出 CPU內(nèi)核只負責(zé)維護“該輪到誰跑”不需要在任意位置保存和恢復(fù)寄存器現(xiàn)場所以代碼量和 RAM 占用都能壓得非常低。我用一個表把差別講清楚對比維度搶占式 RTOS協(xié)作式調(diào)度QuarkTS 這一類切換時機任何時刻由調(diào)度器決定任務(wù)主動讓出yield或等待事件上下文切換開銷較大需要保存完整寄存器組小執(zhí)行流相對可預(yù)測共享資源保護需要互斥量/信號量/禁中斷天然少很多競爭配合臨界區(qū)即可任務(wù)最長運行時間由時間片/優(yōu)先級約束靠任務(wù)自律一個任務(wù)死循環(huán)其余全卡適用 MCU中高端RAM 幾十 KB 以上小 RAM、定時器資源少、業(yè)務(wù)為事件驅(qū)動關(guān)鍵的“一字之差”就在這里搶占式靠強制協(xié)作式靠自覺。對大多數(shù)工業(yè)傳感器、小家電控制、儀器儀表這類項目來說業(yè)務(wù)天然是“輪詢 事件響應(yīng)”協(xié)作式不僅能滿足需求還省掉了大量同步機制。你不需要寫互斥鎖不需要擔(dān)心優(yōu)先級反轉(zhuǎn)寫代碼的心智負擔(dān)小很多。1.3 到底什么時候才算“從零開始移植”很多官方移植教程都假設(shè)你有一塊廠商的開發(fā)板直接用現(xiàn)成工程配置。而我這次說的“從零開始”是指你手頭只有一顆裸 MCU、一塊自繪 PCB沒有現(xiàn)成模板所有東西從芯片啟動文件開始搭。這種場景下QuarkTS 反而是很友好的選擇它不綁定某個特定內(nèi)核不要求你一定用 SysTick也不要求你有 RTOS 專用的 heap 管理只要你把 tick 和臨界區(qū)接好剩下的就是業(yè)務(wù)任務(wù)劃分。如果你的項目滿足下面幾條我覺得可以放心往下走任務(wù)數(shù)量在幾個到十幾個之間不需要復(fù)雜的優(yōu)先級搶占大部分工作是周期性輪詢或者等待事件后短時間處理RAM 資源緊張不希望在底層機制上耗掉太多空間你希望代碼易讀、易調(diào)試不想處理太多異步打斷。2. 硬件相關(guān)的只有兩條腿系統(tǒng) tick 與臨界區(qū)2.1 tick 是調(diào)度器的心跳但不是時間片在傳統(tǒng) RTOS 里tick 是時間片輪轉(zhuǎn)的基礎(chǔ)一個 tick 之后調(diào)度器可能強行切換任務(wù)。QuarkTS 的 tick 不是這個角色它主要用來驅(qū)動軟件定時器、超時判斷、時間戳等待。換句話說tick 是心跳負責(zé)“記時間”不是負責(zé)“搶 CPU”。這意味著 tick 周期選擇不用太激進。我見過有人為了“實時性”把 tick 設(shè)到 1kHz、甚至 10kHz結(jié)果任務(wù)都在等著讓出中斷卻把 CPU 消耗了大半。一般來說 1kHz1ms 一次已經(jīng)比較穩(wěn)如果你的業(yè)務(wù)對超時不敏感用 100Hz10ms也行。我的建議是先用 1kHz理由很簡單QuarkTS 里的事件等待、延時函數(shù)、軟件定時器大多以 tick 為單位1ms 粒度對大多數(shù)傳感交互足夠了而且 32 位 MCU 處理一次 tick 中斷的耗時通常在幾微秒以內(nèi)。2.2 SysTick 配置與重裝載值計算Cortex-M 內(nèi)核自帶 SysTick這是最省事的 tick 源。它本質(zhì)上是一個 24 位遞減計數(shù)器減到 0 時觸發(fā)中斷并自動重裝。配置的核心是算重裝載值重裝載值 SysTick 輸入時鐘頻率 / 目標 tick 頻率 - 1如果你用內(nèi)核時鐘做 SysTick 時鐘源假設(shè) MCU 主頻是 72MHz目標 1ms tick那么重裝載值 72_000_000 / 1_000 - 1 71999用 CMSIS 接口一句話就能完成初始化volatile uint32_t g_tick_count 0; void BSP_Tick_Init(void) { SysTick_Config(SystemCoreClock / 1000); /* 1ms 一次中斷 */ NVIC_SetPriority(SysTick_IRQn, 0xFF); /* 優(yōu)先級放到最低 */ }SysTick_Config 是標準 CMSIS 接口它會自動設(shè)置重裝載值并開中斷。SysTick 優(yōu)先級我建議給到最低原因后面“踩坑日志”里專門說。如果芯片沒有 SysTick那就隨便挑一個通用定時器的更新中斷用同樣的思路配置溢出周期 1ms中斷里做同一件事。2.3 臨界區(qū)調(diào)度器對中斷的“短暫禁令”臨界區(qū)用于保護共享數(shù)據(jù)。當(dāng)任務(wù)正在修改一個結(jié)構(gòu)體、一個變量時突然來了中斷中斷里又改了同樣的數(shù)據(jù)那么任務(wù)恢復(fù)后拿到的數(shù)據(jù)可能是半新半舊的。QuarkTS 在操作系統(tǒng)內(nèi)部會用臨界區(qū)保護自己的任務(wù)鏈表你寫業(yè)務(wù)代碼時凡是涉及任務(wù)與中斷共享的變量也應(yīng)該自己加臨界區(qū)。Cortex-M 上最簡單可靠的臨界區(qū)就是開關(guān)全局中斷#define ENTER_CRITICAL() __disable_irq() #define EXIT_CRITICAL() __enable_irq()__disable_irq 實際操作的是 PRIMASK 寄存器也就是把除 NMI 和 Fault 之外的所有中斷都屏蔽掉。它執(zhí)行時間極短對實時性影響很小。關(guān)鍵是臨界區(qū)代碼必須短不要在里面做延時、打印、或者等待外設(shè)。臨界區(qū)是給“改一個變量、插入一個節(jié)點”這種微操作用的不是給你跑業(yè)務(wù)邏輯用的。至于 QuarkTS 自身怎么調(diào)用臨界區(qū)不同小版本的宏名可能不同。你下載源碼后在配置頭文件里都會找到類似“臨界區(qū)實現(xiàn)方式”的地方把我上面這兩個宏填進去即可。如果你用的 MCU 不是 Cortex-M比如是老 8 位單片機那就用它的全局中斷開關(guān)匯編指令原理完全一樣。3. 按需裁剪讓內(nèi)核為這臺單片機“瘦身”3.1 配置頭文件要回答的三個問題拿到 QuarkTS 源碼后別急著往工程里拖先打開配置頭文件。它就像一張問卷問你這臺單片機準備承擔(dān)多少業(yè)務(wù)。核心問題大概有三個最多同時存在多少個任務(wù)這里說的是“已創(chuàng)建的任務(wù)”不是“可能運行的任務(wù)”按峰值算。需要用多少個軟件定時器、消息隊列、事件標志這些資源每種都要預(yù)先分配內(nèi)存寧少勿多。要不要開啟某些高級特性比如粘性調(diào)度、任務(wù)狀態(tài)機輔助等用不上就關(guān)閉。我自己的習(xí)慣是先把業(yè)務(wù)盤一遍。比如一個溫控項目用到的任務(wù)可能就是按鍵掃描、LED 刷新、傳感器采集、控制運算、串口協(xié)議處理一共五六個。軟件定時器可能要用一兩個做超時看門。消息隊列一個放傳感器數(shù)據(jù)。事件標志兩三個做喚醒。那就按這個量配置不要一上來拷貝一個大工程的全功能配置否則一個 32KB RAM 的芯片很容易被各種池子吃掉一大半。3.2 任務(wù)棧給每個任務(wù)劃一塊“私有內(nèi)存”協(xié)作式調(diào)度下任務(wù)函數(shù)本質(zhì)是普通函數(shù)的持續(xù)調(diào)用過程函數(shù)里的局部變量、函數(shù)調(diào)用鏈上的臨時量都放在棧上。QuarkTS 要求你為每個任務(wù)準備一段獨立的??臻g典型做法是靜態(tài)數(shù)組#define TASK_STACK_SIZE 256 /* 單位word */ static uint32_t task_led_stack[TASK_STACK_SIZE]; static uint32_t task_key_stack[TASK_STACK_SIZE];這里的 256 是“字”不是“字節(jié)”。在 32 位 MCU 上256 字等于 1KB RAM 空間。為什么不用動態(tài)分配嵌入式系統(tǒng)動態(tài)分配容易產(chǎn)生碎片也增加不確定性靜態(tài)數(shù)組簡單、可預(yù)測、還能在調(diào)試器里直接查看。如果你手頭 RAM 緊張可以精簡任務(wù)里的局部變量然后逐步下降棧大小直到逼近臨界值。注意如果任務(wù)里調(diào)用了 printf、浮點格式化這類工具棧需求會猛漲單這種調(diào)用就可能吃掉幾百字節(jié)。所以我一般在協(xié)議解析任務(wù)里禁止浮點格式化寧可手動轉(zhuǎn)字符串。關(guān)于棧大小是否夠我強烈建議做一個“填坑測試”在創(chuàng)建任務(wù)前用特定填充字節(jié)比如 0xAA把整塊任務(wù)棧刷一遍運行一段時間后檢查棧尾還剩多少 0xAA 沒被覆蓋。這個技巧簡單但極其有用能直觀告訴你每個任務(wù)真實峰值棧用量是多少。3.3 裁剪后如何驗證 ROM 和 RAM 預(yù)算配置完編譯一次編譯器會輸出 code 和 data 的占用統(tǒng)計。以我那個項目為例QuarkTS 內(nèi)核自身 ROM 開銷大概在幾 KB 量級RAM 開銷大頭是你給任務(wù)、隊列、定時器分配的靜態(tài)數(shù)組而不是內(nèi)核本身。如果你發(fā)現(xiàn)靜態(tài)數(shù)據(jù)比預(yù)期大很多別急著懷疑內(nèi)核回去看自己是不是任務(wù)棧開得太大、消息池塞了太多條。我見過有人把每個任務(wù)棧都開了 4KB美其名曰“保險”結(jié)果一個本來 16KB RAM 的芯片直接爆掉。正確的姿勢是先按業(yè)務(wù)估算一個保守值跑起來之后用前面說的填充法實測再反復(fù)壓縮到安全邊界以內(nèi)。嵌入式開發(fā)里“內(nèi)存是擠出來的”一點都不夸張。4. 第一個任務(wù)跑起來從 main 到調(diào)度循環(huán)的完整骨架4.1 main 函數(shù)的初始化順序任務(wù)棧、內(nèi)核配置都準備好以后main 函數(shù)里的順序就成了關(guān)鍵。我的模板大致是這樣#include quarkts.h #include bsp.h /* 任務(wù)函數(shù)聲明 */ static void Task_Led(void *arg); static void Task_Key(void *arg); /* 任務(wù)棧 */ static uint32_t stack_led[128]; static uint32_t stack_key[256]; int main(void) { BSP_Init(); /* 時鐘、GPIO、串口等基礎(chǔ)外設(shè) */ /* 1. 內(nèi)核初始化接口具體以你的版本頭文件為準 */ QK_Init(); /* 2. 創(chuàng)建任務(wù) */ QK_TaskCreate(Task_Led, QK_PRIO_LOW, stack_led, sizeof(stack_led), NULL); QK_TaskCreate(Task_Key, QK_PRIO_HIGH, stack_key, sizeof(stack_key), NULL); /* 3. 啟動調(diào)度器。啟動后 main 通常不再返回 */ QK_SchedulerStart(); while (1) { /* 如果調(diào)度器返回說明配置有問題 */ } }一句話說明先初始化底層外設(shè)再初始化內(nèi)核然后創(chuàng)建任務(wù)最后啟動調(diào)度。順序不要反。如果你在內(nèi)核初始化之前就去調(diào)用延時有系統(tǒng)函數(shù)或者在外設(shè)還沒跑起來前就創(chuàng)建依賴該外設(shè)的任務(wù)大概率會遇到奇怪的初始化失敗。另外調(diào)度器一旦啟動main 函數(shù)就被“接管”了后面不要再想著返回編譯器和調(diào)試器都不喜歡這個假設(shè)。4.2 任務(wù)函數(shù)的生命周期與“永不返回”原則剛才代碼里任務(wù)函數(shù) Task_Led 和 Task_Key 都是我自己寫的。它們的簽名類似普通 C 函數(shù)都有一個 void* 參數(shù)但行為上有幾條硬性規(guī)則任務(wù)函數(shù)應(yīng)當(dāng)在 for(;;) 里無限循環(huán)不要在末尾 return循環(huán)體內(nèi)不能長時間占用 CPU要主動讓出或者等待事件一個任務(wù)的任務(wù)函數(shù)入口會被調(diào)用一旦函數(shù)退出這個任務(wù)就徹底結(jié)束了這種情況要視為異常。協(xié)作式調(diào)度下任務(wù)函數(shù)就像合租室友里的一群人每個人用完廁所要主動出來否則其他人永遠等不到。你在任務(wù)里寫 while(1) 等待一個外部電平變化卻不主動讓出那等價于把整個系統(tǒng)都暫停了。4.3 一個 LED 閃爍 按鍵輪詢的最小例子下面給一個最小但完整的例子你可以直接抄到自己的工程里改一改static void Task_Led(void *arg) { (void)arg; for (;;) { LED_Toggle(); QK_DelayMs(500); /* 固定延時 500ms內(nèi)部會主動讓出 */ } } static void Task_Key(void *arg) { (void)arg; for (;;) { if (Key_Scan() KEY_PRESSED) { Buzzer_On(); } else { Buzzer_Off(); } QK_Yield(); /* 主動讓出 CPU */ } }注意看 Task_Led 里的 QK_DelayMs它不是裸機里的 delay 空循環(huán)而是在等待超時期間把 CPU 讓給其他任務(wù)這正是協(xié)作式調(diào)度的魅力。Task_Key 每輪掃描一次后主動讓出好讓 LED 任務(wù)有執(zhí)行機會。兩個任務(wù)就這么互相配合誰也不把 CPU 獨吞。接口名仍然以你下載版本的發(fā)布頭文件為準但邏輯結(jié)構(gòu)就是這樣。4.4 第一個任務(wù)的驗證方法跑起來之后第一件事不是寫一堆日志而是先在調(diào)試器里看兩個任務(wù)棧指針是否正常推進、調(diào)度器切了沒有。我的土辦法是在兩個任務(wù)里各翻轉(zhuǎn)一個 GPIO然后用示波器觀察波形如果 LED 任務(wù)里的 GPIO 以 500ms 周期翻轉(zhuǎn)說明延時任務(wù)工作正常按鍵任務(wù)里的 GPIO 高頻翻轉(zhuǎn)說明任務(wù)循環(huán)沒有被卡死兩個波形互不阻塞說明調(diào)度器切換成功。這個方法比 printf 可靠因為 printf 本身可能拖慢任務(wù)、引入不可預(yù)期的時序。等波形穩(wěn)定了再考慮串口日志輸出。5. 任務(wù)不是各干各的事件標志和輕量隊列怎么用5.1 事件標志解決“等條件”而不是“查條件”裸機里判斷條件最常見的寫法是全局標志位比如if (adc_done_flag key_pressed_flag) { ... }任務(wù)少的時候行得通任務(wù)一多你就要考慮“誰在等這個條件”“條件滿足后該醒誰”。QuarkTS 這類內(nèi)核通常給你事件標志任務(wù)可以阻塞在某些位上等內(nèi)核來通知。事件標志適合表達“某個事件發(fā)生了”這種邏輯比如傳感器轉(zhuǎn)換完成定時時間到串口收到完整一幀按鍵按下。用事件標志之后任務(wù)不再反復(fù)輪詢而是“睡”在一個或多個位上條件滿足后內(nèi)核會自動把它喚醒。多人合租的場景里這就是“別人告訴你水開了”而不是“你一直盯著水壺”。代碼語義更清楚CPU 利用率也更高。5.2 輕量隊列傳遞數(shù)據(jù)事件標志只能表達“事情發(fā)生了”表達不了“發(fā)生了的具體內(nèi)容”。比如溫控項目里一個任務(wù)負責(zé)采樣 ADC另一個任務(wù)負責(zé)控溫采樣值從哪傳過去共享變量是一種方案但交叉訪問容易出問題更好的方案是輕量消息隊列。生產(chǎn)者任務(wù)把 ADC 結(jié)果塞進隊列消費任務(wù)等待隊列非空后取走/* 配置頭文件里預(yù)留消息隊列并指定一條隊列尺寸 */ static void Task_Collect(void *arg) { for (;;) { uint16_t raw ADC_GetValue(); QK_QueueSend(adc_queue, raw, sizeof(raw)); QK_DelayMs(10); } } static void Task_Control(void *arg) { for (;;) { uint16_t raw; if (QK_QueueReceive(adc_queue, raw, QK_WAIT_FOREVER) QK_OK) { /* 根據(jù) raw 計算 PWM 輸出 */ Control_Temperature(raw); } } }隊列的好處是解耦生產(chǎn)者和消費者各自按自己的節(jié)奏工作中間多出的數(shù)據(jù)由隊列緩沖。隊列深度別開太大我是根據(jù)生產(chǎn)周期和消費速度算的。比如生產(chǎn)任務(wù)每 10ms 發(fā)一條消費任務(wù)處理一條要 30ms那么隊列至少要有三條左右的緩沖我一般再留 50% 余量開五條既安全又不浪費 RAM。5.3 軟件定時器的合理姿勢QuarkTS 一般還提供軟件定時器這跟硬件定時器是兩碼事它適合“固定時間到了要做什么”的場景。比如設(shè)備需要每隔 2 秒做一次自檢用軟件定時器比在任務(wù)里延時更清晰。但要注意回調(diào)函數(shù)里不要做耗時操作否則同樣會拖住調(diào)度器。我的習(xí)慣是定時器回調(diào)里只置事件標志真正的檢查邏輯放到對應(yīng)任務(wù)里去執(zhí)行保證“通知”和“干活”分開。6. 我在實際移植過程中踩過的五個坑6.1 坑一tick 中斷優(yōu)先級設(shè)得比臨界區(qū)還高最早我圖省事把 SysTick 優(yōu)先級設(shè)得很高想著“時間最重要”。結(jié)果很詭異任務(wù)切來切去偶爾死機而且不是必現(xiàn)。找了一下午發(fā)現(xiàn)原因系統(tǒng)臨界區(qū)關(guān)閉全局中斷后高優(yōu)先級 SysTick 依然可以打入而 tick 處理函數(shù)里又試圖修改內(nèi)核的任務(wù)鏈表。臨界區(qū)想保護的正是這份鏈表的一致性結(jié)果反被打斷鏈表改到一半被改第二次系統(tǒng)當(dāng)然崩潰。解決的規(guī)范做法是把 SysTick 優(yōu)先級設(shè)到最低同時保證 ISR 里不調(diào)用任何內(nèi)核操作接口只做最輕量的計時通知。如果你必須在高優(yōu)先級中斷里發(fā)數(shù)據(jù)也不要直接操作隊列而是先放到一個 volatile 標記里由普通任務(wù)去“消費”。6.2 坑二在協(xié)作任務(wù)里用裸機 delay 磨時間新上手最容易犯的錯就是把原來裸機里的軟件延時函數(shù)原封不動搬進任務(wù)for (i 0; i 10000; i); /* 這就是個炸彈 */在裸機里這行代碼只是讓主循環(huán)慢一點在協(xié)作式調(diào)度器里它會讓整個系統(tǒng)凍結(jié)到這個循環(huán)結(jié)束。因為協(xié)作式調(diào)度靠任務(wù)主動讓出你一個空循環(huán)占住 CPU其他任務(wù)包括 tick 處理函數(shù)之外的業(yè)務(wù)全都等著。正確做法是把延時換成 QuarkTS 提供的延時等待接口或者干脆把“等待一段時間”設(shè)計成事件/定時器觸發(fā)而不是死等。6.3 坑三棧溢出表現(xiàn)為各種“不可能”某天我發(fā)現(xiàn)一個任務(wù)運行一會兒后另一個毫不相干的變量被改成了 0x00就像鬧鬼。調(diào)試器看變量值變了看代碼路徑又完全沒寫過這個變量。最后排查無果試著把疑似任務(wù)棧擴大一倍現(xiàn)象消失。這就是棧溢出的典型表現(xiàn)任務(wù)棧不夠用函數(shù)局部變量壓棧時越界把相鄰的全局變量或另一個任務(wù)的棧踩掉了。從此以后我給自己定了一條規(guī)矩每個任務(wù)第一次跑通之后都要做“填坑測試”。初始化時把任務(wù)棧全部填成 0xAA正常運行幾小時后檢查棧尾字節(jié)是否還是 0xAA如果變了說明這任務(wù)運行過一段較深的調(diào)用鏈棧不夠。這個辦法雖然土但在小內(nèi)存 MCU 上是真能救命。6.4 坑四編譯器優(yōu)化改變了共享變量的行為早期我有個共享變量從中斷里更新主任務(wù)里普通讀取。開調(diào)試模式正常一開 Level 2 優(yōu)化任務(wù)那邊看到的數(shù)據(jù)就明顯“滯后”。原因很簡單編譯器認為那個變量在任務(wù)循環(huán)里沒人改就把讀取操作優(yōu)化成只從寄存器拿值了。中斷雖然改了內(nèi)存里的值任務(wù)這邊卻還在用緩存的舊值。解決方式就兩個字volatile。凡是中斷和任務(wù)共享的變量一律用 volatile 修飾或者干脆通過隊列/事件標志傳遞讓編譯器別做過度優(yōu)化。還有一個小技巧別指望“把優(yōu)化等級降低”就當(dāng)修復(fù)了那只代表你掩蓋了代碼里的數(shù)據(jù)依賴問題。6.5 坑五分不清“阻塞等待”與“讓出 CPU”事件標志等待、隊列接收這類操作內(nèi)部一般是阻塞等待也就是任務(wù)會被掛起讓出 CPU直到事件到達。這是好的。但如果我在一個任務(wù)里寫了這樣的代碼while (GPIO_ReadPin(PORT, PIN) HIGH) { /* 等待某個外部信號拉低 */ }這就變成了“死磕”外部信號不來這個任務(wù)永遠占用 CPU其他任務(wù)全部停工。這不是內(nèi)核的問題是協(xié)作式開發(fā)的紀律問題。凡是等待外部事件都要通過事件標志、隊列或者延時輪詢來讓出 CPU絕不能用一個不加讓出的 while 循環(huán)直接等。我的心得是寫任務(wù)函數(shù)之前先在紙上把每個任務(wù)畫成“事件流”。任務(wù)醒來、干活、讓出、等什么、醒來之后干什么一步步畫清楚再寫代碼坑就能避掉一大半。QuarkTS 不是萬能的調(diào)度器它要求開發(fā)人員有清晰的協(xié)作意識但一旦適應(yīng)了這套事件驅(qū)動的寫法開發(fā)效率真的比在裸機里放大一堆標志高太多了。如果你也在考慮把某個小項目往 QuarkTS 上遷建議先從最精簡的配置開始一個 LED 任務(wù)、一個按鍵任務(wù)、一個串口任務(wù)跑通之后再逐步加隊列、軟件定時器。第一版別追求功能齊全先把“讓出 CPU”和“事件驅(qū)動”的感覺找到后面就順了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲少妇免费视频\| 久草五月| 亚洲同性aV综合| 大鸡吧尹人在线| 国产精品亚洲无码| 亚91网| 黄页大片在线观看| 欧美性爱十八禁| 一级人妻性爱视频| 欧美草草高清日韩视频| 91美女中出| 九九热精品| 亚洲精品尤物yw在线影院| 色香伊人| 欧美中文字幕男人天堂久久精品| 国产一级不卡在线观看| 图片区小说区| 一级成人性爱| 91天堂视频| 91人妻Pr| 国产成年免费大片黄在线观看| 女优免费一区二区永久| 午夜精品久久久久久久99热影院| 久久99网站| 精品国产一区二区三区香蕉欧美| 精品日韩| 大香蕉欧美| 国产中午字一暮区| 97色综合中文网| 亚洲熟女少妇免费视频| 日本人妻中文字幕| 人妻精品一区二区三区| 一区二区三区机械有限公司| 玖玖无码超碰| 国内精品不卡无毒99999| 操国产高清| 伊人久久88国产女| 精品一区99999| 国产操伦| a人欧美综合天堂麻豆| 亚洲AV资源| 欧美精品成人一区二区在线观看| 加勒比综合九九99视频在线播放| 尤物av网站| α√在线| 大粗鳼巴久久久久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 久草免费福利在线播放| 欧美瑟综合| 国产激情久久| 超碰精品日韩欧美国产| 日韩无码黄色片| 国产精品午夜精品| 无码免费在线观看黄色片| 欧美日韩在线小说| 国产精品爆乳懂色蜜乳| 婷婷亚洲五月***久久| 久草成人影片| 国产农村妇女精品1区二区| 亚洲日韩美女中文字幕乱| 欧洲特黄毛片免费看欧洲毛片| 情趣丝袜无码操逼视频| 日本一片一区| h无码动漫在线观看| 精品久操| 丝袜熟女2P| 五月色综合| 欧美性第一页| 无码高清操逼| 亚洲精品亚洲人成人网| 囯戸精品高潮呻吟旡码| a人欧美综合天堂麻豆| 亚洲最新中文字幕免费| 男人天堂网址| 欧姜老司机| 欧美综合在线91| 天天看精品动漫视频一区| 青青草色情网站视频| 999岛国大片| 张柏芝国产一区在线观看| 人妻激情在线视频| 天天爽夜夜操| 九九无码视频| 国产精品一二三在线看| 亚洲色欲天天天堂色欲网女| 亚洲伊人成综合成人网| 久久骚| 91黑丝少妇| 国产强奸超碰AV| 在线日韩日本亚洲国产| 亚洲国产97| 美日韩一二三区| 亚洲综合另类欧美久久久| 强奸a片网| 亚洲暴力强奸AV| 日韩少妇无码| 欧美狠狠干| 中出91视频| 精品久久久不卡一区二区| 九九热精品视频在线观看| 伊人久久婷婷| 精品 码产区一区二-1080P高清在线www-B029AV| 国产高清在线观看欧美| 大香蕉十区| 麻豆天美91| 男人天堂网手机版婷婷| 国产对白刺激视频| 日韩中文9| 久久久久久午夜男人的天堂| A级国产欧美激情在线| 色欲久久99国产精品久久久久久| 人人玩人人添人人澡免费| 九九热AV| 黑人综合色| 成人老鸭窝人人在线视频| 色爱综合网| 偷看洗澡一二三区美女| 亚洲综合五月天| 午夜影美女日鸡鸡天天视频国产| 亚洲高清自拍| 18禁在线视频| 岛国1区2区3区在线观看| 亚洲国产97| 91老司机视频| 亚洲丝袜诱惑| 久久69| 神马麻豆福利院| 黑人性欧美| 91热色| 高清孕妇孕交 交孕妇| 丝袜综合| 香蕉综合网| 日韩欧视频| 岛国精品视频在线观看| 日韩成人大片一区二区| www.色操逼| 蜜乳AV一区二区三区四| AV综合中文字幕干| 99热91| 天美传媒国产原创中文字幕亚洲欧美另类 | 日韩欧美中文日韩欧美色| 欧美日韩97在线| 开心激情站| 午夜男女爽爽爽在线视频| 97爱爱| 欧美一级A一级a爱片久久| 国产精品麻豆成人av| 3PAV乱伦视频| 人妻少妇被猛烈进入中| 120分钟婬片免费看| 亚洲精品成人激情在线| 久久久性爱视频| 狠狠干妹子| 后入式免费视频| 久久精品国产精品一区| 国产成年免费大片黄在线观看| 日本成人A片免费看| 一本正道久久熟女| 色天天野狼综合社区| 久久五月份| 四季AV综合网址| 中文幕97| 96AV久久久| 午夜男女爽爽爽影院视频| 99热aaa| 嗯嗯嗯不要不要免费视频| 美女91色黄18| 91n免费处女| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 国产精品成人久久一区二区三区| 欧美日韩1234| 国产熟女一区二区| 精品无吗久久| 偷拍导航视频网站| 美国一区二区三区视频| 日本有码影片下载| 国产 亚洲 丝袜 制服| 91老熟妇| 99在线精品观看99| 亚洲色91C| 久久超碰97| 欧美三级中文字幕hd| 欧美日不卡| 97jingpin| 中文字幕国产精品1区| 婷婷亚洲色| 久久久一区二区三区三州| 天天日天天干天天整| 精品人妻一二三| 嗯嗯啊啊啊啊轻点视频| 试看福利| julia ann久久| 蜜区区视频79| 日本99久久| 久久丁香久草综合网| 无码少妇精品一区二区60岁老人| 激情抓乳插进去啪啪啪日韩| 色香在线| 亚洲精品aa久久伊人| 熟妇亚洲一区二区三区| 久久97精品久久久久久久不卡| 一区二区三区黄色片a| 亚洲免费精品一区| 亚州性色| 91麻豆天美国产欧美| 深夜激情| 人妻人人操| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 大香蕉乱级| 超碰久久中文| 国产毛片片精品天天看视频| 日韩精品国产精品五码一区二区| AV色女综合| 国产版a级片直播在线| 97国产色图| 1人人看人人摸人人操| 乱理日韩中文| 国产91av在线播放| 中文字幕女同在线| 日本日逼高清| 无码高清少妇久久| 性色高清在线| 天天操人人操狠狠插| 台湾大香蕉99热| 亚洲国产ⅴ高清在线观看| 欧美色图私拍91| 91精品国产91久久福利| 91精品又粗又猛又爽| 人人看欧美性爱| 精品妇操一区二区三区| 在线性黄高清免费视频| 射综合网| 欧美激色| 色婷婷五月天| 天天爽天天操啊啊啊| 99爱精品| 搡老熟女免费视频| 国产精品久久久久久久久久梁医生| 先锋精品av色鲁| 日本在线不卡一二区| 成人夜夜| 天美国产精品| 国产一区二区三区白丝| 人妻喷水| 人妻精品一区二区全免费| www超碰| 亚欧日韩成人| 色淫网站优优视频| 欧美激情久| 久久精品国产免费观看99| 91欧美www| 伊人亚洲国产一成人久久精品,久久| 9丨久久九九九| 97网址www| 强被迫伦姧在线观看无码网站| 99热99re6国产在线播放| 91久久久久久| 亚洲字幕一区二区| 成人毛片免费| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 国产女人高潮嗷嗷嗷叫小说| 天堂精品| 97色色色综合网站| 黄色片大香蕉| 蜜臀久久99精品久久久久久婷婷| 91国精产品| 天综合网| 91GD.COM| 在线可观看的黄色网址| 欧美成人免费在线观看| 老熟妇一区二区三区| 色呦呦、国产精品| 国产免费一区二区三区最新不卡| 啪啪AV导航| 欧美精品宗合| 色色九区| 中国特猛少妇色xxx| 天天影视综合网欧美精品| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 一级性爱视频免费观看| 99黄页网站| 超碰这里只有精品| 一区二区三区日韩欧美| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 九九探花视频在线观看| 99青草| 久久久久久AⅤ无码免费肉站| 99这里有精品视频| KK色在线影院| 干B| 97在线播放| 99操| 97视频7| 91亚州日韩高清| 啊啊啊啊啊在线| 日韩少妇丰满亚洲| 国产一区二区啪啪视频| 91 手机在线播放 绯色| 一块操欧美性爱| 九九热最新| 偷拍 亚洲| 国产精品青草综合久久| 成人午夜小视频手机在线看| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 综合久久久久久久综合网| 欧美色院| 97超碰碰| 久久永久无码人妻视频| 射久久| 国产深夜福利| 日韩兔费看黄片| 深夜国产福利| 青草精品视频日本久久久久网站在线| 中文字幕精品码亚洲| 欧美—性—交—色| 欧美性爱超碰97| 欧成人精品一区二区三区| 亚洲九九视频| AV中亚| 国产h小视频在线观看免费| 九九九九精品视频| 2021国产成人精品久久| 国产福利视频精品视频| 久久毛卡| 日韩婷婷| 久久伊人网视频一区二区三区| 97高清啪啪| 天天干天天日天天射黄色片| 东京热不卡视频| 日本蜜桃| 大香蕉草草| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲蜜臀精品视频久久| 人乳av| 大粗鳼巴久久久久| 亚洲日韩精品久久久久一区壹牛| 人妻啪| 国产免a费看黄片在线| 逼逼逼逼操操操操操操操操操午夜剧场| 午夜精品五区| 红杏大香蕉| 超碰97色色| 亚洲图片 激情小说| 欧美熟女丝袜| 蜜臀一区二区三区在线| 97人妻免费中文字幕| 婷婷伊人綜合中文字幕| 亚洲天堂人人妻| 亚州伊人色综台| 亚洲日韩精品久久久久一区壹牛| 人妻素股| 久久久少妇诱惑精品视频| 啊啊啊啊无码| 操逼无码操逼| 亚洲精品国产熟女| 足交视频老司机| 日本孕妇孕交| 99热精品青草在线| 无遮挡一级毛片视频免费的| 婷婷涩嫩草鲁丝久久午夜精品| 色黄色美女大长腿午夜视频| 91九久| 久久久免费懂色| 日韩少妇一区二区三区| 国产美女自拍AV| 果冻传媒A片麻豆熟妇人妻| 蜜臀久久99精品久久久久| 在线97视频| 国产91福利小视频在线观看| 人妻一区视频| 精品国产Av无码久久久伦古装| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 操婷婷逼| 一级片视频啪啪| 精品人妻丰满熟妇一区二区三| 在线免费观看高清无码视频| 色999五月色| 老汉网| 久久久偷拍| 九九九九免费高| 人妻精品一区二区全免费| 99re这里只有精品2| 热热色中文无码| 免费看日产一区二区三区| 九九色综合| 久久久久久少妇| 天天影视色香色欲| 一级做a爰片久久毛片图片| 亚91网| 欧美巨大性舒爽顶到了| 婷婷导航| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 无码丰满熟妇一区二区浪潮AV| 9久综合网| 国产精品久久久久久久久久久久久久久| 欧美亚洲91| 东京热免费视频| 色香综合天天影视综合| 中文字幕中文字幕一区二区| 又摸又舔在线观看网站| 日本中文字幕不卡视频| 一区麻豆 高清中文字幕| 天堂成人网| 91日韩在线| 亚洲欧洲日韩中文字幕一区| 日韩AV一区二区三区四四| 加勒比综合88| 天天欧美欧美亚洲网| 超碰色97| 天天干天天做| 国产久久久久久| 你操综合| 日本性交操一区二区不卡系列| www.99在线| 搡老女人老91妇女熟女| 国产欧美日韩精品中文| 日日黄色三级网站| 国产一级作爱毛片| 亚州欧美在线| 最新欧洲欧美日本激情网站| 成人线上超碰| 一起草三级AV电影在线观看 | 92性色国产午夜福利在线661| 欧美在线官网| 嫩草在线视频| 97在线欧| 五月婷婷综合在线| 丝袜人妻av一区二区| 天美传媒AV国产在线| 狠狠中文字幕| 操熟女91| 欧美熟妇人体| 少妇一区二区三区精选| 97超碰这里只有精品| 色色色色网站| 91国产操逼视频| 久操影视| 殴美牲| 亚洲一区操| 伊人9| 中文字幕啊啊啊在线观看视频| 国产一区二区精品久久久不卡蜜臀| 91久操| 色色网91| 人妻一区二区三区熟女| 青青伊人久久| 久久国产精品一级二级三级| AA特级绝黄| 91A欧美电影网站| 密臀AV在线| 婷婷中文字幕| 亚洲天堂一区二区久久| 熟妇色99| 国产精品3| 精品人妻一区二区三区-国产精品| 青椒国产97在线熟女| 国内一级精品| 麻豆区久久久久亚| 色九九九| 亚州色交| 一区二区娱乐网站| 久久青青草原免费视频| 校园春色五月天| 91九色丨国产丨爆乳| www…国产操逼| 久艾草在线精品视频在线观看| 农村妇女精品一区二区| 国产高清1234区| 成人免费不卡在线视频| 日韩精品色呦呦| 在线二区不卡| 国产后入清纯| 精品无码久久久久| 男人的天堂成人的社区| 97最新在线播放视频| 手机午夜电影神马久久| 日产123区精品免费观看| 97操碰| 中文字幕一区二区免费在线| 青青草伊人久久| 成年女人18级毛片毛片免费观看| 亚洲图片色图欧美另类| 97超碰人人操人人操| 淫淫综合网| 超碰这里只有精品| 国内黄色精品| 99热色这里只有精品| 动漫爆乳3D奶水一区在线观看| 亚洲h片在线免费观看| 夜夜骑夜夜操| 欧美se综合| 久久9久久| 亚洲精品蜜桃久久久| 超碰97在线色男人??| 国产十八禁视频| 综合 青草 伊久久 影院 综合| 玖玖97综合 | 97天堂| 美女骚尻视频| 久久精品72| 欧美亚洲综合色| 97资源免费视频| 日韩av一级黄片| 欧美aaaaaaa| 大黄片做爱的大的| 亚洲高清无码在线桃色| 一区二区三区四区免费视频| 久久人人舔人人爽舔人人av片| 和协影院中文字幕三区| 蜜乳AV网址| 亚洲人妻一区二区三区| 亚洲第一黄色av网站| 国产天美欧美| 亚洲人妻精品一区二区| 日本蜜桃| 四虎在线免费视频| 大香蕉乱级| 视频一区二区免费在线| 午夜福利1区2区3区| 少妇高潮流水av免费| 久久久久久电影| 国产人妖视频一区在线观看| 国产精品宅男免费| 久久婷五月| 欧美 亚洲 综合 制服| www四虎| 97超久碰| 亚洲蜜臀精品视频久久| 99精品人妻| 91精品丝袜久久久久久| 国产成人超碰在线| 亚州AV无码国产精品| 日日操天天操| 精品丰满人妻一区二区三区免费观| 操美女高潮抽搐白浆| 天天爽夜夜操| 91中文精品日韩欧美在线| 青青青草伊人精品| 青青在线视频日韩欧美| 日韩情色视频| 操逼逼无码| renqi久久久久久久久久久久| 97高清啪啪| 大香蕉日亚洲日本亚大| 啊啊啊想要| 精品成人亚洲午夜电影| 欧美操逼一二三区| 亚州综合图片| 97chaopengongkai| 91高清无码下载| 情色AV电影| 国产日韩精品suv| 又摸又舔在线观看网站| 国产一区二区在线看| 国产 日韩 欧美一区| 青娱乐国产盛宴视频| 久久人妻精品| 亚洲欧美在线综合| 亚洲麻豆av一区二区| 99久久精品无码一区二区| 欧美男女午夜啪啪| 懂色av中文字幕| 懂色中文一区二区三区| 五月综合激情| 久久久96精品| 国产精品无码久久久久2025| 亚洲人91| 一级黄色影片| 黄久在线| 97人人夜夜精品视频| 成人欧美一区二区三区黑人一| 日本不卡一区二区| 欧美日韩第一页| 日本黄色裸日本黄色裸体| 资源新线在线天堂| 女人爽到高潮潮喷18禁网站 | 啊v在线观看视频| 97在线观看| 91在线美女| 超碰人人干天天射| 日本日皮视频逼| 久久一二三四五六七八九区区| 啊啊嗯嗯好爽| www.99热| 超碰在线免费一区二区三区| 性爱av网站| 欧美一区二区三区大综合| 精品无吗m| 色综合色色| 国产精品农村妇女精品| 中文字幕 国产 精品| 色偷综合| 91成人在线免费视频| 久久综合久色欧美综合狠狠 | 亚洲午夜福利视频| 亚洲综合贴图91 | 久久日韩毛| 超碰九7| 少妇高潮对白在线观看| 啊啊啊久久久视频| 91丨熟女丨丰满熟女| 舔舔啊| 亚洲成人福利电影免费| 97操综合| 精品人妻伦一二三区久久| 91黄站| 久99久视频精选| 91亚洲网| 黑人天8A∨高清网站| 东京热视频网| 亚州欧美一区| 青青久久手机线视频| 综合激情97 | 久久精品国产亚洲粉嫩| 五月激情综合网| 国内一区二区免费| 91成人国产综合久久精品蜜月| heyZO天然素人无码AⅤ专区| 91无摭挡| 黄色AV影视| 人人玩人人添人人澡免费| 99操| 在线v中文字幕一区二区三区| 欧美精品不卡一二三四在线91| 婷婷五月天色| 99国产精品视频尤物| 国产91美女视频| 久久久久ab| 婷婷五月天成人网| 在线观看AV片| 亚洲91在线| 亚洲清纯唯美| 色婷婷狠狠| 粉嫩av久久一区二区三区| 97网址97| 91在线免费观看处女| 亚洲免费成人在线高清无码视频| 五月天精品| 91视频观看网站| 91社操逼| 在线观看亚洲成人精品| 亚洲性高潮| 国产一级高清免费观看| 乱日视频| 91性| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 日韩欧美中文字幕搭讪巨乳美人妻视频| 激情婷婷| 亚洲一区二区三区AV无码| 中文操逼字幕| 国产又粗又长的视频| 伊人网在线视频| 91 国产丝袜在线放观看| 九九色逼| 久久精品国产亚洲AV成人直播| 欧洲亚洲国产综合在线| 天天综合网网欲色| 亚洲人妻精品一区二区| 清纯唯美综合亚洲| 91欧美巨乳| 黑人精品久久97| 欧美精品双插| 伊人久久国产免费观看视频| 亚洲91极品| 五月天综合在线| 久热91| 亚洲AV永久无码一区仙野| 国产AV久久野战精品| 无码人妻一区二区三区色欲aⅴ | 粉嫩av一区二区三区天美传媒| 2003天天干夜夜操| 无码九九| 97人人色| 粉嫩AV一区二区夜夜| 欧美色97| 96麻豆精品一区二区三区| 美女黄页网站| 日韩15p| 久久9久| 日本孕妇一区二区视频操逼免费看| 嗯嗯啊啊操我| 人人搞人人插人人操| 玖玖爱在线视频免费观看| 欧美性爽xyxOOOO| 51国产午夜精品视频| 国产女s强制榨精视频| 青青免费在线视频一区| 久久久久人妻二区精品叶可怜| 欧美性爱18观看| www.av在线视频| 欧美亚洲日本视频久久久| 在线无码操| 超碰99在线| 精品少妇后入一区二区三区四区人妻巨乳| 97人肏| av情色影音| 精品一国2| 青青草在线视频美女| 青娱乐黄色录像| 日韩无码一级黄色av片| 亚洲AV无码天美传媒一区| 久久久999日本大片| 夜夜嗨AV蜜臀av| 日日摸日日碰| 日日躁夜夜躁狠狠躁超爽| 天美传媒精品一区二区| 日本精品网站在线中文| 爽 好舒服 无码刺激久久| 99无码| 日本精品国产视频| 大香蕉2017| 亚洲av噜噜噜噜噜噜| AV网站高清无码在线观看| 九九碰九九爱97超碰| 日本亚洲vr欧美不卡高清专区| 91成人国产综合久久精品蜜月| 日韩精品一区,二区 九九...老司机| 老熟女阿 国产91| 亚洲āv网址在线观看| 久久久久国产精品喷潮免费观看臀| 九九香蕉网| 国产精品网站免费| 国产午夜精品一区二区三区牛牛| 一级片视频啪啪| 色综合尤物| 日韩av熟女一区二区三区成人| 亚洲青青草| 91亚洲在线| 欧美日韩性爱无码| 欧美少妇大量自拍视频在线观看| 中出后入| 日本羞羞的视频在线播放| 自慰白浆在线观看| 久草婷婷| 青青草国产欧美非洲黑人| 乱操乱伦AV| 日本操逼无码| 日韩一性一交一A片俄罗斯 | 91精品国产91久久青草| 殴美大黄片| 亚洲欧美色综合| 91嫩草欧美| 日本人人操人人操| 少妇国产不卡| 大香蕉草草| 久久国产乱子伦精品免费女人| 天天插天天干| 欧美熟女逼久久久久久| 日韩av在线精品观看| 丁香五月色情| 蜜臀aV午夜一区二区三区| 中文?日韩?免费?精品| 婷婷香蕉| 欧美啪啪天堂| 日韩成人精品视频自拍| 久久久av爱| 91 欧美| 色婷婷色99国产综合精品| 裸体美女久久久| 一级婬片120分钟试看| 激情文学网伊人| 亚洲97资源| 日本午夜福利影院| 日韩97视频| 中文字幕一区二区在线日韩精品| 欧美日日夜夜| 中国一级αV| 亚洲91av| 尤物网站91| 人人操我人人干| 神马久久免费电影观看| 99精品在线| 91人妻人人澡人人爽人人精品| 色老汉玖玖爱| 国产精品日韩在线一区| 97久久国产精品| 日本岛国黄色网址| 亚洲伊人久久精品影院| 日韩性爱毛片操骚逼| 国产精品亚洲四五区在线观看| 国产老女人久久毛| 美女露胸露奶头| 97超碰超碰| 麻豆亚洲Av成人无码一区精品| 91熟女丨91老女人| 亚洲综合网电影91| 男人天堂欧美| 18一区二区三区| 久久精品 六十路 熟女 欧美| 殴美综合色88| 亚洲蜜乳av| 日韩成人人妻网站| 日日爽夜夜爽| 欧美组图日韩亚洲中文字幕| 日本一区二区电影网站| 综合影院永久入口国产| 亚洲 欧美 小说| 久久亚洲AV无码专区国产精品| 99re6在线视频精品免费完整版安卓版| 成人八戒网站| 91无码精品| 天天操女人| 第四色奇米影视777| 欧洲精品人妻| 国产精品剧情| 亚洲少妇激情视频| 97干97色| 先锋激情∨在线视频播放| 五十路熟女,国产欧美精品区一区二区三区 | 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 伊人久久亚洲中文字幕不卡| 亚洲精品影视老司机| 青青草依人大香蕉| 在线啊啊啊啊| 日逼国产| 少妇高潮九九九九| 91美女在线看| 大香蕉综合| 精品欧美老熟女一二区| 欧美天天综合站| 天天爽天天| 国产成年精品高清在线观看91| 国产精品一二三| 91在线视频免费中出| 亚洲一卡2卡3卡4卡乱码网站 | 色偷偷超碰亚洲| 粉嫩国产精品久久粉嫩| 亚洲免费在线探花| 国产精品天堂| 超碰97导航| 丁香五月天婷婷姐| 欧美极度丰满熟妇hd| 亚洲中文字幕熟女| 狠狠97| 婷婷色香| 狠狠操天天干| 成人三一级一片aaa| 国产精品自在线发布| 啊啊啊在线观看| 在线啊啊啊| 97超碰久| 91女人的网站| 三级三久久线久久99久目本WW| 黄色操人| 日韩欧美加勒比| 天天日天天干天天摸天天操| 九九精品99| 乱论91| 天美传媒AV在线播放| 亚洲色图伊人网| 色老汉色| 国产欧美美女免费观看视频| 天堂8在线新版官网| AA级电影三区| 97操| 99热在线播放| 无码二级三级| 久久精品女同亚洲女同13| 91精品成人| 高清不卡一二三区视频......| 色婷婷五月综合激情中文字幕| 日日日日做夜夜夜夜无码| 亚洲av青草久久一区二区| 婷婷五月天激情网| 在现视频女上位好爽| 欧美性爱第1 页| 久久九色| 日韩久久超碰色| 国产熟女自拍| 日韩激情电影中文字幕| 欧美亚洲20p| 久久精品国产精品亚洲艾通辽熟妇| 丝袜剧情| 在线A日本| 激情抓乳插进去啪啪啪日韩| 欧美真人抽搐一进一出gif| 天美91| 五月天精品| 亚洲色图欧美激情| 香蕉99秘 一区精品蜜桃臀| 九九色色| 天天谢天天干| 亚洲资源站| 亚洲交性| 97 色综合| 欧美资源| 久久成年片色大黄全免费网站| 欧美不在线| 一区二区三区视频| 97操| 秋霞免费无码视频日韩A片 | 美女91在线观看| 亚洲视频一二区| 97精品综合久久网| 日日嗨AV一区二区夜夜| 天天拍天| 大干人妻| 91性情| 亚洲男人天堂av| 最新亚洲黄色免费电影| 人人操人人干xxx| 福利操逼| 一区二区三区激情在线观看| 狠狠色婷婷777| 久久一二三四五六七八九区区区| 一区二区三区精品黑丝白丝酒店对鸡 | 亚欧精品久久久久久久久久久| 亚洲美乱| 日韩精品9999| 亚州Av天美传媒| 九九九九亚洲| 草草草视频在线免费看| 日韩操逼HD| 极品色www影院| 亚洲图片欧美91N| 热热色中文无码| 啪啪91| 亚洲欧美日韩有码| 1024午夜激情男人的天堂| 青青草久久在线| 午夜噜噜噜| 日韩欧美性吧婷婷乱伦大香蕉| 欧美操人视频| 日韩一区二区高清在线观看的| 人人插人人搞人人操| 天天狠| 搞中出视频在线观看| 四季av一区二区凹凸精品小说| 久久久久久综合久久伊人蜜月| 你懂的在线观看区国产 | 偷拍片久久| 欧美劲爆第一页| 国产一级特黄大片处女| www.99在线| 色九九九| 超碰在线1234区| 精品久久久久久AV无码| 少妇熟女视频一二三区| 国产美女自拍视频| 一级特黄aaa大片在线观看成人一级片在线观看 | 日韩成人小视频| 亚洲狠| 午夜.DJ高清在线观看免费7| 日韩无码成人电影| 蜜臀99999| 91亚洲综合在线| 天天操夜夜操狠很操| 丁香六月激情| 1024午夜激情男人的天堂| 精品国产乱码久久久久久网站入口| 三级激情网站| 久久久艹艹艹| 国产夫妻性生活视频| 国产精品麻豆成人av| 国产精品秘 福利姬在线观看| 久久中出在线| 美欧色综合| 日韩视频啪啪| SS久久| 在线日韩日本亚洲国产| 亚洲综合激情五月久久| 国产情色在线| 日韩在线欧美精品一区二区| 人妻熟女午夜精品在线| 人人九九精| 青娱乐欧美激情一区二区| 精品国产乱码久久久久久影片| 欧美色图在线视频少妇| 天天夜躁日日躁狠狠2002| 亚洲精品色| 亚洲精品 欧美97色色| 熟女乱伦A| 青青草手机在线免费观看| 97干色| 丁香六月婷| 超碰97综合网| 新婚人妻扶着粗大强行坐下| 天天看高清麻豆| 97超碰磁| 69综合网| 极品销魂美女一区二区| 色噜噜国产在线| 夜夜嗨视频| 丝袜六区| 国产深喉视频一区二区| 志村玲子视频一区二区| 99热精品在线观看| 久99热| 高颜值美女口爆高潮浪叫| av一区二区三区 中文| 天堂69亚洲精品中文字| 五月天激情婷婷| 精品日日人妻| 人妻丝袜无 码视频专区| 日本大香蕉综合网红本杳社区| 在线啊v一区| 久久久999国产精品| 久久亚洲AV无码白度| 中文字幕日韩精品一区二区三区| 天堂中文日本在线观看| 久久国语| 日韩性爱免费视频在线网站| 亚洲综合一| 亚州AV无码国产精品| www久久精品| 久久五月综合| 91欧美在线| JULIA人妻风俗店中出电影| 人人模人人看| 男人天堂综合| 另类一区| 亚洲欧美97√| 九九热九九热| 国产亚洲深夜激情| 九九九九九九视频| 激情接吻视频久久久久久| 国产精品午夜福利| 激情综合97| 伊人网青青| 性九九九九九九| 亚洲激情在线| 五月丁香黄色网| 日本新免费二区三区| 免费综合亚洲中文| 国产99热| 午夜欧美神马久久久久| 久久av成人无码免费| 国产美女高潮视频| 丁香五月天婷婷姐| www.99中文字幕| 欧美综合天堂| 国产农村妇女精品1区二区| 中文字幕精品一区二区精| av天堂加勒比| 欧美亚洲第1页| 亚洲国产麻豆一区二区三区| 97久久久久| 日韩懂色网| 凹凸视频特色日本特黄| av网站免费看| 少妇第一页| 67914亚洲精品| 欧美 日韩 亚洲 春色| 久射吧| 熟妇人妻一区二区三区| 亚洲精品影视老司机| 9久久久久| 2017天天透天天通天天擦| 久久午夜伦| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 久久东京伊人一本到鬼色| 亚洲精品国产拍免费91在线| 久久的网站啊啊啊啊啊| 日本精品高清一二区一本到| 欧美色999| 欧美手机在线综合| 夜夜狼人妻| 五月天色色网站| 国产亚洲精品激情| 后入国产| 国产91专区| 97久久精品国产| 激情小说五月天| 国产色精品午夜大片| 国产在线观看一区二区三区| 女同性恋中文字幕| 欧美白嫩在线放| 亚洲欧洲偷拍一区| 92人人操人人| 国产精品成人无码a v毛片| 亚洲欧美黄| 欧美综合色| 欧美天堂亚洲电影院一区在线播放 | 黑人精品XXX一区一二区| 超碰色图| 超碰 欧美| a人片中文字幕一区二区| 精品-91人妻子系列| 欧美色图99| 精品久久久九九九孕妇| 日韩久久激情精品| 又大又长又粗又爽又黄| 人人操人人色网| 极品色综合| 欧美亚州综合网图片| 欧洲亚洲人人爽爽视频| 国产极品久久久| 嫩草 人人网精品| 色妺妺在线视频| 亚洲五月天激情| 日韩av乱伦| 欧美一区二区三区日韩| 青青操综合网| 免费观看国产不卡av| 国产传媒午夜理伦精品| 试看日韩黄片| 又大又大又大又粗爽高潮观看| 久久久久熟女| 欧美欧美少妇| 亚洲图片欧美偷拍| 青青草依人大香蕉| 国产精品对白自产拍| 四虎免费视频| 怡红院网站在线视频| 婷婷五月天色网| 亚洲做性| 日本一二三免费久久| 婷婷精品久久av影视| 亚洲人妻久久久| 日1区2区3区2020| 97se亚洲| 国产精品天堂| 国产精品久久久啊| 日本韩国国产精品一区| 国产亚洲99久久精品熟| 精品无码一区二区三区| 国产精品4p在线观看| 收看日本人日bb| 一级黄色性爱A级片| 亚洲精品蜜桃久久久一区二区三区| 丝袜视频网国产90| 欧美色爱综合| 本道综合精品| 精品人妻一区二区三区四区不卡在| 国产深喉视频一区二区| av三级电影在线播放| 99精品国产户外露出| AA级电影三区| 久久亚洲AV无码专区国产精品| 性爱乱伦网址| 日日干日日| 图色综合网| 一区二区三区成人| 人妻精品一区一区三区蜜桃91| 四虎在线视频| 成人羞羞视频国产| 伊人精品久久网站| 免费黄色A片| 熟妇在线视频一区二区| xxx亚洲午夜天堂| 综合久久99亚洲人妻中文在线| 色哟哟av| 中文字幕乱碼在线| 激情第四色| 成人网站 免费观看| 亚洲成aⅴ人片不卡无码| 五月天久久综合网| 国产无马视频| 99久久9| www.狠狠干.coom| 久久九七| 狠狠干2020| 91亚洲网站| 成人一二| 四虎影院成年人片| 亚洲αv一区二区三区| 伊人久久综合影院| 大香蕉草草| 久偷拍| 天天操福利视频综合网站|