免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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久久天天综合| 五月天婷婷綜合院| 成人丁香五月| 无码毛片992367| 激情五月婷婷她| 狠狠干综合| 九九色综合九九色| 人人干AV| 久久视频这里都是精品| 无码色色色色色| 婷久久久| 天天激情站| 五月丁香色色网| 久久久人妻门| 婷婷五月激情欧美大胆视频| 五月天婷婷丁香蜜桃91| 激情五月天开心网丁香无码| 狠狠搞五月天| 婷婷五月天最新综合你懂的| 五月婷网| 久久婷婷五月天懂色| 婷婷五月天A V| 五月婷在线观看| 成人免费va| 激情丁香婷婷五月天| 99久久精品亚洲综合| 久久久国产精品黄毛片| 欧洲电影在线观看免费版英语版 | 站长推荐无码播放| 一区二区传媒视频| 婷婷日本色| 人妻丰满精品一区二区A片| 午夜九九九九九九九九九九九九九| 五月丁香综合啪啪対白| 亚洲色五月天是什么| av色婷婷| 婷婷五月天最新综合你懂的 | www.9797国产| 丁香色影院| 大香蕉AV电影在线| 狠狠 久久| 91a片爽| 国产美女无遮挡裸体毛片A片| 日本久热| 日本色婷婷| 操人91| 久久人妻视频| 色色免费网站| 亚洲1区| 色婷婷99| 丁香五月天大香蕉啪啪| 岛囯综合激情网| 成人做爰黄A片免费看直播室男男| 高清无码视频网址| 精品人妻午夜一区二区三区四区 | 久草热久草在线视频| 五月天开心网| 久久综合最新网址| 久久五月激情综合| 亚洲婷婷开心五月| 五月天激情www| 99久久极情精品一区| 99丁香五月婷婷在线| 先锋资源996| 91九色在线| 激情五月综合| 激情影院免费视频婷婷五月天 | 婷婷六月丁香久| 综合五月天亚洲婷婷| 5月色婷婷| 狠狠做六月爱婷婷综合aⅴ| 丁香色六月| 五月丁香六月激情综合网| 亚洲成人一区| 开心五月综合| 特级西西4444www无码| 欧美精品99| 79精品视频在线观看,| 久久久中文| 午夜天堂啪啪| 色www.con| 久久婷婷网| 欧美噜噜久久久XXX| 丁香婷五月| 丁香五月婷婷手机| www.激情五月| 青青日韩| co超碰在线观看| 婷婷色偷拍| 久久狠狠欧美| 激情五月色婷婷| 激情综合网五月| 欧美情色一区| 亚洲五月天综合色| 在线天堂9| 精品久久人妻| 亚洲精品网址| 五月天激情网址| 日本婷婷| 日韩啪啪视品| 色七色九九| 天天日,天天插| 亚洲热热视频| www一起操| 五月丁香六月激情狠狠| 久久婷婷六月综合| 五月间天堂综合| 五月丁香亚洲校园欧美| 99.N在线视频| 日hao1区| 可以免费看AV网站| 97caop| 97日在线视频| 丁香五月婷婷大香蕉| 人妻22p| 超碰在线免费观看日韩| 五月婷婷高清| 日本久久精品| 1024手机在线观看看片_日韩精品| 久久五月人人摸| www,久久久| 日本性视频| 色五月婷婷狠狠撸| 激情五月综合网| 色老久久| 色色五月天婷婷| 人人操人| a久久免费视频| 天天干天天插| 人妻久久久久久久久| 丁香六月综合激情| 99爱视频精品在线观看| 26uuu| 婷婷婷久久久| 综激情网| 婷婷在线精品| 丁香六月啪| 任你搞网站| 综合激情站| 激情五月婷婷综合秋霞| 婷婷五月激情在线| 亚洲视频码| 亚洲va在线| 大战熟女丰满人妻AV| 婷婷久久网| 激情av在线| 精品国产a| http://www.sd-xiangsu.com/| 五月天婷婷色| 一根材五月婷成人| 五月丁香婷婷钟和色图| 色五月激情五月天| 色婷婷久久综| www夜夜| 91丨九色丨白浆秘| 99色色网| 六月丁香激情婷婷| 色五月中文字幕| 99精品亚洲| 日韩有码一区| 丁香五月欧美| 婷婷十月丁香| 婷婷五月天AV在线| www.99视频| 琪琪秋霞| 婷婷五月丁香综合瑟瑟| 亚洲午夜一区二区| 亚洲综合激情五月久久| 香蕉AV777XXX色综合一区| 襙逼网| 玖玖婷婷色欲| 99久在线精品99re5热视频| 伊人影院久久网| 色婷六月| 深爱五月中文字幕| 在线成人av播放| 五月婷婷开心网| 99资源在线视频| 激情五月六月婷婷| 狠狠插狠狠| 久久久免费图片视频| 欧美激情五月天| 九一娱乐在线观看视频| 97在线精品| 99热这只有| 日韩在线视频9色| 99爱视频在线观看这里只有精品| 伊人五月天综合网| 六月激情网| 丁香婷婷五月六月久久| 五月婷丁香久久久| 色碰碰| 婷婷成人基地| 色99热| 99热这里只有精品手机在线观看| 日韩操啪| 淫五月停停| 思思久久精品| 9999色色色色| 五月激情丁香五月| 国产精品成av人在线视午夜片| 开心婷婷五月| 99久久er| 色婷婷手机在线| 江苏少妇性BBB搡BBB爽爽爽| 婷婷伊人网| 婷婷五月天男人影院色色网| 《诡秘之主》在线观看| 色婷婷综合电影| 亚洲久热| 人人爽天天爽| 国产精品爽爽久久久久久| 2015好吊操| 久久五月丁香综合| 99欧美热| 色优久久| 天天干天天操天天拍| 五月丁香婷爱在线| 五月丁香婷在线| 人人综合久| 五月停停大香蕉| 超碰人人草| 婷婷午夜天| 亚洲丁香五月综合| 国产日产成人亚洲欧美国产VA| 碰超亚洲| 在线视频婷婷| 丁香伍月婷电影全集| 色婷婷影院| 久久精品人妻| 婷婷无码五月天| 精品乱码视频| 色久婷婷五月| 五月丁香婷婷综合网| 婷婷五月精品中文| 激情av网| www91在线| 久综合4| 色噜噜婷婷| 激情六月天| 丁香六月情| 99热99热| 色综合激情| 国产一二三四五六七八视频| 综合激情五月天六月婷免费视频| 婷婷精品综合| 五月丁香在线观看| 丁香五月婷婷AV在线| 呦呦视频无码播放| 99视频在线精品| 欧美VA在线观看| 欧美久久五月婷婷| 5月婷婷激情6月| 五月天开心色情网| 伊人婷婷五月| www.99成人视频| 狠狠干五码| 狠狠狠五月婷婷六月丁香| 五月婷婷综合网在线播放| 久久这里只有精彩| 色 丁香婷婷| 【乱子伦】黄色| 情欲综合网| 日日日日做夜夜夜夜无码 | 婷婷 激情 五月| 99久久久国产大片| 台湾佬天天日丁香婷婷五月天 | 丁香五月成人社区| 91视频五月丁香| 大婷婷色呦呦噜噜色呦呦噜噜| 亚洲va欧洲va国产va不卡| 五月婷婷人妻| 在线视频你懂得| 五月天婷婷色色| 国产欧洲欧洲精品久久| 成人做爰A片免费看视频| 五月婷色丁香| 九九综合精品| 99热只有精品在线观看| 亚洲五月花| 99热思思| 性色做爰片在线观看WW| 996热re视频在线观看视频| 99碰在线视频| 久久综合这里只有精品1| 狠狠擼综合| 色色综合视频| 久久综合五月天| 久久这里有精品| 午夜天堂一区人妻| 色哟哟精品| 激情六月丁香综合| 五月婷婷五月丁香| 色五月首页| 中文超碰视在线| 五月天之色情综合网| 五月婷婷欧美| 天天橾夜夜爽| 三级片AAA久久久AAA久久久AAA | 婷婷五月综合激情免费视频| 五月天激情电影| 日本少妇裸体做爰高潮片| 婷婷干六月综合旧址| 97干97色| 婷婷五月天综合色| 五月天激情婷婷| 极品五月天| 五月丁香影院| 丁香六月婷婷一区二区三区| 中文字幕丰满孑伦无码专区| 五月色丁香| 亚洲色色色| 丁香五月之久操视频| 99热免费精品| 色婷婷小说| 色婷婷视频在线| 天天肏视奸| 人人干人人干骚美女| 26uuu精品一区二区| 丁香五月天激情视频| 91美女啪啪| 91九九| 久久99色色| 色色色国产| 嫩草AV久久伊人妇女超级A| 五月丁香中文婷婷中文| 激情综合网激情五月欧美| 欧美婷婷| 五月激情婷婷综合| 丁香五月人妻| 色婷婷啪啪综合网| 色五月婷激情| 亚洲宗合激情| 六月丁香深深爱| 欧美六月| 五月丁香婷婷啪啪网| 亚洲国产va| 日日爽夜夜爽| 这里只有精品96| 99久在线精品| 国产成人综合网| 激情久久婷婷| 丁香六月情| 乱乱av| 在线综合婷婷| 1024亚洲无码| 这里只有精品69| 能看的AV| 六月婷婷狠狠| 日本在线播放97| 久久性爱视频免费| 202丰满熟女妇大| 99热99ai| 色婷婷狠狠干芒果TV| 日本综合久久| 久一这里有精品国产| 日日夜夜天天综合| 九九热这里有精品23| 91色久| 玖玖五月丁香| 成人av在线电影| 亚洲无码成人| 九色视频91| 免费成人va| 丁香五月中文字幕| 久久五月天合网| 婷婷五月av| 激情五月天在线观看色婷婷| WWW.桔色成人.COM| 六月亭亭久久综合激情| 丁香五月色色婷| 性爱五月丁香| 色色五月天婷婷| 91九色丨国产丨爆乳| 26uuu丁香婷婷五月| 五月丁香激| 色播综合| 亚洲色婷婷激情| www.色五月| 91视屏在线观看com.wwwvv| 思思99热| 五月草视频| 五月丁香毛片| 色婷婷六月天| 丁婷婷五月天在线播放| 99人碰碰碰| 久久机热/这里只有精品| 人人爱操| 色色亚洲99com| 五月天激情啪啪| 超碰碰碰碰| 99国产精品久久久久久久久久久| 亚洲天码视频www蛋播视频| 人妻内射一区二区在线视频| 91干在线| Va另类视频| 美女爆乳18禁www久久久久久| 久久丁香五月天| 狠狠爱婷婷爱| 字幕网AV中文字幕| 久久99操| 五月婷婷亞洲中文| 国产精品电影| 伊人激情综合| 婷婷深爱五月| 青青草轻轻操| 婷婷五月天人妻| 视频1区2区| 激情色色色| 色视五月天婷婷| 任我鲁这里有精品视频| 5月丁香美女影院| 97色婷婷五月天| 丁香五月影院| 丁香婷婷久久 | 丁香婷婷激情五月色| 97操在线| 激情丁香婷婷| 波多野结衣AV无码Porn| 伊人婷婷色激情丁香| 女婷久久| 五月天激情图片网| 琪琪布丁香社区激情五月天| 狠狠做深爱婷婷久久综合一区| 加勒比色色| 久超超碰| 人人操人人添人人摸97| 婷婷五月欧美综合| 人妻久久久久久| 日本3级片一区2区| 三级毛片视频| 91Chinese在线| 久久婷婷亚洲| 激情五月,婷婷五月,丁香五月| 99精品在线播放| 婷婷终合色图| 九九九九中文字幕| 婷婷五月综合社区在线| 亚洲国产精品VA在线看黑人| 色五月激情五月开心五月| 4438激情网| 人人爱人人添| 天天擼久久擼在线| 国产又黄又爽又激情不遮挡视频在线观看| 激情AV在线| 五月婷视频在线观看| 国产亚洲精品AAAAAAA片| 狼人狠狠操| 九九色热| www,色婷婷| 夜夜夜夜夜骑撸| 思思re视频在线| 夜夜爽天天| 五月婷婷啪啪网| 久超超碰| 玖玖婷婷五月天| 9九色首页| 伊人激情网| 久久怡红院| 99国产精品久久久久久久久久久| 亚洲精品99| 亚洲操b| 9色在线视频| 久久99精品视频| 九九久久五月天| 婷婷玖玖五月天| 激情五月丁香婷婷| 干一干xxxx| 亚洲激情综合网| 亚洲成人高清在线| 日韩AV大全| 99热这里只有精品在线| 极品少妇XXXX精品少妇偷拍| 五月婷无码| 天堂在线婷婷| 久热91精品| 超碰在线免费| 四五月婷婷| 丁香五月 六月婷婷首页| 99aese| 五月婷婷九月婷婷九月婷婷| 亚洲VA口| 五月天啪啪啪| 2025神马午夜福利| 狠狠色丁香婷婷| 精品综合爱| 成人短视频在线| 五月天天天操天天爽夜夜操| 亚洲综合婷婷| 99视频精品全部观看10| www.五月丁香| 久草婷婷在线| 中文字幕日韩成人| 丁香五月综合激情久久潮喷| 久播影院免费观看电视剧大全最新网| 天天做天天爽| 狠狠色综合网| 国产99久9在线+|+传媒| 五月丁香婷婷综合| 色噜综| 五月综合激情网| 综合久| 婷婷综合婷婷| 性爱网五月天| 伊人丁香花综合影院| 久久六月天| 天天插天天插| 少妇性按摩无码中文A片| 五月天另类小说久久小说网| 久热 91| 婷婷国产日本欧美| 成人网站免费在线播放| 超碰只有精品在线| 久久婷婷综| 2020夜夜操天天爽| 99热| 91九九热| 亚洲色爽| 成人电影AV在线观看| 丁香激情五月天| 視频福利乱色| 日本九九热| 五月色婷婷中文字幕| 丰满女老板BD高清A片| 啪啪色区| www,婷婷五月天,com| 99热这里都是精品| 久久日九九| 亚洲色婷婷婷婷人人爽| 无码啪啪| 婷婷玖玖丁香| a色色色色色| 久久这里只精品| 影音先锋女人AA鲁色资源| 五月天基地| 亚洲综合视频一下| 五月丁香在线| 久久黄A片| 婷婷性爱五月天| 国产成人一区二区三区在线观看 | 国产肥白大熟妇BBBB视频| www久久久久| 热久久视频99| 国产精品天天狠天天看| 丁香五月色| 另类综合激情| 99资源在线视频| 亚洲欧美另类在线23p| 激情五月婷婷| 69热在线| 伊人丁香六月婷婷| 成人网在线视频| 五月天久久小说| 久久婷婷五月激情网站| 在线观看国产高清视频免费网站 | 91女人18毛片水多国产| 婷婷五月天激情在线观看| 五月丁香久久综合| 另类图片激情五月| 99热综合在线| 五月天婷婷爱| 久久综合影院 | 综合久久五| 天天综合干| 777精品久无码人妻蜜桃| 婷婷色九月| 操97免费超级视频| 亚洲AV第二区国产精品| 婷婷五月色情| 久久电影4399| 亚洲激情综合网| 婷婷午夜综合| 婷香五月| 亚洲成人一区| 免费黄色片子| 色婷婷婷综合五月天| 九九黄色网| 六月丁香成人| 亚洲V国产V欧美V久久久久久| 五月色亭丁香| 日本不卡一区二区三区| 国内精品99| 欧美综合激情五月天| 五月丁香啪啪网| 久久99网站| 丁香五月影院| 思思热热久久| 亚洲AV无码一区二| 亚洲av成人在线| 五月丁香婷婷啪啪| 国产人妻人伦精品一区二区| 亚洲激情区| 超碰成人影视| 色五月激情综合| 久久综合干| 五月天另类小说| 99这里只有精品视频在线| 91在线就要啪| 婷婷成人AV| 99九九精品| 思思久久99热只有频精品66| http://www.sd-xiangsu.com/| 婷婷基地成人五月天| 久久激情五月婷婷| 国产精产国品一二三在观看| 天天日夜夜曹| 丁香五月激情婷婷视频| 丁香五月婷婷社区| 情色五月天网站| 激情q青青草在线婷婷| 久久大大香| 欧洲亚洲午夜| AV 3P| 性爱五月婷婷| 色五月五月婷婷| 五月天精品综合| 九九99九九99| 五月婷婷官网色| 色三级色三级| 欧美十二区| 亚洲啪啪视频| 伊人久久五月天| 91精品婷婷国产综合| 国产欧美精品AAAAAA片| 国产激情在线| 狠狠操在线视频| 激情六月丁香| 亚洲色无码A片一区二区麻豆| 六月婷婷中文字幕| www.狠狠干| 天天日夜夜欢| 91丨九色丨老熟女激情| 综合网色| 五月停停999| 天天色天天爱天天爽| www九九| 亚洲成人精品三区| 99re6在线视频精品免费| 婷婷综合视频| 免费不卡狠操美女视频网 | 99精品国产在热久久| 久久久久久久久99精品| 亚洲欧美另类在线23p| 婷五月丁香俺| www.99久| 中文字幕丰满人妻无码专区| 五月激情天| 99热精国产这里只有精品| Av大香蕉| 丁香密臀AV激情网| 欧在线一区| 狠狠干在线| 91超级碰在线| 91精品久久久久久综合五月天| 色色色视频| 日本69日人视频| 五月婷婷综合影院| 国产色香蕉精品五夜婷| chaopeng在线人人| 伊人99久久| 丰满女老板BD高清A片| 婷婷五月天精品| 婷婷性爱网| 成人在线综合| 色噜噜五月天| 第四色大香蕉| 国产九九一区二区三区| 99久久这里只有精品| 国模淫穴色图| 99视频热| av色色国产| www五月天com| 色五月综合资源推荐| 激情五月色播五月| 五月婷婷在线免费| 五月婷婷草| 精品99视频| 97在线刺激| 色五月天堂| 99色婷婷视频| 超碰精品手机在线| 五月丁香手机在线| 99热国产国产| 亚洲综合婷婷| 天天色,天天日,天天做| 99久热这里只有精品| 五月婷婷五月丁香| 久综合色| 99热这里只有精| 色婷婷在线视频| 无码少妇高潮喷水A片免费| 久久精品99国产精品日本| 免费视频WWW在线观看网站| 又大又粗九一在线| 久re在线| 色婷婷网| wwccc久久久| 色婷婷狠狠干芒果TV| 夜夜骑天天操| 亚洲色啪| 91919191919久久成人视频| 俺去也五月| 亚洲AV成人无码精品| www91精品| 天天射影| 五月天激情社区| 色在线99| 婷婷五月花| 99re久热| 99riAV国产精品视频| 久久精品爱爱| 亚洲天天综合| www.婷婷五月| 亚洲无码11| 激情五月天综合网| 丁香五月婷婷老师网站| 婷婷五月香蕉| 久久婷婷欧美| 五月丁香激情四射| 97丨九色丨国产丨PORNY| 日比视频91| 五月丁香六月婷| 五月丁香啪啪综合网| 综合色影院| 久久在线视频免费观看| 超碰人人99| 亚洲第一色色色色| 伊人玖玖精品| 色六月 婷婷| 日本综合色色| 天天插天天操| 99re6在线视频精品免费| 日本一级大片| 婷婷 亚洲图片 丁香| 五月色丁香| 伊人网色婷婷五月天| 亚洲成人在线免费| 色播激情五月天| 五月婷婷六月天| 婷婷色在线视频| 五月亭亭综合五码| 青青草成人网| 五月天婷婷色色网| 色色色.COM| 国产在线aaa片一区二区99| 99ri精品在线| www.99情趣网| 男人操女人高潮91视频| 午夜丁香丁香婷婷| 日日天天干| 欧美婷婷色| 国产精品99久久久久久久女警| 97欧美在线| 日韩色色视频www| 婷婷社区五月天| 夜色综合网| 精品国产va久久久| 欧美三级巜人妻互换| 九九综合精品| 国产在线黄色| 性爱五月丁香| 天天在线XXX| 怡红院91a√| 夜夜骑天天操| 99久久97久久欧美综合网| 人人爽天天爽| 91视频五月丁香| 激情性爱五月| 久99久视频| 欧美性爱五月天| 超碰男人色| 五月丁香在线| 啪啪色区| 久超超碰| 日韩三级视频一区二区| 国产精品热搜丁香五月婷婷| 色婷插| 深爱五月亚洲| 91九色白丝| 亚洲丁香五月| 婷婷五月天99综合网站| 9999色色色色| 婷婷五月丁香四射| 婷婷五月噜噜| 国产,欧美,学生妹,视频| 精品国产va久| 激情5月婷婷| 这里只有免费的精品| 五月丁香欧美在线| www.99操| 五月天综合在线| 亚洲无aV在线中文字幕| 婷婷内射视频在线| 日本色婷婷| 激情综合亚洲| 思思热99在线| 婷婷久久色| 97亚洲婷婷| 婷婷五月天久久久| 337p大胆噜噜噜噜噜91Av| 欧美99热| 97超碰99热99| 婷婷涩五月| 人妻性爱av网站| 欧美成人AAA片一区国产精品| α久久| 激情综合婷婷久久| 国产亚洲精品久久一区二区三区| 碰碰女| 99免费在线视频| 国精产品一区二区三区| 超碰色女人| 色色色色色色网站| 天天爽人人爽| 九九色院| 久久婷婷视频| 久久亚洲激情五码| 丁香激情网| 这里只有精品视频在线| 噜噜久| 亚洲一级色电影| 在线理论片| 亚洲天堂aaaa| 色五月之第四色| 中文字幕av网站| 欧美激情综合| 五月色网| 亚洲婷婷视频| 七月婷婷色香综合网| 99人碰碰碰| 免费无码毛片一区二区A片| 99看片| 五月婷婷五月丁香综合| 久久六月综合| 久久久婷婷婷| 四月丁香五月婷婷久久| 日本美女五月天| 婷婷色五月噜噜| 五月天婷婷社区久久综合| 九九热青草| 大香蕉九九| 五月婷婷天天| 思思久热6| 涩涩五月天综合| 狠狠爱婷婷| 人妻六月天| 日韩欧美不卡| 激情六月婷婷| 九九99九九99九九99视频网| 天天操屄网| 婷婷激情蜜桃玖玖丁香| 婷婷六月激情小说网| 超碰在线99热| 人妻五月天激情开心网| 亚洲操女| 国产精产国品一二三在观看| 色五月亚洲| 日本99久久| 91日视频| 天堂综合久| 婷婷激情六月| 婷婷天天日婷婷| 婷婷五月天干干| 伊人婷婷色激情丁香| 爱之国产色情综合| 久久综合丁香五月| 色婷五月| 在线播放成人网站| 99久久99九九99九九九| 色综合丁香婷婷| 99碰| 日韩成人综合网| 国产激情在线| 久久久久亚洲AV成人无码电影| 天天干电影| 色噜噜狠噜噜视频| 五月天婷婷成人网| 999久久久国产精品| 丁香六月久久| 久久hd| 人妻久久婷婷| 激情丁香婷婷| av狠狠操| 五月丁香六月激情| 国产毛片精品一区二区色欲黄A片| 图片区 小说区 区 亚洲五月| 超碰av在线| 欧美日本日韩| 天堂在线伊久| 日韩美女在线视频19| 婷婷九九视频| 色九月婷婷综合| 成人噜噜网| 成人五月天在线视频在线观看| 影音先锋激情网| 999热成人在线综合网| www.深爱激情| 性生活视频98791| 狠狠干无码| 98国产精品综合一区二区三区| 久久黄色片| 久久99日本精品视频免费观看| 亚洲无码www| 欧美内射AA| 五月丁香婷婷五月色| 丁香六月视频免费观看| 免费在线观看欧美激情xx小视频| 香焦网五月天| 大香蕉五月天| a性生活久久无| 丁香五月激情综合婷综| 丁香五月婷婷啪啪| 六月丁香婷婷开心综合基地| 开心色五月天久久久久久久| 久久婷婷色综合| 五月丁香狠狠爱| 九九色插| 久操热线| WWW.桔色成人.COM| 亚洲成人网站在线播放| 99re在线观看| 九九美女视频| 五月色视频| 一操久久| 激情五月深爱五月观看| 色五月六月婷婷| 91人操人人人操人| 嫩草AV久久伊人妇女超级A| 日韩精品一区二区刘| 97操碰| 五月天另类图片| 91碰碰| 国产91在线视频| 激情综合网丁香| 久久视频在线| 三级三久久线久久99久目本WW| 天堂久久久久天堂网| 翔田千里 50岁 无码| 精品福利911| 99久在线视频| 婷婷婷久久| 五月激情丁香六月狠狠干| 天天做夜夜爽| 人妻体体内射精一区二区| 黄久久久| 五月天色婷婷基地| 亚洲色频| 日韩精品一区二区亚洲AV观看| 婷婷在线五月天观看| 久久久久久久久99精品| 天天干天天日蜜臀av| 九九色热| 婷婷中文字幕| 在线播放 精品| 狠狠草天天草| 九九热中文| 欧美成综合在线观看| 亚洲精品欧洲精品| 丁香六月婷婷开心| 天花AV无码| 久热这里只有精品99re,久热这里只有精品7| 大香线蕉伊人| 亚洲欧洲小视频9| 五月天婷婷丁香蜜桃91| 色色婷| 婷婷九月狠狠色| 毛片色五月| A片试看120分钟做受图片| 婷婷伊人綜合中文字幕| 婷婷丁香五月激情密臀av| 激情综合文学| 五月婷婷婷色| 五月五丁香婷婷| 婷婷久久五月天| 丁香六月婷婷| 99精品久久久久久久婷婷| 色婷婷综合在线| 久久免费婷婷视频| 桃色五月婷婷| 精品色色网| 伊人激情AV一区二区三区| 丁香五月天在线观看视频| 欧美视频五区| 婷婷久久内射| 少妇人妻人伦A片| 99久久.www| 日日操夜夜骑| 五月情涩综合婷婷| 色色色色色色色色网站| 亚洲99一级无嗎特制在线| 久久草婷婷丁香网站| 丰满女老板BD高清A片| 婷婷六月丁香综合| 国产激情综合五月久久| 九九热这里有精品视频| 亚洲综合另类| 99视频精品视频| 久久99热这里只频精品6学生| 丁香五月综合色婷婷| 亚洲色婷婷| 99热思思在线观看| 超碰v| 99在线国| 久9热在线免费观看| 欧美一级操逼视频| 99免费青青蜜臀| 婷婷成人五月天| 久久久久亚洲AV成人无码电影| 人人妻人人澡| 激情婷婷丁香五月天小说| 天天日天天操心| 狠狠擼综合| 激情婷婷五月丁香啪啪啪| 亚洲情a| 天天综合网~91| 亚洲AV日韩无码| 五月婷婷激情综合| 五月婷婷丁香婷婷| 天天综合亚洲综合| 在线不卡AC| 九九热在线视频| 热久久91| 高清一区二区三区日本久| 97色伦另类图片小说视频 | 色yeye欧美| 91.com男女操| site:901-07.com| 江苏少妇性BBB搡BBB爽爽爽| 五月婷婷在线综合| 啪啪丁香五月| 在线不卡视频| 五月天激情视频网站| 97黑人精品区| 99热精品免费| 日本va视频| 五月天婷婷基地综合网| 激情网五月天| www色中色综合| 99精品久久久久久久| 97香蕉碰碰人妻国产欧美| 99成人无码| 一起草无码| 国产特级毛片AAAAAAA高清| www.成人婷婷综合| 99综合久久| 日韩青青| 午夜天堂啪啪| 五月丁香六月综合激情网| 婷婷色五月大香蕉在线观看| 97啪啪| 国产婷婷色综合AV蜜臀AV| 97超碰人人操| 91919191919久久成人视频| 天堂网啪啪| 丁香五月综合在线| 五月婷婷深深爱| 蜜臀久久99精品久久久久久酒店| www.色9| 午夜电影网VA内射| 亚洲不卡| 色色色丁香| 九九色色| 久久五月天网| 五月天狠狠干| 久热精品视频在线观| 婷婷色色色| 色一情一乱一乱一区91Av| 欧美色色色色色| 天天日夜夜夜操操操操| 九九AV在线| 久久日曰| 91 欧美| 第四色五月天| 婷婷中文字幕网| 激情综合色| 丁香五月婷婷综合视频| 日本丁香久在线| 69天堂99| 韩国真做片在线观看| 天天摸天天肏| 婷婷五月天AV| www.五月天社区| 五月婷人妻| 婷婷五月四狠狠| 99在线公开视频| 超碰在线资源| 五月激情久久| 四虎婷婷五月天| 久久色情| 在线观看av网站| 婷婷激情啪啪| 亚洲永远av在线播放| 日本熟妇乱妇熟色A片蜜桃| 婷婷激情四射| 五月丁香亭亭操逼| 五月婷婷六月丁香在线视频免费在线观看| 天天橾日日橾夜夜橾17| 热久久成人| 欧美性二区| 99热99色| 国产熟女一区二区三区五月婷| 色射7856五月天激情四射| 玖玖91| 色五月丁香五| 国产成人AV不卡| 蜜桃成语时李时珍 免费| 成功精品影院| 99色色视频| 久久五月丁香| 久久538| 五月丁香网站| 色色a| 五月婷婷影院| 97久久超碰| 婷婷啪啪| 国产午夜精品AV一区二区麻豆| 五月婷婷六月丁香在线| 丁香五月电影| 婷婷成人视频| 婷婷在线视频| 99色视频| 精品一二三区久久AAA片| 亚洲V国产V欧美V久久久久久| 99久久久99久久91熟女| 国产亚洲精品AAAAAAA片| 亚洲精品V天堂中文字幕| 丰满女老板BD高清A片| 江苏少妇性BBB搡BBB爽爽爽| 亚洲狠狠色丁香婷婷综合久久| 成人五月丁香花| 亚洲天堂色| www.99免费视频| 91九色在线视频| 激情综合五月天| 六月婷婷天天操夜夜爽视频| 性色播| 插插五月天| 天天精品视频免费观看| 婷婷五月丁香色综合| 91婷婷色五月| www.99热| 综合色色五月| 色约约视频一区二区三区四区五区 | 色五月激情五月丁香五月婷婷啪啪综合| 日本www五月婷婷| 天天舔天天摸天天透| 久久久久er热| 婷婷五月AV| 99精品在线观看| 久久婷青青草原| 丁香五月综合首页| 亚洲精品视频在线| 九九视频精品在线免费| 丁香五月亚综合图片| 色色丁香婷婷综合| 99久在线精品99re8热| 久久五月天影院| 精品99在线看| 不卡在线超碰| 丁香五月婷婷大香蕉| 九九热这里只有精品7| 婷婷激情鹿城五月天| 免费在线观看欧美激情xx小视频| 色综合九九| 中文字幕成人网站| 久久超视频| 精品国产va久久久久久久| 99热精品中文字幕| 欧美黄色AA片哗啦啦啦| 狠狠爱深色婷婷综合| 色人久夂| 开心激情久久久久久久| 亚洲色五月| 极品少妇XXXX精品少妇偷拍| 人人干人人操外国| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 啪啪 综合网| 夜夜天天久久婷婷| 大香蕉久久婷婷| 久久久亚洲成人无码A片| 婷婷久久性爱| 国产26uuu视频| 五月丁香激情婷婷| 深夜婷婷 丁香| 99日本精品视频热| 少妇人妻综合色6699| 激情綜合W W W,激情五月天| 日韩AV免费| 中文人妻主播久久| 午夜婷婷久久 | 图片区 小说区 区 亚洲五月 | 国产亚洲色婷婷久久99精品91| 超碰99热精品在线| 丁香六月激| 26uuu日韩| 婷婷综合婷婷| site:hcxsz888.com| 天天天天天天操| 国产美女无遮挡裸体毛片A片| 操操国产| 婷婷婷婷婷开心无码播放| 偷偷与邻居做爰完整视频| 狠狠第四色| 五月丁香中文字幕| 欧美成人猛片AAAAAAA| 成人丁香五月| 色色国产| 99热伊人综合| 五月激情久久综合| 丁香五月成人社区| 色婷婷五月天偷拍| 99热99色| 综合久久十三| 男人天堂亚洲综合| 欧美丁香婷婷五月| 99久久www| 99综合| 九热av| 五月丁香黄色| 99精品偷自拍| 色亚洲视频| 99性爱视频| 婷婷五月天色| 五月婷婷欧美| 五月丁香激| 色婷婷电影网| 青青色com久久| 99亚洲无码| 黄色网址五月婷婷| 久色中文| av免费在线看不卡无毒| 久色姿源| 午夜成人片400| 蜜臀av无码久久久久久久久| 日韩色色视频| 婷婷放心五日爱| 这里只有精品免费视频| 99热都是精品| 欧美婷婷| 丁香六月啪啪| 五月丁香影视| 五月丁香怕啪啪| 五月丁香六月激情| 五月天激情在线视频| 99热官网| 五月丁六月香av| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 婷婷色五月亚洲| 日日做A爰片久久毛片A片英语| 六月丁香婷婷网| 色婷青青| 色婷婷小说|