99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

FreeRTOS中斷管理實(shí)戰(zhàn):從FromISR API到優(yōu)先級(jí)配置避坑指南

FreeRTOS中斷管理實(shí)戰(zhàn):從FromISR API到優(yōu)先級(jí)配置避坑指南 1. 從“裸奔”到“有章法”為什么FreeRTOS中斷管理是分水嶺如果你是從51單片機(jī)或者STM32標(biāo)準(zhǔn)庫(kù)的“裸機(jī)”世界剛剛踏入FreeRTOS的大門(mén)那么“中斷管理”這個(gè)概念很可能是你遇到的第一個(gè)真正意義上的“坎”。在裸機(jī)編程里中斷處理函數(shù)ISR就是一塊“飛地”你沖進(jìn)去處理完再?zèng)_出來(lái)世界還是那個(gè)世界頂多注意一下變量要加volatile。但到了FreeRTOS里情況就復(fù)雜了。你寫(xiě)的ISR不再是那個(gè)可以為所欲為的“獨(dú)行俠”它必須遵守操作系統(tǒng)的“交通規(guī)則”否則輕則任務(wù)調(diào)度紊亂、數(shù)據(jù)不同步重則直接死機(jī)出現(xiàn)那些讓人頭疼的“堆棧溢出”、“優(yōu)先級(jí)反轉(zhuǎn)”或者“configASSERT”斷言失敗。我見(jiàn)過(guò)太多初學(xué)者把裸機(jī)中斷的代碼原封不動(dòng)搬到FreeRTOS任務(wù)里或者直接在ISR里調(diào)用printf、操作隊(duì)列而不加保護(hù)結(jié)果程序運(yùn)行起來(lái)像抽風(fēng)一樣時(shí)好時(shí)壞。問(wèn)題的根源就在于沒(méi)有理解FreeRTOS中斷管理的核心思想中斷服務(wù)程序是最高優(yōu)先級(jí)的“緊急事件響應(yīng)者”但它不能也不應(yīng)該直接去做“系統(tǒng)管理員”內(nèi)核該干的活兒比如切換任務(wù)、操作內(nèi)核對(duì)象隊(duì)列、信號(hào)量等。它需要一種安全、高效的機(jī)制來(lái)通知“系統(tǒng)管理員”有緊急事件發(fā)生然后由“管理員”在合適的時(shí)機(jī)通常是在任務(wù)上下文去處理后續(xù)事宜。這就是為什么xQueueSendFromISR、xSemaphoreGiveFromISR這些以“FromISR”結(jié)尾的API如此重要。它們就是中斷與內(nèi)核之間約定的、安全的“通信協(xié)議”。而portYIELD_FROM_ISR這個(gè)宏則是這個(gè)協(xié)議中的一個(gè)關(guān)鍵“開(kāi)關(guān)”它決定了中斷是否要立刻觸發(fā)一次任務(wù)切換。弄懂它們你才算真正理解了FreeRTOS如何協(xié)調(diào)硬件實(shí)時(shí)性與軟件多任務(wù)性。本教程將徹底拆解這套機(jī)制讓你不僅知道怎么用更明白為什么必須這么用以及那些搜索熱詞背后的錯(cuò)誤如portmacro.h的編譯錯(cuò)誤、LVGL跑不起來(lái)究竟該如何避免。2. FreeRTOS中斷處理的兩條鐵律與一個(gè)核心機(jī)制在深入API之前我們必須確立兩個(gè)在FreeRTOS下編寫(xiě)ISR的“鐵律”這是所有實(shí)踐的基石。2.1 鐵律一快進(jìn)快出絕不拖延這條和裸機(jī)編程一脈相承但在FreeRTOS中更為關(guān)鍵。中斷的使命是響應(yīng)硬件緊急事件記錄關(guān)鍵狀態(tài)然后盡快退出。任何耗時(shí)的操作如復(fù)雜計(jì)算、軟件延時(shí)、等待外部設(shè)備等都必須堅(jiān)決剝離出ISR。為什么因?yàn)镕reeRTOS內(nèi)核的很多內(nèi)部計(jì)時(shí)和調(diào)度都依賴于一個(gè)硬件定時(shí)器產(chǎn)生的中斷通常是SysTick。如果你的ISR執(zhí)行時(shí)間過(guò)長(zhǎng)可能會(huì)阻塞其他同等或更低優(yōu)先級(jí)的中斷更嚴(yán)重的是它可能延遲甚至阻塞內(nèi)核的SysTick中斷導(dǎo)致整個(gè)系統(tǒng)的時(shí)間片計(jì)算、任務(wù)延時(shí)和超時(shí)判斷全部錯(cuò)亂。表現(xiàn)出來(lái)就是系統(tǒng)“卡頓”任務(wù)調(diào)度不再準(zhǔn)時(shí)。實(shí)操心得一個(gè)簡(jiǎn)單的判斷方法是如果你的ISR代碼超過(guò)了20行非簡(jiǎn)單的變量賦值或者里面包含了for、while等循環(huán)你就要高度警惕思考是否違反了這條鐵律。正確的做法是ISR只做“標(biāo)記”和“通知”把“處理”交給任務(wù)。2.2 鐵律二與內(nèi)核交互必須使用“安全通道”這是FreeRTOS中斷管理與裸機(jī)最根本的區(qū)別。在裸機(jī)中ISR可以直接修改全局變量主循環(huán)while(1)去查詢這些變量。在FreeRTOS中任務(wù)和ISR之間通信強(qiáng)烈推薦使用內(nèi)核對(duì)象如隊(duì)列Queue、信號(hào)量Semaphore、事件組Event Group等。因?yàn)樗鼈冏詭胶突コ鈾C(jī)制。但是絕對(duì)不能在ISR中直接調(diào)用普通任務(wù)環(huán)境下使用的內(nèi)核API例如xQueueSend、xSemaphoreGive。必須調(diào)用其對(duì)應(yīng)的FromISR版本如xQueueSendFromISR、xSemaphoreGiveFromISR。為什么普通版本的內(nèi)核API內(nèi)部可能包含需要掛起調(diào)度器、進(jìn)行任務(wù)切換等復(fù)雜操作這些操作在中斷上下文中是非法的會(huì)導(dǎo)致未定義行為通常是各種奇怪的崩潰。FromISR版本的API是經(jīng)過(guò)特殊裁剪的它們?nèi)サ袅诉@些在中斷中不能執(zhí)行的操作是內(nèi)核為ISR準(zhǔn)備的“安全接口”。2.3 核心機(jī)制pxHigherPriorityTaskWoken與portYIELD_FROM_ISR這是理解FreeRTOS中斷管理精髓的關(guān)鍵。當(dāng)你從一個(gè)ISR中調(diào)用xQueueSendFromISR或xSemaphoreGiveFromISR去喚醒一個(gè)任務(wù)時(shí)一個(gè)關(guān)鍵的問(wèn)題產(chǎn)生了被喚醒的任務(wù)優(yōu)先級(jí)比當(dāng)前正在運(yùn)行的任務(wù)被中斷的任務(wù)更高嗎如果是要不要立刻切換到這個(gè)高優(yōu)先級(jí)任務(wù)FromISR系列的API通過(guò)一個(gè)參數(shù)來(lái)回答這個(gè)問(wèn)題BaseType_t *pxHigherPriorityTaskWoken。這個(gè)參數(shù)的作用它是一個(gè)出參。你在調(diào)用前將其初始化為pdFALSE。API內(nèi)部會(huì)判斷如果本次操作比如發(fā)送數(shù)據(jù)到隊(duì)列使得一個(gè)任務(wù)解除阻塞并且這個(gè)被解除阻塞的任務(wù)優(yōu)先級(jí)高于當(dāng)前被中斷的任務(wù)的優(yōu)先級(jí)那么API就會(huì)把這個(gè)參數(shù)設(shè)置為pdTRUE。這個(gè)參數(shù)的意義它告訴你存在一個(gè)更高優(yōu)先級(jí)的任務(wù)就緒了。知道了有更高優(yōu)先級(jí)任務(wù)就緒接下來(lái)就是決定何時(shí)切換。這就是portYIELD_FROM_ISR(xHigherPriorityTaskWoken)宏的職責(zé)。它的邏輯如果xHigherPriorityTaskWoken等于pdTRUE那么portYIELD_FROM_ISR會(huì)觸發(fā)一次中斷退出時(shí)的任務(wù)切換。當(dāng)中斷服務(wù)程序執(zhí)行完畢CPU不會(huì)返回原先被中斷的那個(gè)低優(yōu)先級(jí)任務(wù)而是直接切換到那個(gè)剛剛就緒的、更高優(yōu)先級(jí)的任務(wù)。這實(shí)現(xiàn)了最小延遲的響應(yīng)。如果不用它如果你在ISR中雖然設(shè)置了pxHigherPriorityTaskWoken為pdTRUE但沒(méi)有調(diào)用portYIELD_FROM_ISR那么任務(wù)切換會(huì)等到下一個(gè)系統(tǒng)時(shí)鐘節(jié)拍SysTick中斷時(shí)才會(huì)發(fā)生。這可能會(huì)引入最多一個(gè)時(shí)鐘節(jié)拍周期例如1ms的延遲。一個(gè)完整的ISR通信范式如下void USART1_IRQHandler(void) { BaseType_t xHigherPriorityTaskWoken pdFALSE; // 初始化 char cReceived; if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) { cReceived USART_ReceiveData(USART1); // 使用 FromISR 安全API發(fā)送到隊(duì)列 xQueueSendFromISR(xUartQueue, cReceived, xHigherPriorityTaskWoken); USART_ClearITPendingBit(USART1, USART_IT_RXNE); } // 根據(jù)是否需要切換執(zhí)行端口特定的中斷退出前操作 portYIELD_FROM_ISR(xHigherPriorityTaskWoken); }3. 實(shí)戰(zhàn)拆解以UART接收中斷驅(qū)動(dòng)數(shù)據(jù)流處理任務(wù)讓我們通過(guò)一個(gè)嵌入式開(kāi)發(fā)中最常見(jiàn)的場(chǎng)景——串口接收不定長(zhǎng)數(shù)據(jù)來(lái)串聯(lián)上述理論。目標(biāo)是實(shí)現(xiàn)一個(gè)穩(wěn)定、高效的數(shù)據(jù)接收機(jī)制ISR負(fù)責(zé)接收字節(jié)任務(wù)負(fù)責(zé)組包和解析。3.1 系統(tǒng)架構(gòu)設(shè)計(jì)我們?cè)O(shè)計(jì)兩個(gè)任務(wù)和一個(gè)中斷服務(wù)程序硬件中斷USART1_IRQHandler優(yōu)先級(jí)最高由NVIC配置。只做一件事將接收到的單個(gè)字節(jié)快速送入一個(gè)隊(duì)列xUartRxQueue。數(shù)據(jù)收集任務(wù)vTaskUartCollect中等優(yōu)先級(jí)。它阻塞在xUartRxQueue上。一旦ISR送來(lái)字節(jié)它就被喚醒從隊(duì)列中取出字節(jié)存入一個(gè)環(huán)形緩沖區(qū)Ring Buffer并嘗試根據(jù)協(xié)議例如換行符\n判斷一個(gè)完整數(shù)據(jù)包是否接收完成。數(shù)據(jù)處理任務(wù)vTaskUartProcess較低優(yōu)先級(jí)。它被數(shù)據(jù)收集任務(wù)通過(guò)一個(gè)二進(jìn)制信號(hào)量xUartPacketReadySem通知。當(dāng)收集任務(wù)組好一個(gè)完整包后給出信號(hào)量。處理任務(wù)則從環(huán)形緩沖區(qū)中取出完整數(shù)據(jù)包進(jìn)行解析、響應(yīng)等耗時(shí)操作。這樣設(shè)計(jì)的優(yōu)勢(shì)在于耗時(shí)的協(xié)議解析和業(yè)務(wù)處理完全在任務(wù)中完成不影響中斷響應(yīng)。即使處理任務(wù)被阻塞也不影響中斷接收和數(shù)據(jù)收集數(shù)據(jù)不會(huì)丟失。3.2 關(guān)鍵代碼實(shí)現(xiàn)與注釋首先在程序初始化部分創(chuàng)建所需的內(nèi)核對(duì)象// 定義隊(duì)列深度根據(jù)你的數(shù)據(jù)流量調(diào)整 #define UART_RX_QUEUE_LENGTH 128 QueueHandle_t xUartRxQueue; SemaphoreHandle_t xUartPacketReadySem; // 環(huán)形緩沖區(qū)用于數(shù)據(jù)收集任務(wù)暫存數(shù)據(jù) #define RING_BUF_SIZE 512 static uint8_t ucRingBuffer[RING_BUF_SIZE]; static size_t uxWriteIndex 0, uxReadIndex 0; void SystemInit(void) { // ... 硬件初始化包括串口、NVIC等 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 5; // 設(shè)置一個(gè)合適的搶占優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); // 創(chuàng)建隊(duì)列用于傳遞單個(gè)字節(jié) xUartRxQueue xQueueCreate(UART_RX_QUEUE_LENGTH, sizeof(uint8_t)); // 創(chuàng)建二進(jìn)制信號(hào)量初始值為0 xUartPacketReadySem xSemaphoreCreateBinary(); // 創(chuàng)建任務(wù) xTaskCreate(vTaskUartCollect, UartCollect, 256, NULL, 2, NULL); // 優(yōu)先級(jí)2 xTaskCreate(vTaskUartProcess, UartProcess, 512, NULL, 1, NULL); // 優(yōu)先級(jí)1 // ... 啟動(dòng)調(diào)度器 }接下來(lái)是中斷服務(wù)程序嚴(yán)格遵守“快進(jìn)快出”和“使用安全API”void USART1_IRQHandler(void) { BaseType_t xHigherPriorityTaskWoken pdFALSE; uint8_t ucData; // 檢查是否是接收中斷 if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) { ucData USART_ReceiveData(USART1); // 讀取數(shù)據(jù)清除RXNE標(biāo)志 // 嘗試發(fā)送到隊(duì)列。如果隊(duì)列滿根據(jù)需求處理這里選擇阻塞但I(xiàn)SR中實(shí)際不會(huì)阻塞會(huì)立刻返回errQUEUE_FULL if(xQueueSendFromISR(xUartRxQueue, ucData, xHigherPriorityTaskWoken) ! pdPASS) { // 隊(duì)列滿這是一個(gè)嚴(yán)重錯(cuò)誤需要處理??梢渣c(diǎn)亮錯(cuò)誤LED或者丟棄最舊的數(shù)據(jù)。 // 例如可以選擇從隊(duì)列頭部接收一個(gè)數(shù)據(jù)丟棄再發(fā)送新的實(shí)現(xiàn)上更復(fù)雜此處僅提示 // Error_Handler(); } // 注意STM32標(biāo)準(zhǔn)庫(kù)的USART_ReceiveData會(huì)清除RXNE有些HAL庫(kù)需要手動(dòng)清除 // USART_ClearITPendingBit(USART1, USART_IT_RXNE); // 如果庫(kù)函數(shù)沒(méi)清需要手動(dòng)清 } // 如果有更高優(yōu)先級(jí)任務(wù)被喚醒則請(qǐng)求切換 portYIELD_FROM_ISR(xHigherPriorityTaskWoken); }然后是數(shù)據(jù)收集任務(wù)它在任務(wù)上下文中安全地處理數(shù)據(jù)void vTaskUartCollect(void *pvParameters) { uint8_t ucRxByte; BaseType_t xStatus; for(;;) { // 阻塞等待隊(duì)列中的字節(jié)無(wú)限期等待 if(xQueueReceive(xUartRxQueue, ucRxByte, portMAX_DELAY) pdPASS) { // 成功收到一個(gè)字節(jié)存入環(huán)形緩沖區(qū) ucRingBuffer[uxWriteIndex] ucRxByte; uxWriteIndex (uxWriteIndex 1) % RING_BUF_SIZE; // 簡(jiǎn)單協(xié)議以換行符 \n 作為包結(jié)束符 if(ucRxByte \n) { // 一個(gè)完整數(shù)據(jù)包接收完畢通知處理任務(wù) xSemaphoreGive(xUartPacketReadySem); } // 環(huán)形緩沖區(qū)溢出檢查重要 if(uxWriteIndex uxReadIndex) { // 緩沖區(qū)滿了處理錯(cuò)誤例如丟棄最舊數(shù)據(jù)uxReadIndex前進(jìn)一位或復(fù)位 uxReadIndex (uxReadIndex 1) % RING_BUF_SIZE; // 可以記錄錯(cuò)誤計(jì)數(shù) } } } }最后是數(shù)據(jù)處理任務(wù)它執(zhí)行相對(duì)耗時(shí)的操作void vTaskUartProcess(void *pvParameters) { uint8_t ucPacketBuffer[128]; size_t uxPacketLen 0; for(;;) { // 阻塞等待數(shù)據(jù)包就緒信號(hào)量 if(xSemaphoreTake(xUartPacketReadySem, portMAX_DELAY) pdTRUE) { // 從環(huán)形緩沖區(qū)中取出直到換行符的數(shù)據(jù)注意處理環(huán)形 uxPacketLen 0; while(uxReadIndex ! uxWriteIndex ucRingBuffer[uxReadIndex] ! \n uxPacketLen sizeof(ucPacketBuffer)-1) { ucPacketBuffer[uxPacketLen] ucRingBuffer[uxReadIndex]; uxReadIndex (uxReadIndex 1) % RING_BUF_SIZE; } // 跳過(guò)換行符本身 if(uxReadIndex ! uxWriteIndex ucRingBuffer[uxReadIndex] \n) { uxReadIndex (uxReadIndex 1) % RING_BUF_SIZE; } ucPacketBuffer[uxPacketLen] \0; // 字符串結(jié)束符 // 現(xiàn)在 ucPacketBuffer 里就是一個(gè)完整的數(shù)據(jù)包可以進(jìn)行解析、響應(yīng)等操作 // 例如解析命令、控制外設(shè)、通過(guò)其他接口發(fā)送等 // processPacket(ucPacketBuffer, uxPacketLen); // 注意此處的處理時(shí)間不宜過(guò)長(zhǎng)以免影響其他任務(wù)。如果非常耗時(shí)可以考慮再分出一個(gè)任務(wù)。 } } }4. 那些搜索熱詞背后的“坑”與解決方案當(dāng)你搜索FreeRTOS中斷相關(guān)問(wèn)題時(shí)會(huì)碰到很多高頻詞匯。它們往往對(duì)應(yīng)著具體的錯(cuò)誤或困惑。我們來(lái)逐一拆解。4.1..\freertos\port\portmacro.h(73): error: #35: #error directive: configtick_t這個(gè)編譯錯(cuò)誤非常典型。它直指FreeRTOS移植的核心——portmacro.h文件。這個(gè)文件是FreeRTOS與具體CPU架構(gòu)的橋梁里面全是和硬件尤其是中斷、臨界區(qū)、堆棧相關(guān)的底層宏和函數(shù)。錯(cuò)誤原因configTICK_TYPE_WIDTH_IN_BITS這個(gè)宏沒(méi)有正確定義。這個(gè)宏決定了系統(tǒng)節(jié)拍計(jì)數(shù)器TickType_t的位寬是32位還是16位。在FreeRTOSConfig.h中你需要根據(jù)你的處理器和需求來(lái)定義它。解決方案打開(kāi)你的FreeRTOSConfig.h文件。找到或添加以下定義/* 對(duì)于32位處理器通常定義為32 */ #define configTICK_TYPE_WIDTH_IN_BITS 32 /* 或者對(duì)于某些資源緊張的16位機(jī)可以定義為16 */ /* #define configTICK_TYPE_WIDTH_IN_BITS 16 */確保這個(gè)定義出現(xiàn)在#include “FreeRTOS.h”之前因?yàn)閜ortmacro.h會(huì)依賴它。清理并重新編譯工程。注意這個(gè)錯(cuò)誤經(jīng)常在從舊版本FreeRTOS升級(jí)或者在不同編譯器、不同芯片平臺(tái)間移植時(shí)出現(xiàn)。FreeRTOSConfig.h是高度可配置的移植時(shí)必須仔細(xì)核對(duì)所有configXXX宏的定義是否與新版本或新平臺(tái)匹配。4.2 “freertos堆棧溢出檢測(cè)”與中斷嵌套堆棧溢出是FreeRTOS開(kāi)發(fā)中最常見(jiàn)的崩潰原因之一。任務(wù)堆棧溢出檢測(cè)configCHECK_FOR_STACK_OVERFLOW機(jī)制會(huì)在任務(wù)切換時(shí)檢查堆棧指針是否越界。但這里有一個(gè)與中斷密切相關(guān)的坑中斷嵌套使用的堆棧。問(wèn)題場(chǎng)景假設(shè)你使能了中斷嵌套即高優(yōu)先級(jí)中斷可以打斷低優(yōu)先級(jí)中斷。當(dāng)任務(wù)A運(yùn)行時(shí)一個(gè)低優(yōu)先級(jí)中斷ISR1發(fā)生。在ISR1執(zhí)行過(guò)程中一個(gè)更高優(yōu)先級(jí)的中斷ISR2發(fā)生并打斷了ISR1。此時(shí)CPU使用的是中斷堆棧對(duì)于Cortex-M可能是主堆棧MSP也可能是進(jìn)程堆棧PSP取決于配置而不是任務(wù)A的堆棧。關(guān)鍵點(diǎn)FreeRTOS的堆棧溢出檢測(cè)只檢測(cè)任務(wù)堆棧。如果中斷嵌套層次太深或者某個(gè)ISR內(nèi)局部變量過(guò)大導(dǎo)致中斷堆棧溢出FreeRTOS的檢測(cè)機(jī)制是捕捉不到的這會(huì)導(dǎo)致極其難以排查的內(nèi)存踩踏和隨機(jī)崩潰。避坑指南估算中斷堆棧需求分析你的中斷嵌套最大深度以及每個(gè)ISR中局部變量的大小。為整個(gè)系統(tǒng)預(yù)留足夠的中斷堆??臻g在啟動(dòng)文件或鏈接腳本中設(shè)置。限制中斷嵌套除非必要盡量避免中斷嵌套。合理配置NVIC的搶占優(yōu)先級(jí)和子優(yōu)先級(jí)。ISR內(nèi)節(jié)約??臻g避免在ISR內(nèi)定義大型數(shù)組或復(fù)雜結(jié)構(gòu)體。使用全局變量或靜態(tài)變量需注意重入問(wèn)題來(lái)替代大的局部變量。使用工具輔助一些IDE如IAR、Keil和調(diào)試器有堆棧使用分析功能可以監(jiān)控運(yùn)行時(shí)堆棧的最大使用深度幫助你合理設(shè)置堆棧大小。4.3 “l(fā)vgl開(kāi)啟freertos運(yùn)行不了”LVGL一個(gè)流行的嵌入式GUI庫(kù)與FreeRTOS結(jié)合使用時(shí)經(jīng)常出現(xiàn)初始化失敗、卡死或顯示異常。這通常不是LVGL或FreeRTOS單獨(dú)的問(wèn)題而是兩者協(xié)作時(shí)對(duì)中斷和任務(wù)同步的要求沒(méi)有滿足。常見(jiàn)原因一LVGL的心跳tick來(lái)源錯(cuò)誤。LVGL需要周期性的心跳lv_tick_inc()來(lái)驅(qū)動(dòng)動(dòng)畫(huà)、定時(shí)器等。這個(gè)調(diào)用絕對(duì)不能放在SysTick中斷服務(wù)程序xPortSysTickHandler中直接調(diào)用因?yàn)閘v_tick_inc()內(nèi)部可能調(diào)用lv_timer_handler()而后者可能執(zhí)行重繪等操作這些操作可能不是中斷安全的并且耗時(shí)較長(zhǎng)違反ISR“快進(jìn)快出”原則。正確做法在FreeRTOS中創(chuàng)建一個(gè)高優(yōu)先級(jí)定時(shí)器任務(wù)使用xTaskCreate或軟件定時(shí)器xTimerCreate在這個(gè)任務(wù)中周期性地調(diào)用lv_tick_inc(1)和lv_timer_handler()。確保這個(gè)任務(wù)的優(yōu)先級(jí)高于LVGL的主任務(wù)lv_task_handler所在任務(wù)以保證GUI響應(yīng)的及時(shí)性。常見(jiàn)原因二LVGL的顯示display和輸入設(shè)備indev驅(qū)動(dòng)與中斷沖突。如果你的顯示驅(qū)動(dòng)如SPI DMA傳輸完成中斷或觸摸驅(qū)動(dòng)外部中斷中需要調(diào)用LVGL的刷新或讀取函數(shù)必須確保這些調(diào)用是通過(guò)FromISR安全API通知LVGL任務(wù)去執(zhí)行而不是在ISR中直接調(diào)用LVGL的API。解決方案模板// 1. 創(chuàng)建LVGL相關(guān)任務(wù)和通信對(duì)象 QueueHandle_t xLvglRefreshQueue; TaskHandle_t xLvglTaskHandle; // 2. 在顯示驅(qū)動(dòng)DMA完成中斷中 void DMA2_Stream3_IRQHandler(void) { BaseType_t xHigherPriorityTaskWoken pdFALSE; if(DMA_GetITStatus(DMA2_Stream3, DMA_IT_TCIF3)) { // 發(fā)送一個(gè)刷新請(qǐng)求到隊(duì)列而不是直接調(diào)用 lv_disp_flush_ready uint8_t dummy 1; xQueueSendFromISR(xLvglRefreshQueue, dummy, xHigherPriorityTaskWoken); DMA_ClearITPendingBit(DMA2_Stream3, DMA_IT_TCIF3); } portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } // 3. LVGL主任務(wù) void vTaskLvgl(void *pvParameters) { // LVGL初始化... lv_init(); // 顯示和輸入設(shè)備初始化... for(;;) { // 處理來(lái)自中斷的刷新事件 uint8_t refreshReq; if(xQueueReceive(xLvglRefreshQueue, refreshReq, 0) pdPASS) { // 在任務(wù)上下文中安全地通知LVGL刷新完成 lv_disp_flush_ready(disp_drv); } // 執(zhí)行LVGL任務(wù)處理器 lv_task_handler(); vTaskDelay(pdMS_TO_TICKS(5)); // 延遲一段時(shí)間比如5ms } } // 4. 高優(yōu)先級(jí)的Tick任務(wù) void vTaskLvglTick(void *pvParameters) { const TickType_t xFrequency pdMS_TO_TICKS(1); // 1ms心跳 TickType_t xLastWakeTime xTaskGetTickCount(); for(;;) { lv_tick_inc(1); // 提供1ms心跳 vTaskDelayUntil(xLastWakeTime, xFrequency); } }4.4 “freertos移植標(biāo)準(zhǔn)庫(kù)”與中斷向量表處理將FreeRTOS移植到使用標(biāo)準(zhǔn)外設(shè)庫(kù)StdPeriph的STM32項(xiàng)目時(shí)中斷向量表的管理是一個(gè)關(guān)鍵點(diǎn)。核心問(wèn)題FreeRTOS為了管理PendSV和SysTick中斷需要提供自己的SVC_Handler、PendSV_Handler和SysTick_Handler實(shí)現(xiàn)。但標(biāo)準(zhǔn)庫(kù)的啟動(dòng)文件如startup_stm32fxxx.s已經(jīng)用Weak符號(hào)定義了這些中斷向量并鏈接到了庫(kù)中的默認(rèn)函數(shù)可能是空函數(shù)。解決方案方法一推薦修改啟動(dòng)文件。找到啟動(dòng)文件中的這三行.weak SVC_Handler .thumb_set SVC_Handler,Default_Handler .weak PendSV_Handler .thumb_set PendSV_Handler,Default_Handler .weak SysTick_Handler .thumb_set SysTick_Handler,Default_Handler將它們注釋掉。這樣鏈接器就會(huì)使用FreeRTOS移植層port.c中提供的強(qiáng)符號(hào)實(shí)現(xiàn)而不是Weak的Default_Handler。方法二確保正確鏈接。如果你不想修改啟動(dòng)文件必須確保在鏈接時(shí)FreeRTOS的port.c其中包含了這些處理函數(shù)的強(qiáng)定義的編譯單元被正確鏈接并且其符號(hào)優(yōu)先級(jí)高于啟動(dòng)文件中的Weak符號(hào)。這通常取決于編譯鏈接的順序不如方法一可靠。移植后驗(yàn)證成功移植后在調(diào)試器中你應(yīng)該能看到SVC_Handler、PendSV_Handler和SysTick_Handler的地址指向FreeRTOSport.c文件中的函數(shù)而不是啟動(dòng)文件中的Default_Handler。5. 中斷優(yōu)先級(jí)配置NVIC與FreeRTOS的優(yōu)先級(jí)映射這是另一個(gè)容易混淆的重災(zāi)區(qū)。Cortex-M內(nèi)核的NVIC中斷優(yōu)先級(jí)和FreeRTOS的任務(wù)優(yōu)先級(jí)是兩套獨(dú)立的系統(tǒng)但它們通過(guò)一個(gè)關(guān)鍵的宏configMAX_SYSCALL_INTERRUPT_PRIORITY或configMAX_API_CALL_INTERRUPT_PRIORITY產(chǎn)生了交集。5.1 兩套優(yōu)先級(jí)體系NVIC中斷優(yōu)先級(jí)數(shù)字越小優(yōu)先級(jí)越高。它決定了硬件中斷之間的搶占關(guān)系。通常分為搶占優(yōu)先級(jí)和子優(yōu)先級(jí)。FreeRTOS任務(wù)優(yōu)先級(jí)數(shù)字越大優(yōu)先級(jí)越高。0是空閑任務(wù)優(yōu)先級(jí)configMAX_PRIORITIES-1是最高優(yōu)先級(jí)。5.2 臨界區(qū)保護(hù)與中斷屏蔽FreeRTOS通過(guò)taskENTER_CRITICAL()和taskEXIT_CRITICAL()來(lái)實(shí)現(xiàn)臨界區(qū)一段不能被中斷的代碼。它的實(shí)現(xiàn)原理是提升中斷屏蔽優(yōu)先級(jí)。configMAX_SYSCALL_INTERRUPT_PRIORITY或configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY定義了一個(gè)優(yōu)先級(jí)閾值。所有優(yōu)先級(jí)數(shù)值高于即邏輯優(yōu)先級(jí)低于這個(gè)閾值的中斷會(huì)被FreeRTOS的臨界區(qū)API屏蔽。而優(yōu)先級(jí)數(shù)值低于即邏輯優(yōu)先級(jí)高于這個(gè)閾值的中斷不會(huì)被屏蔽稱為“不受FreeRTOS管理的高優(yōu)先級(jí)中斷”。為什么這么設(shè)計(jì)為了保證極硬實(shí)時(shí)性。比如電機(jī)控制的PWM中斷、緊急故障檢測(cè)中斷必須保證其響應(yīng)延遲是確定且極短的不能被任何軟件操作包括操作系統(tǒng)內(nèi)核所延遲。因此它們被配置為高于configMAX_SYSCALL_INTERRUPT_PRIORITY的優(yōu)先級(jí)FreeRTOS動(dòng)不了它們。5.3 配置實(shí)戰(zhàn)與常見(jiàn)錯(cuò)誤假設(shè)你使用STM32NVIC使用4位優(yōu)先級(jí)分組16個(gè)優(yōu)先級(jí)。FreeRTOS常見(jiàn)的配置如下// 在 FreeRTOSConfig.h 中 #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5這意味著NVIC優(yōu)先級(jí)數(shù)值從5到15共11個(gè)優(yōu)先級(jí)的中斷可以被FreeRTOS的臨界區(qū)屏蔽并且可以在其中安全調(diào)用FromISR的API。而優(yōu)先級(jí)數(shù)值從0到4共5個(gè)優(yōu)先級(jí)的中斷是“不受管理”的高優(yōu)先級(jí)中斷絕對(duì)不能在其中調(diào)用任何FreeRTOS的API包括FromISR版本。配置步驟確定你的系統(tǒng)中哪些中斷需要“不受管理”的硬實(shí)時(shí)性如PWM、緊急停止。將它們配置為NVIC優(yōu)先級(jí)0-4。將與FreeRTOS通信的中斷如UART、定時(shí)器、外部按鍵配置為優(yōu)先級(jí)5-15。通常SysTick和PendSV中斷的優(yōu)先級(jí)會(huì)由FreeRTOS端口自動(dòng)設(shè)置在一個(gè)合適的值比如最低優(yōu)先級(jí)15。在NVIC初始化時(shí)注意優(yōu)先級(jí)數(shù)值的轉(zhuǎn)換。NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority字段填寫(xiě)的是優(yōu)先級(jí)數(shù)值不是位段。例如配置為優(yōu)先級(jí)5就直接填5。一個(gè)典型錯(cuò)誤將UART中斷優(yōu)先級(jí)設(shè)置為2一個(gè)高優(yōu)先級(jí)然后在它的ISR中調(diào)用了xQueueSendFromISR。在臨界區(qū)中這個(gè)中斷不會(huì)被屏蔽如果此時(shí)任務(wù)正在操作隊(duì)列而中斷也來(lái)操作就造成了數(shù)據(jù)競(jìng)爭(zhēng)可能導(dǎo)致隊(duì)列內(nèi)部數(shù)據(jù)結(jié)構(gòu)損壞引發(fā)各種詭異崩潰。這種錯(cuò)誤在壓力測(cè)試下才會(huì)暴露非常難查。排查口訣凡是調(diào)用了FromISR系列API的中斷其N(xiāo)VIC優(yōu)先級(jí)數(shù)值必須大于等于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY。這是保證FreeRTOS中斷管理安全運(yùn)行的黃金法則。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷在线播放| 天天激情综合| 99久热这里只有精品| 天天操婷婷| 五月天色色网站| 色色色欧美色色| 最新久久99视频网站| WWW,五月| 婷婷五月天成人小说| 99乱视频| 国产综合A片| 国産精品| 婷婷五月天欧美| 日韩影院三级| 懂色av蜜臀av粉嫩av永陈冠希| 久99久精品| 在线观看五月婷婷网| 国产在线激情视频| 99热啪啪| 久久婷婷亚洲| 婷婷基地爱| 丁香五月激情视频在线| 天天天久久久| 超碰操网| 久99久热| 五月色丁香| 五月J香蕉婷婷| 色狠狠婷婷| 久久久天天啊| 五月丁香激情综合网| 亚洲人妻一区二区 | 狠狠婷婷综合| 婷婷终合色图| 人人草人人视| 97香蕉碰碰人妻国产欧美| 99网| 久人人操| 超碰五月婷婷五月天| 九九在线视频| 九九在线视频| 色五月天在线观看| 99视频精品在线| 丁香五月六月婷婷综合| 成人开心五月天| 深爱激情久久| 天天舔天天插天天干| 欧美影院婷婷| 色色丁香| 99热国产这里只有| 激情黄色五月天| 爱性综合网| www.maotanji.com| 九月婷婷| 日韩三级片一区二区| 色婷av| 91狼友视频网页更新| 婷婷综合网站| 日本欧美成人片AAAA| www九九热| 久久久久久激情| 狠狠操狠狠操| 26uuu| 九九热九九| 色色热| 日本五月天婷婷丁香| 五月激情五月婷婷五月天在线| 婷婷成人丁香色情基地30 | 涩综合婷婷| 色婷婷色人人射| 俺五月| 五月婷婷中文网| 久久99热精品a片在线观看| WWW色综合| 色综久久久| www.五月天婷婷姐姐| 凹凸探花电影| 日本美女五月天| 色色99| 日韩成人av在线| 丁香五月婷婷影院| 夜色五月天| 五月天小说激情| 五月色丁香婷婷综合| 色婷婷aV四虎| 婷婷激情五月综合| 久久这里只有国产视频| 欧洲亚洲免费视频9| 婷婷五月天精品| 狠狠干狠狠干| 69精品无码一区二区三区| 九九综合图片网| 色www.con| 欧美久热| 激情五月深爱婷婷| 色婷婷六月| 草草色情综合网| 97超碰欧美中文字幕| 777久久久| 天天搡日日搡aaaaⅩ| 五月丁欧美| 婷婷五月情色| Av大香蕉| 东北熟女高潮99综合99| 久热这里只有精品在线观看 | 天天插天天日天天爽| 初夜av| 天天干夜夜谢| 久久怡红院| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 婷婷五月天黄色| 六月婷婷五月丁香首页| 青青草五月天| 五月J香蕉婷婷| 久久五月天网| 丁香成人色情五月天| 狠狠操狠狠操| 国产jd1024基地手机看国产| 激情五月图| 天天日夜夜曹| 五月伊人91| 丁香五月情| 婷婷综合成人五月天| 久热免费| 亚洲国产黄色电影| 天天操天天日天天爽| www999日韩精品| 色一情一乱一乱一区91Av| 国产中文字幕在线视频免费观看| site:ornaments52.com| 天天爽天天| 91亚洲天堂| 五月丁香网中文字幕| 婷婷成人五月天成人文学| 色色热| 激情综合在线播放| 五月婷婷亚洲| 九九热91| 播五月,色五月,开心五月播放器| 99综合入口| 五月婷婷干干干| 开心激情网五月天| 91九九精品| 色综合久久天天综合网| 久久在线视频免费观看| 五月激情四射婷婷丁香| 26uuu国产| 久久丁香婷婷五月| 婷婷五月天天天| 色色色com| 欧美五月丁香啪啪响视频| 妻久久人久久| 色婷婷色九月| 五月丁香福利| 狠狠做五月| 在线中文av| 五月天婷婷色情| 丁香六月色婷婷综合| 99这里有精品| 久久99热 这里有精品| 久久狠狠干| 开心五月婷婷婷美女| 婷婷五月18永久免费视频| 99成人| 99色区| 激情五月天色色| 夜色综合网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 中文字幕激情综合| 日韩成人中文字幕| 九九蜜臀精品| 成人国产欧美大片一区| 婷婷激情啪啪| 色婷婷91| 99视频在线| 99久久婷婷国产综合精品草原| 丁香蜜臀黄色婷婷五月天| 丁香五月婷婷大香蕉| 色婷婷亚洲五月天| 久久婷婷热| 激情五月天色色网| 婷婷五月天直播| 人人播| 99热国品免费| 婷婷五月天性色| 天天模,夜夜模夜夜爽| 色色丁香| 久久九九大香蕉电院| 成人丁香婷婷| 激情五月天婷婷| 久久免费丁香| 五月天色色网站| 热的国产,热的综合,热的有码| 色久综合| 五月综合无码| 亚洲一色色色色色色色色| 天天日日夜夜| 婷婷丁香小说| 五月丁香爱婷婷深深| 欧美黄色一级| 思思99热这里只有精品| 99久久99九九九99九他书对| 97超碰在线免费观看| 26uuu亚洲| 久久大香蕉伊人| 五月婷婷激情综合av| 丁香五月婷婷99| 亚洲人人操| xx久久| 99视频内射三四| 亚洲色婷婷| 亚洲精品久久久久久久久久吃药 | 色婷婷婷婷| 亚洲婷婷五月天| 婷婷深爱五月亚洲综合| 久久婷婷五月综合一| 久草热在线视频| 五月丁香婷婷久久| 91女人18毛片水多国产| 婷婷在线视频| 色色综合色| 久热人妻| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 狠狠丁香| 超级97碰碰| 九九热re99re6在线精品| 人人玩人人橾| 婷婷五月天久久综合88| 国产日韩精品SUV| 26UUU欧美| 久久99久久99久久99人受| 极品少妇XXXX精品少妇偷拍| 强伦轩人妻一区二区电影| 丁香婷婷激情综合五月激情| 狠狠色97| 亚洲情欲久久| 成人中文网| 婷婷伊人综合中文字幕| 五月天婷婷视频| 五月丁香美女视频| 99综合熟女| 激情综合五月色在线| 亚洲免费成人电影AV| 丁香五月大香蕉| 亚洲天码视频www蛋播视频| 五月色婷婷影院| 亚洲网站观看视频| 超碰免费在线| 日本va欧美va国产激情| 蜜臀av粉嫩av懂色av| 丁香五月第九色| 色情婷婷。| 热久久婷婷| 婷婷五月天成人网| 玖玖资源在线视频| 99在线视频精品| 婷婷免费无视频| 在线网黄| 婷婷久月| 天天日夜夜欢| 婷婷五月天黄色网址| 97精品人人A片免费看| 97色热| 深爱激情六月| 骚货艹网站视频| 婷婷亚洲五| 亚洲综合999| 五月刺激丁香月综合| 欧美在线干| 一区视频网站| 97在线刺激| 99九九精品| 天天插夜夜爽| www.人人操人人看人人想人人摸 人人人人操,COM | 日韩色五月| 婷婷丁香亚洲五月天| 色99在线| 久久婷婷五月| 五月天五月色婷婷综合| 丁香蜜臀黄色婷婷五月天| 九九99男女视频在线观看| 五月停视频天堂| 亚州美女| 激情玖玖综合网| 野战J办公桌椅H| 亚洲国产无线乱码在线观看| 色色色激情网| 影音先锋综合网| 成人AV片播放| 人妻在线网站| 五月丁香啪啪综合网| 丁香五月最新网址| 久天综合| 丁香亭亭久久| 思思热在线视频99| 欧美五月丁香| 91精品久久久久久77777| 五月丁香成年黄色| 日本乱子人伦在线视频| 亚洲黄网AV| AV片在线观看| 久久婷婷国产| 婷婷五月天综合蜜桃| 亚洲精品操一操、噜一噜、摸一摸、爽 | 色色无码| 99视频啪啪| 丁香六月av| 99色免费| 婷婷六月丁香在线| 五月婷婷亞洲中文| av色婷婷| 人妻丰满精品一区二区A片| 日韩欧美成人一区二区三区| 丁香五月WWW| 九九色之九九色之88| 五月天激情四射网站| 九热精品| 开心五月丁香啪| www.五月天婷婷| 亚洲综合1024| 七月丁香婷婷 色色| 99热亚洲综合| 色婷婷91激情小说| 日本操逼九九九九58日本操逼| 色五月女| 婷婷色婷婷| 人人操人人添人人摸97| 国产韩日亚洲美州欧亚综合在线| 五月久久亚洲| 久久永久视频| av五月天婷婷丁香| 91viP在线看| 免费观看的AV| 五月丁香婷婷基地| 色色婷婷婷丁香五月天| 亚洲性图一区二区三区| 99视频久久| 丁香五月五月婷婷欧美大香蕉| 色护士综合| 丁香六月 婷婷六月| 天天色综合网吨吧| 五月天电影网| 久热无码| 久久九九@| 农村熟妇高潮精品A片| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 五月丁香六月婷婷啪啪综合| 欧美综合五月丁香五月天| 色五月色五天色情网| www.五月婷婷| 日本性激情色播| 9久热在线视频精品| 丁香六月婷婷激情| 中文AV网| 色噜噜狠狠色综合成人网| WWW.99热| 五月丁香婷婷爱| 玖玖热99| 99热在线只有精品| 国产综合丁香五月天| 色丁香五月婷婷| 婷婷五月天综合小说网| 搡BBBB搡BBB搡18| 99九九在线精品热动漫| 亚洲欧美国产高清vA在线播放| 99re这里| 日韩无码成人电影| 九色无码| 婷婷五月天情色| 久久在线人妻| 超pen个人视频97| 91人妻人人做人碰人人爽九色| 色综合综合色| 丁香花社区av| 激情婷婷狠狠干| 丁香激情网| 91视频精品99| 婷婷少妇激情| 91干| 啪啪综合网| 亚洲性爱电影| 91精品国产99久久久久久天美| 91碰免费视频| 婷婷丁香五月综合激情小说| 精品久久久久成人码免费动漫| 狠狠干综合| 日本狠狠干| 久久九九婷婷| 婷婷色操| 九九热AV| 九九人人操| 日本三级大片| 亚洲综合激情五月久久| 婷婷九月丁香久久| 久久婷婷六月综合综合| 97碰人人操| 五月天丁香婷婷社区| 九九热这里只有精品6| 壅壅儕家a| 天天干天天干天天干天天干天天干| 五月丁香婷婷激情图片| 思思久久99| 色五月婷婷天堂| WWW.婷婷| 九九热99视频| 九九热视频在线观看| 亚洲天堂99| 婷婷六月色| 九九精品热| 五月天婷婷激情在线色图| 婷婷久久综合久| 五月天激情小说| 大香蕉久久伊人婷婷五月丁香| 色五月婷婷丁香五月| 久久综合爱| 狠狠色成人影片| 五月色情婷婷| 97色 五月天丁香| 婷婷五月亚洲一本在线丁香| 婷婷无码视频| 不卡在线超碰| 五月丁香亭亭| 99热99热在线观看| 991自拍视频| 婷婷五月综合网| 亚洲色综合| 丁香五月自拍| 99成人小视频| 91操人| 亚洲精品无AMM毛片| 精品少妇蜜臀91| 香蕉99网| 婷婷激情综合| 79色色| 久热 91| 拍真实国产伦偷精品| 严洲天天插| 久久九九精彩| 麻豆WWWCOM内射软件| 激情五月狠狠| 成人婷婷五月天| 丁香五月婷婷少妇| 国产精品色| 天天做好综合色| 玖玖综合色| 丰满少妇猛烈A片免费看观看| 丁香婷婷月| 色激情综合狠狠婷婷| 91男人资源站| 日本色色影片| 夜夜骑夜夜操| 五月激情综合网| 99无码免费视频| 日本丁香久在线| 九九这里只有精品| 91色噜噜狠狠狠狠色综合| 人人干人人操人人摸人人做| 色婷婷小说| 国内9l视频自拍老熟女九色| 99在线精品视频| 亚洲va欧美va天堂v国产综合| 99re热精品视频国| 久热中文字幕| 91xxxx九色| 日韩成人精品中文字幕电影| 久久草大香蕉| 91大神操美女| 综合网五月| 激情婷婷五月天网址| 欧洲精品爱爱| 成人AV综合在线| 欧美成人AAA片一区国产精品| 亚洲成人影视在线观看| 五月天桃色深爱网| 久久综合天天综合| 色五月 激情婷婷 综合五月天| 日韩操逼大片| www.综合久久.com| 久久五月天丁香| 无码少妇高潮喷水A片免费| 久久人人九九| 操97免费超级视频| 思思热这里只有精品| 69激情小说| 丁香六月婷婷综合色| 激情床戏| 五月婷啪啪| 玖玖热99| 婷婷六月综合基地| 人人操女人| 亚洲国产色婷婷| 99爱操| 无码视频国内精品久久久| 久久婷婷精品| 五月丁香成人网| 色色色图| 五月丁香色色网| 婷色五月| 色色99| 亚洲人人操| 日日操夜夜爽| www五月| 五月天开心网| 精品香蕉99久久久久网站| 亚洲综合色色色| 日本99久久| 91丨九色丨东北熟女| 久色网址| 人妻人人操| 亚洲综合激情五月久久| 国产精产国品一二三在观看| 七月丁香婷婷 色色| 精品久久久91久久影视网| 内射在线CHINESE| 亚洲国产精品VA在线看黑人| 黄色高清无码| 9超碰在线| 在线视频激情网站| 成人亚洲精品| 婷婷五月天伦理| 亚洲瑟瑟精品在线| 久久激情网| 男人天堂99| 色婷婷久久| 无码免费人妻A片AAA毛片西瓜| 九八Av| 在线sebiav精品视频| 婷婷五月丁香综合桃花色网| 超碰九色| 精品人妻久久久久久久| 欧美综合激情丁香五月六月婷| 97婷婷丁香| 色五月 五月婷婷| 婷婷五月激情黄色| 九九综舍久久| 嫩草综合网| 婷婷香五月天| 99人人干| 丁香婷婷婷五月综合色情| 婷婷香蕉| Www.激情| 五月丁香综合啪啪| 啪精品| 五月花综合网| 五月婷婷在线视频| 国产精品久久久久久妇女6080 | xxx.色婷婷| 色婷婷狠狠爱| 国产人人操| 99精品热视频只有精品10| 99热精这里只有精品| 五月婷婷六月丁香| 色播jjjj| 99久久这里只有精品免费官网| 天天做夜夜爽| 欧类av怡春院| 成人噜噜网| 色色色图| 九九爱激情| 色婷婷AAA| 无码人妻一区| 超碰人人摸人人操| 美女天天艹人人爽| 亚洲激情av| 五月天婷婷丁香人人操91| 丁香亭亭久久| 亚洲成人综合在线| 五月丁香激情综合六月涩涩爱| 99热这里只有精品23| 综合久久99| 色九九九九| 丁香五月网在线观看| 激情色色色| 99免费热视频在线| 五月天播播| 青青久久五月| 天天操夜夜肏| 99色爱| 丁香久色| 日本人妻伦在线中文字幕| 26uuu青青| 99热1| 欧美性久| 色婷另类| 97视频91| 国产毛片精品一区二区色欲黄A片| 五月婷中文字幕| 久久婷婷91| 99视频久久久| 婷婷丁香九月| 91操碰| 色婷婷狠狠| 色吧综合网| 婷婷丁香人妻天天爽| 伊人久久大香网| 97视频91| 色一区高清| 成人在线视频网| 新久久五月天激情| 国产人妻777人伦精品HD| 桔色成人官方网站| 97人人干视频| 成人va在线播放| 九九人人看| 丁香五月天社区| 综合五月丁香六月婷婷| 精品久久9| 99自拍视频在线| 天天操天天操天天操天天操天天操| 99操99| 激情小说五月天| 日韩精品色| 久婷婷久草| 99这里只有精| 黄色99视频| 性按摩玩人妻HD中文字幕| 婷婷五月天亚洲综合网| 99碰碰中文| 亚洲精品99| 激情五月天在线| 碰碰碰97国产| 九月激情网| 99综合99| 成人婷99最新| www91色网站| 色综合久久888| 最新亚洲色色网| 五月亭亭色| 九月婷婷| 亚洲免费婷婷| 精品一区二区三区四区五区六区介绍 | 精品9久| 97精品欧美91久久久久久久| 热99只有精品| 黄色AV日韩| JlZZJlZZ8JlZZ亚洲熟女| 久久人人九| 午夜 外网 精品 在线| 欧美婷婷精品激| 丁香六月综合激情| www.99日本| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色激情五月天| 九九热99精品在线| 色啪综合| 免费看片在线观看| 天天揷综合网| 色婷婷综合网| 五月婷婷九| 亚洲六月婷| 大香蕉综合网| 99在线视频播放| 日韩啪啪自拍| 色色欧美。| 久久久久久人妻| 综合99久久天天综合| 可以直接看的AV网站| 在线观看五月婷婷网| 黄色一级影片| 超碰人人操人人9| 久久久久久久11111111111| 五月丁香黄色视频| 久久超级碰碰| 激情综合色婷婷啪啪六月天| 少妇激情五月天| 常久最新免费的色吊丝| 日韩无码人妻一区二区三区综合| 五月婷婷激情综合在线| 婷婷五月天成人网| 国产在线黄色| 婷婷五月天堂| 超碰操网| 婷婷五月天综合激情| 91精品国产99久久久久久天美| 六月丁香啪| av人人操| 99综合成人视频在线观看| 99综合97| 色九月丁香婷婷蜜桃在线观看| 欧美婷婷色| 丁香五月天大香蕉啪啪| 丁香六月丁香婷婷激情| 色色色九九九五月婷婷| 夜色热久| 九九热在线视频观看免费10| 99啪在线| 51XX午夜影福利| 人妻综合网| 噜噜噜噜噜久| 天天爽日日搞| 免费播放99性爱视频| 99热只有这里才是精品| 色色色免费视频| 色色日本| 成人av播放| 婷婷视频网| 九九aV| 操人妻AV| 色欧美日| 九九精品网站| 中文字幕丁香五月| 五月婷婷综合在线观看| 来吧亚洲综合网| 五月婷婷黄色| 国产欧美熟妇另类久久久| 久久A极片| 人人操人人添人人摸97| 色色吧综合| 天天日夜夜草进麻麻的子宫| 婷婷亚洲欧美丁香五月| 色色色婷婷五月| 人人播| 五月天久久婷| 综合久久高清| 5月丁香综合网| 日日噜狠狠色| 99日本精品视频热| 婷婷丁香综合网| 婷婷色在线视频| 亚洲激情 久久| 婷婷丁香五月亚洲免费| 99色网站| 伊人久久大香线蕉精品| 久久久宗合| 天色综合网站| 婷婷丁香宗合888| 日本欧美成人片AAAA| 91丨九色熟女丨首页| 天天操夜夜爽天天操| 日日操天天爽| 亚洲色热| 最新日韩久热免费视频看看| 久久在线视频只有这里有精品| 国产精品人人妻人人爽| 丁香五月影院| 色色色五月婷| 丁香五月,激情五月,深爱五月| 91偷拍视频| 综合网精品99| 天天日天天干天天爱| 婷婷基地爱| 国产精品色色| 激情久久肏屄视频| 久久偷拍综合五月天| 丁香六月激情| 色欲色天天香综合| 99热精品在这里| 少妇出轨做爰高潮A片| 婷婷丁香宗合888| 国产精品热搜丁香五月婷婷| 亚洲操人| 在线成人网站| 激情九色| 99re久热| 狠狠草综合网| 无码少妇高潮喷水A片免费 | 亚洲五月天天| 亚洲色久| 另类伊人婷婷| 另类激情五月在线视频欧美| 亚洲黄网在线| 婷婷丁香五月六月激情| 婷婷五月综合在线| 色情综合网| 97视频久久| 91精产一区三区免费观看| 天天插天天操| 影音先锋五月天婷婷丁香在线观看| 五五月丁香花激情综合网| 日本久久高清| 一区二区免费看| 日本天天色| 亚洲激情| 久久丁香综合| 亚洲成人网站在线| 亚洲欧美婷婷五月色综合| 91久久九九| 久久九九视频| 97AV人人插人人操| 免费视频99| 亚洲AV无码成人精品区电影网| 五月丁香在线综合| .肏屄视频一区二区| 999影院成人在线影院| 色色综合网。| 丰满熟女人妻一区二区三| 五月天婷婷激情四射综合| 99在线亚洲| 五月天激情日色在线| 日本VA视频| 一起草av在线观看| 激情五月天综合网| 久久停停超碰| 激情第四色| 五月情四婷婷| 91嫩草国产线观看亚洲一区二区| 亚洲狠狠狠| 久久久五月天婷婷成人网| 色综合久久88色综合天天99| 碰碰人人漕| 情色五月天网站| 婷婷激情四射| 欧美人与性动交CCOO| 开心五月婷婷在线| 成人在线观看一区| 丁香婷婷六月天| 久久人妻久久久久| yazhoujiqingav| 丁香婷婷色五月| 蜜桃婷婷狠狠久久| 五月丁香色婷婷| 五月丁香天堂网婷婷| 九热av| 九九99九九99| 丁香五月 综合| 五月桃花网综合| 丁香五月天狠狠| 色婷婷综合网站| 日本人妻伦在线中文字幕 | 丁香五月天.com| 5月激情天| 青青草视频福利| 啪啪夜久久| 久久婷婷视频| 色婷婷成人| 七七色色综合| 色综合视频| 99er6| 久久综合55| 夜夜操天天干| 五月婷婷天天色| 国产黄大片在线观看画质优化 | 丁香婷婷婷五月综合色情| 99热这里是精品| 婷婷五月色播放| 亭亭玉月丁香| 日本黄色一级| 五月丁香婷婷综合激情基地| 大香蕉狼人久久| 国产色香蕉精品五夜婷| 五月婷婷色| 日韩成人影片在线观看| 999热成人在线综合网| 99色在线| 色色色com| 婷婷五月深深的爱| 射琪琪| 中文字幕在线免费看线人| 少妇搡BBBB搡BBB搡毛茸茸 | 激情综合网激情五月网| aaa久久| 热久久999| 天天干天天操天天拍| 五月天社区狠狠| 播五月婷婷开心| 婷婷九月在线| 97色五月婷婷在线| 国产成人亚洲综合A∨婷婷| 婷婷五月亚洲一本在线丁香| 色五月婷婷成人视频| 丁香婷色| 欧美操我| 九九精品大香蕉| 在线播放中文字幕| 五月丁香成人| 国产性爱亚洲是图| 丁香婷婷伊人| 大波美女VA网站| 婷婷六月色开| 丁香婷婷色情| 91综合在线观看| 五月婷婷很很色| 91九九| 久热9| 五月丁香色婷婷久久| 色婷亚洲| 久久这里只有精品网| 色婷婷五月天天天天天| 超碰91在线| 玖玖激情五月天| 婷婷伊人视婷婷婷| 9久热在线精品| 26uuu色五月| 爆乳熟妇一区二区三区四区| 六月婷婷色综合| 激情www| 久久婷五月婷| 五月停亭六月,六月停亭的英语 | 六月丁香色色| 丁香五婷婷| 久婷婷五月天影院| 精品99在线观看| 日韩xx在线| 伊人久久大香线蕉综合网站| 五月婷婷激情在线| 五月刺激丁香月综合| 在线综合亚洲欧美65| 久久婷婷五月综合色丁香花| WWW色五月| 欧美A片在线视频免费观看| 色婷婷五月天av在线| 偷拍九九热| 嫩草视频| www,色综合| 激情五月婷黄版| 六月婷婷七月丁香| 欧洲综合视频| 九九精品热| 狠色狠色狠狠色综合网| 激情伊人六| 激情都市五月天| 99日这里只有精品| 色五月人妻| 五月婷婷深深爱| 99自拍视频在线| 亚洲综合另类| 人与禽A片啪啪| 五月婷婷亚洲天堂97色婷婷| 99色在线视频观看| 色婷婷免费视频| 热中文字幕| 美女婷婷六月色| 就爱射中文字幕资源网| 久狠狠| 日日噜狠狠| CHINESE熟女老女人HD视频| WwW色婷婷| 精品99在线观看| 久久香蕉影院| 婷婷综合网伊人| 六月激情久久| 99热精品在这里| 亚洲国产精品VA在线看黑人| 国产亚洲99久久精品熟女| 色女人久久| 激情小说婷婷小说| 热99只有里视频| 九月激情综合| 免费看欧美成人A片无码| 国内久久婷婷| 丁香婷婷基地| 激情婷婷五月天在线观看| 久色大| 激情第四色| 激情淫乱男女| 五月婷婷综合热| 色色色色色网站| 婷婷激情五月综合| 五月天婷婷Av| 99热只有精品综合| 亚洲综合丁香五月天| 色婷久久| 欧美日韩一区二区三区四区| 婷婷丁香成人| 婷婷五月天综合小说网| 色色色图| 99caobi| 亚洲激情丁香五月天色| 丁香桃色网| 青青青在线视频国产| 婷婷色五月天色| 97色五月天| 天堂久久婷婷| www超碰com| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 九热久| 婷婷五月丁香综合人妻| 丁香五月婷久久| 大香伊人婷婷| 婷婷五月永远18免费久久久| 久热91精品| 五月婷狠狠| 丁香丁香激情网| 日韩精品一区二区亚洲AV观看| 日本不卡一区二区三区| 久操人妻| 99爱在线视频| 亚洲天堂婷婷| 这里只有精品99视频| WWW免费视频碰碰碰碰| 丁香五月综合网| 99热日韩这里只有精品| 久久九九爽| 五月香蕉网| 开心五月婷婷激情网| 丁香五月激情五月| 91丨九色丨熟女|新版| 操人妻视频91| 色五月丁香A欧美com| 96人人操人人操人人| 丁香五月婷婷基地| 欧美性爱中文字幕| 婷婷婷婷婷开心无码播放| 五月丁香六月激情网站| 天天网站天天爽| 中文字幕成人| 色哟哟精品| 日本久久精品18| 岛国操B不卡在线| www.成人婷婷综合| av免费在线观看0| 色综合综合色| 狠狠婷婷色| 九六五月天婷婷| 欧美色综合天天久久综合精品| 色天天综合天天综合频道。| 超碰成人电影| 大香蕉五月婷婷| 丁香花五月天激情| 超碰成人在线观看| 成人亚洲精品| 五月天激情影院| 婷婷中文在线| AV堂狠狠干| 五月天激情综合| 色色热99| 99噜噜噜在线播放| 五月婷婷亚洲综合网| 免费无码毛片一区二区A片 | 久久人人看| 国产激情AV| 亚洲综合色色| 丁香六月婷婷久久综合八月| 婷婷91| 丁香色啪综合| 91午夜婷婷狠狠久久综合9色| 色色色色色色综合| 操逼综合激情网| 婷婷五月天播播| 中文字幕丰满人妻无码专区| 九色91视频| 婷婷五月天成人网| 国内外色色色色色成人视频| 色播五月丁香综合| 99视频在线9| 五月天婷婷在线播放| www.9797国产| 99久久婷婷国产综合精品草原| 婷婷色网| 成人无码精品1区2区3区免费看| 天天插轮理| 性爱激情久久| 超碰97干| 可以免费看av网站| 99只有精品9| AA丁香综合激情| 操操啪| 成人国产欧美大片一区| 综合激情五月天六月婷免费视频| 婷婷综合网性| 丁香激情五月| 人妻VideOssS人妻高清| 免费AV在线| 久色网| 五月天激情无码| 99热99干| 婷婷大香焦| 九九精品自拍| 五月天成人在线精品| 婷婷五月天天激情| 99视频在线| 色婷婷五月网| 激情性爱五月| 丰满少妇猛烈A片免费看观看| 色 色 色综合com| 五月6香色婷婷视频| 9九九久久精品无码专区| 96精品久久久久久久久| 五月天色综合服务平台| 热久久色| 风流少妇A片一区二区蜜桃| 欧美激情综合五月色丁香| 国产免费一区二区在线A片视频| 日本不卡高字幕在线2019| 五月丁香婷婷综合| 色色永久| 99九九视频| 日本少妇裸体做爰高潮片| 婷婷色五月激情强奸四射| 伊人综合网4| 99在线精品视频| 色综合视频在线| 在线播放中文字幕| 五月天久久网站| site:hcxsz888.com| 日本人妻操| 国产精产国品一二三在观看 | 青青草99热久久精品国| 精品一二三区久久AAA片| 99热这里都是精品| 狠狠干青青草| www.日本久久videos| 婷婷丁香先锋资源网站| 午夜69成人做爰视频| 碰碰91| 色色亚洲五月天| 99久久思思| 91操人| 在线中文亚洲| 色色热日| 全部老头和老太XXXXX| 爱射综合| a久久| 激情五月天激情综合网| 五月婷婷综合激情| 99久久9| pom538精品视频| 99热日本精品| 伊人九热| 丰满少妇猛烈A片免费看观看| 色色色色色色色色网站| 婷婷综合亚洲| 久热这里只有| 婷婷丁香人妻天天久久| 九色视频这里只有精品| wWw色五月| 99色在线视频| 婷婷五月香蕉| 大香蕉天堂| 超级黄色片| 久久婷婷人人| 色婷婷情片| 97人人看一| 91xxxx九色| 免费看片操逼| 丁香五月婷婷www..com| 婷婷黄色网| 香蕉曰比| 婷婷性爱五月天丁香网| 天堂久热| 亚洲成人丁香花| 中文字幕操比影片| 青青久久五月天丁香婷婷| 婷婷五月性感| 五月婷婷激情在线| 亚洲人成网站999综合| 婷婷六月偷拍| 97碰操| 久久一品区| 97碰人人操| 久草五月婷婷| Av大香蕉| 99色6爱9热| 色五月婷婷成人视频| 青青草深爱激情网| 亚洲一区二区无码蜜乳av| www,五月天激情| 丁香五月区| 九九热在线视频| 色综合中文| 丁香六月在线| 女人高潮内射99精品| 久久精品一区二区三区四区| 超碰成人黄色网| 超碰啪啪网| 91九色在线视频| 99热在线观看| 久久国产性爱A V| 99精品在| 天天婷婷| 五月婷婷色色色| 人人摸人人| 日本一级黄色片。| 激情淫乱男女| 翔田千里 50岁 无码| 五月天婷婷久久日| 欧美综合激情五月| 丁香六月久久| 俺去也五月天婷婷| 中文字幕 中文字幕明步| 丁香五月婷婷久久久| 丁香九九九九| 五月婷婷开心色伊人| 五月天综合影院| 久操无码| 欧美交换配乱吟粗大25P| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 99热超碰| 久久全意婷婷| 99碰| 草美女在线观看视频在线播放| www.夜夜.com| 色五月婷婷基地| 国产精品日本一区二区在线播放| 丁香99| 99超级碰免费视频| 青青草日本亚洲| 激情网五月天| 日日干日日| 婷婷五月天综合网| 人人干av| 色五月激情| 九九爱精品网站| 丁香五月综合| 精品99只有。| 亚洲午夜视频| 九九综合九| 婷婷丁香成人| 天天操狠狠操| 开心激情综合| 欧美碰碰| 色婷婷五月天天天天天天天天天| 五月丁香中文| 国产精品扒开腿做爽爽爽A片唱戏| 日韩无码系列| 97婷婷丁香五月天激情图片| 色婷婷超碰| 色综合综合综合| 婷婷偷拍网| 婷婷八月丁香激情综合| 香蕉久久av一区二区三区| 久久久.COM| 成人视频婷婷| 人妻丰满精品一区二区A片| 色五月色图| 丁香狠狠色婷婷久久无码视频| 五月婷婷激情综合| 婷婷月综合| 丁香六月婷婷综合欧美| 疯狂做受XXXX高潮A片| 亚洲综合草草| 永久精品| 九九色情网站| 五月婷婷开心亚洲无| 久婷五月| 五月天啪啪网| 激情五月网站| 狠狠搞狠狠操| 99久久婷婷五月综合| 成人丁香五月天| 人妻第九页| 五月丁香六月日逼| 久久伊人五月天| 激情綜合網址| 五月激情综| AV色色天堂中文| 丁香五月狠狠综合欧美| 婷婷狠狠操| 任你爽免费视频| 五月丁香色婷婷久久| 丁香婷婷综合喷| 亚洲综合婷婷五月| 成人精品一区日本无码网 | 婷婷另类开心| 六月激情婷婷| 伊人久久艹| 综合久久97| 激情性爱五月| 婷婷五月综合啪| 玖玖激情网| 五月丁香婷婷综合网| 亚洲成人精品三区| 四月婷婷丁香| 91九九热| 99re这里只有精品视频了| 欧美A级成人婬片免费看理论| www天天干| 国产成人精品一区二区三区视频| 亚洲性爱干干| 六月激情网| 日 日干 日日做| 亚洲无AV在线中文字幕| 深爱婷婷色| 超碰国产在线播放| 丁香五月第四色88| 亚洲最大视频网站| 无码区婷婷五月花开|