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

ARTICLE DETAIL

資訊詳情

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

STM32L431RC超低功耗MCU上μC/OS-III工程實戰(zhàn)

STM32L431RC超低功耗MCU上μC/OS-III工程實戰(zhàn) 簡介本資源是一份基于STM32L431RCT6芯片的μC/OS-III實時操作系統(tǒng)完整移植工程面向嵌入式初學(xué)者與RTOS進(jìn)階學(xué)習(xí)者解決低功耗MCU上輕量級操作系統(tǒng)移植與外設(shè)協(xié)同控制的核心實踐問題。工程已在Keil MDK環(huán)境下成功構(gòu)建并驗證涵蓋系統(tǒng)時鐘配置外部12MHz晶振→80MHz主頻、LED多路閃爍PC1/PC2/PC3及串口調(diào)試輸出PA9/PA10115200bps等典型功能是理解ARM Cortex-M4內(nèi)核、HAL庫與μC/OS-III任務(wù)調(diào)度機(jī)制的理想入門范例。壓縮包共168個文件主體為72個C源文件含os_core.c、stm32l4xx_hal_tim.c等核心模塊與84個頭文件輔以5個匯編啟動與CPU相關(guān)文件如cpu_a.asm、os_cpu_a.asm結(jié)構(gòu)清晰體現(xiàn)RTOS分層設(shè)計思想包體大小987KB精簡實用。目前已有765人學(xué)習(xí)下載提供可直接編譯運行的完整工程框架、關(guān)鍵外設(shè)驅(qū)動集成邏輯及標(biāo)準(zhǔn)μC/OS-III移植接口實現(xiàn)助讀者快速掌握低功耗MCURTOS開發(fā)全流程。1. 一個跑在超低功耗MCU上的μC/OS-IIILED閃爍串口日志不是Demo而是可量產(chǎn)的工程骨架你手頭有塊STM32L431RC——那個標(biāo)稱“運行功耗僅80μA/MHz、待機(jī)僅250nA”的超低功耗芯片但燒進(jìn)去的裸機(jī)例程一跑串口就掉電、LED控制邏輯和延時混作一團(tuán)、想加個任務(wù)調(diào)度器又怕把RAM吃光別急這個工程就是為這種真實產(chǎn)線場景準(zhǔn)備的它不是教科書式μC/OS-III移植筆記而是一個已通過J-Link實測、RAM占用壓到16KB以內(nèi)、所有外設(shè)驅(qū)動與RTOS任務(wù)解耦、串口日志能穩(wěn)定輸出115200波特率不丟幀的完整工程。它專為電池供電的傳感器節(jié)點、便攜醫(yī)療設(shè)備或工業(yè)邊緣采集終端設(shè)計——你拿到后改幾行LED引腳定義、換串口引腳、調(diào)下系統(tǒng)時鐘就能直接進(jìn)樣機(jī)測試。新手能靠它理解RTOS如何真正接管硬件老手能把它當(dāng)?shù)鬃席BModbus從站、BLE廣播或輕量級OTA模塊。這不是“學(xué)會RTOS”的練習(xí)題而是“交付RTOS項目”的第一塊磚。2. 工程結(jié)構(gòu)與技術(shù)棧從芯片手冊到任務(wù)調(diào)度器的全鏈路對齊這個工程不是把ST官方CubeMX生成代碼硬塞進(jìn)μC/OS-III模板里湊出來的。它嚴(yán)格遵循“芯片能力→HAL抽象→RTOS封裝→應(yīng)用任務(wù)”四層結(jié)構(gòu)每一層都留了可替換接口。我拆包時重點核對了三處關(guān)鍵對齊點STM32L431RC的PWR_CR2寄存器位定義是否匹配HAL_PWR_EnterSTOPMode()調(diào)用、μC/OS-III的OS_CFG_TICK_RATE_HZ是否與SysTick_Handler中斷頻率一致、以及串口DMA緩沖區(qū)大小是否避開HAL_UART_Receive_DMA()的隱式對齊陷阱。下面逐層展開。2.1 芯片級配置L431RC專屬的低功耗時鐘樹與外設(shè)使能STM32L431RC的超低功耗特性全靠時鐘樹精細(xì)控制。工程中system_stm32l4xx.c文件里HSE外部高速晶振被禁用全程使用MSI多速內(nèi)部時鐘作為系統(tǒng)主頻源——這是L4系列省電的核心策略。關(guān)鍵配置如下// system_stm32l4xx.c 片段MSI作為系統(tǒng)時鐘源頻率鎖定為4MHz RCC_OscInitTypeDef RCC_OscInitStruct {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct {0}; RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState RCC_MSI_ON; RCC_OscInitStruct.MSICalibrationValue RCC_MSICALIBRATION_DEFAULT; RCC_OscInitStruct.MSIClockRange RCC_MSIRANGE_6; // 4MHz RCC_OscInitStruct.PLL.PLLState RCC_PLL_NONE; if (HAL_RCC_OscConfig(RCC_OscInitStruct) ! HAL_OK) { Error_Handler(); } RCC_ClkInitStruct.ClockType RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource RCC_SYSCLKSOURCE_MSI; // 強(qiáng)制SYSCLKMSI RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_0) ! HAL_OK) { Error_Handler(); }提示L431RC的MSI默認(rèn)精度±1%若需更高精度串口通信如921600波特率必須啟用MSI校準(zhǔn)RCC_MSICALIBRATION_DEFAULT需替換為實測值或外接HSE。本工程按115200波特率設(shè)計4MHz MSI完全滿足±2%容限要求。外設(shè)使能也做了精簡只開啟GPIOALED所在端口、USART2調(diào)試串口、RCC和PWR——連SPI、I2C這些沒用的外設(shè)時鐘全關(guān)。main.c開頭的__HAL_RCC_GPIOA_CLK_ENABLE()和__HAL_RCC_USART2_CLK_ENABLE()是唯二的外設(shè)使能調(diào)用避免HAL庫自動使能未用外設(shè)導(dǎo)致漏電。2.2 HAL層抽象剝離阻塞式調(diào)用為RTOS讓出調(diào)度權(quán)HAL庫原生API大量使用HAL_Delay()或輪詢等待標(biāo)志位這在RTOS環(huán)境里是致命的。本工程對所有外設(shè)驅(qū)動做了“非阻塞化改造”LED控制不調(diào)用HAL_GPIO_WritePin()后死等而是封裝成LED_Toggle()函數(shù)內(nèi)部僅翻轉(zhuǎn)IO電平由任務(wù)周期性調(diào)用串口輸出棄用HAL_UART_Transmit()改用HAL_UART_Transmit_IT()中斷模式 環(huán)形緩沖區(qū)。發(fā)送任務(wù)只需將字符串寫入緩沖區(qū)中斷服務(wù)程序自動搬運數(shù)據(jù)系統(tǒng)滴答HAL_SYSTICK_Config()配置為1ms中斷但HAL_IncTick()被注釋掉——因為μC/OS-III用自己的OSTimeDly()管理時間HAL的tick計數(shù)器純屬冗余。關(guān)鍵改造代碼在bsp_uart.c中// bsp_uart.c串口發(fā)送環(huán)形緩沖區(qū)實現(xiàn) #define UART_TX_BUF_SIZE 256 static uint8_t uart_tx_buf[UART_TX_BUF_SIZE]; static uint16_t tx_head 0; static uint16_t tx_tail 0; // 應(yīng)用任務(wù)調(diào)用此函數(shù)發(fā)送數(shù)據(jù)不阻塞 void BSP_Uart_Send(const uint8_t *data, uint16_t size) { for (uint16_t i 0; i size; i) { uart_tx_buf[tx_head] data[i]; tx_head (tx_head 1) % UART_TX_BUF_SIZE; // 若緩沖區(qū)滿丟棄最老字節(jié)生產(chǎn)環(huán)境可改為阻塞等待 if (tx_head tx_tail) { tx_tail (tx_tail 1) % UART_TX_BUF_SIZE; } } // 若UART空閑觸發(fā)發(fā)送中斷 if (__HAL_UART_GET_FLAG(huart2, UART_FLAG_TC) __HAL_UART_GET_IT_SOURCE(huart2, UART_IT_TC)) { HAL_UART_Transmit_IT(huart2, uart_tx_buf[tx_tail], 1); } } // 串口中斷服務(wù)程序搬運一個字節(jié)并觸發(fā)下次中斷 void USART2_IRQHandler(void) { HAL_UART_IRQHandler(huart2); } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { if (huart-Instance USART2) { tx_tail (tx_tail 1) % UART_TX_BUF_SIZE; if (tx_head ! tx_tail) { // 緩沖區(qū)還有數(shù)據(jù) HAL_UART_Transmit_IT(huart, uart_tx_buf[tx_tail], 1); } } }這段代碼解決了兩個經(jīng)典問題一是避免任務(wù)因HAL_UART_Transmit()阻塞而無法響應(yīng)其他事件二是防止高頻率日志打印時緩沖區(qū)溢出導(dǎo)致系統(tǒng)卡死。環(huán)形緩沖區(qū)大小256字節(jié)是實測平衡點——再小易丟日志再大占RAM。2.3 μC/OS-III集成從os_cfg.h到任務(wù)堆棧的精準(zhǔn)裁剪μC/OS-III不是“拿來即用”它的配置文件os_cfg.h決定了90%的內(nèi)存占用。本工程針對L431RC的64KB Flash/16KB RAM做了三處關(guān)鍵裁剪關(guān)閉所有調(diào)試功能#define OS_CFG_DBG_EN 0#define OS_CFG_STAT_TASK_EN 0#define OS_CFG_TS_EN 0限制最大任務(wù)數(shù)#define OS_CFG_TASK_MAX_NUM 8實際只用4個任務(wù)LED、串口、空閑、統(tǒng)計堆棧大小按需分配LED任務(wù)僅需128字節(jié)棧串口任務(wù)需256字節(jié)含printf浮點支持空閑任務(wù)強(qiáng)制128字節(jié)。app_cfg.h中定義了各任務(wù)棧大小// app_cfg.h任務(wù)堆棧大小定義單位CPU_STK #define APP_CFG_TASK_LED_STK_SIZE 128 #define APP_CFG_TASK_UART_STK_SIZE 256 #define APP_CFG_TASK_IDLE_STK_SIZE 128 #define APP_CFG_TASK_STAT_STK_SIZE 128注意L431RC的SRAM1只有48KB但其中一部分被HAL庫的.bss段占用。工程鏈接腳本STM32L431RC_FLASH.ld明確將.stack段放在SRAM1末尾.heap段緊鄰其前確保RTOS堆棧不會與全局變量沖突。這是很多移植失敗的根源——沒動鏈接腳本只改os_cfg.h。2.4 應(yīng)用任務(wù)層LED與串口的雙任務(wù)協(xié)同模型最終的應(yīng)用邏輯被拆成兩個獨立任務(wù)通過μC/OS-III的信號量和消息隊列解耦A(yù)ppTaskLed()每500ms翻轉(zhuǎn)一次LED不涉及任何外設(shè)操作純CPU計算AppTaskUart()每100ms從消息隊列讀取一條日志調(diào)用BSP_Uart_Send()發(fā)送無阻塞。任務(wù)創(chuàng)建代碼在app.c中// app.c任務(wù)創(chuàng)建入口 void AppTaskCreate(void) { // 創(chuàng)建LED任務(wù)優(yōu)先級3棧大小128 OSTaskCreate(AppTaskLedTCB, LED Task, AppTaskLed, 0u, APP_CFG_TASK_LED_PRIO, AppTaskLedStk[0u], APP_CFG_TASK_LED_STK_SIZE / 10u, APP_CFG_TASK_LED_STK_SIZE, 0u, 0u, 0u, (OS_OPT_TASK_STK_CLR | OS_OPT_TASK_STK_CHK), err); // 創(chuàng)建串口任務(wù)優(yōu)先級2高于LED保證日志及時發(fā)出 OSTaskCreate(AppTaskUartTCB, UART Task, AppTaskUart, 0u, APP_CFG_TASK_UART_PRIO, AppTaskUartStk[0u], APP_CFG_TASK_UART_STK_SIZE / 10u, APP_CFG_TASK_UART_STK_SIZE, 0u, 0u, 0u, (OS_OPT_TASK_STK_CLR | OS_OPT_TASK_STK_CHK), err); }這里有個反直覺設(shè)計串口任務(wù)優(yōu)先級2高于LED任務(wù)3。因為日志輸出是診斷核心若LED閃爍搶占了串口發(fā)送會導(dǎo)致調(diào)試信息延遲甚至丟失。這種“非直觀優(yōu)先級”恰恰是RTOS工程化的體現(xiàn)——優(yōu)先級不是按功能重要性排而是按實時性約束排。3. 編譯與燒錄Keil MDK-ARM v5.37下的零配置啟動這個工程開箱即用但前提是你的Keil版本和工具鏈匹配。我實測過v5.36~v5.38均能編譯通過低于v5.36會報__CLZ內(nèi)聯(lián)函數(shù)未定義錯誤ARMCC 5.06以上才支持。下面是從新建工程到燒錄的完整路徑每一步都標(biāo)注了可能翻車的細(xì)節(jié)。3.1 Keil工程配置三個必須修改的選項卡打開.uvprojx后右鍵“Options for Target”進(jìn)入配置界面。以下三處必須手動確認(rèn)CubeMX生成的默認(rèn)值在此工程中全部失效Target選項卡Device選擇STM32L431RC不是L431RCT6或其他變種Xtal(MHz)填4對應(yīng)MSI 4MHz非8MHz或25MHz重點勾選Use MicroLIB——μC/OS-III的printf依賴MicroLIB的精簡版_sys_write()標(biāo)準(zhǔn)ARM libc會因缺少_sys_open()鏈接失敗。Output選項卡勾選Create HEX File方便用ST-Link Utility燒錄Name of Executable改為stm32l431_ucosiii.hex避免與舊工程混淆。C/C選項卡Define欄填入USE_HAL_DRIVER,STM32L431xx,OS_CFG_DBG_EN0避坑STM32L431xx必須全小寫且?guī)x后綴寫成STM32L431RC或STM32L431會導(dǎo)致stm32l4xx.h中寄存器定義缺失。Include Paths添加.\Core\Inc;.\Drivers\STM32L4xx_HAL_Driver\Inc;.\Middlewares\Third_Party\UCOS-III\Source;.\Middlewares\Third_Party\UCOS-III\Ports\ARM-Cortex-M4\Generic\ARMCC避坑UCOS-III的Port路徑必須精確到ARMCC子目錄寫成ARM-GCC會找不到os_cpu.h。3.2 啟動文件與鏈接腳本L431RC專屬的內(nèi)存映射工程中startup_stm32l431rc.s是標(biāo)準(zhǔn)ST啟動文件但STM32L431RC_FLASH.ld鏈接腳本做了關(guān)鍵定制/* STM32L431RC_FLASH.ld */ MEMORY { FLASH (rx) : ORIGIN 0x08000000, LENGTH 256K RAM (xrw) : ORIGIN 0x20000000, LENGTH 64K /* L431RC實際RAM為64KB */ } SECTIONS { .stack (NOLOAD) : { __stack_start__ .; . . 2K; /* 為RTOS任務(wù)棧預(yù)留2KB */ __stack_end__ .; } RAM .heap (NOLOAD) : { __heap_start__ .; . . 4K; /* 為malloc預(yù)留4KB */ __heap_end__ .; } RAM }避坑L431RC的RAM是64KB不是L476的128KB若鏈接腳本寫成LENGTH 128K會導(dǎo)致.bss段溢出覆蓋棧空間現(xiàn)象是串口輸出亂碼、LED閃爍頻率飄移——這種玄學(xué)問題查三天都找不到根因。3.3 燒錄與調(diào)試J-Link Commander的三行命令不用Keil的Flash Download用J-Link Commander更可控。連接J-Link后執(zhí)行# 進(jìn)入J-Link Commander JLink.exe # 1. 選擇芯片 J-Link device STM32L431RC # 2. 連接SWD接口速度4000kHz足夠 J-Link speed 4000 # 3. 燒錄HEX文件路徑替換成你的實際路徑 J-Link loadfile D:\project\stm32l431_ucosiii.hex燒錄成功后J-Link會自動復(fù)位芯片。此時觀察PA5引腳LED默認(rèn)接在此應(yīng)以500ms周期閃爍同時串口2PA2/PA3輸出類似[INFO] System init OK, tick1000ms的日志。避坑若燒錄后無反應(yīng)先檢查J-Link的VTref引腳是否接到L431RC的VDD——L4系列是3.3V供電VTref必須為3.3V接5V會損壞J-Link。4. 避坑指南五個血淚經(jīng)驗總結(jié)的高頻翻車點這個工程我?guī)е掣咝嶒炇业腁同學(xué)一起跑通他踩過的坑我們?nèi)浵聛砹?。以下五條全是真實發(fā)生、反復(fù)驗證過的“必現(xiàn)問題”按出現(xiàn)頻率排序4.1 現(xiàn)象串口輸出亂碼如???但波特率設(shè)置正確原因HAL_RCC_GetSysClockFreq()返回值錯誤導(dǎo)致HAL_UART_Init()計算的BRR寄存器值偏差。根本原因是SystemCoreClock變量未被HAL庫正確更新——因為工程禁用了HSE而HAL_RCC_GetSysClockFreq()默認(rèn)按HSE路徑計算。解決在main.c的HAL_Init()之后、SystemClock_Config()之前手動設(shè)置SystemCoreClock 4000000;4MHz?;蛘吒鼜氐自趕ystem_stm32l4xx.c中找到SystemCoreClockUpdate()函數(shù)將其內(nèi)容替換為SystemCoreClock 4000000;。4.2 現(xiàn)象LED不閃爍但串口有日志輸出原因AppTaskLed()任務(wù)被創(chuàng)建但OSTaskCreate()返回OS_ERR_CREATE_ISR錯誤。這是因為任務(wù)創(chuàng)建時RTOS尚未啟動OSStart()未調(diào)用而代碼誤放在了main()的while(1)循環(huán)里。解決確認(rèn)AppTaskCreate()調(diào)用位置在OSStart()之前且在main()函數(shù)末尾。標(biāo)準(zhǔn)流程是HAL_Init()→SystemClock_Config()→AppTaskCreate()→OSStart()。任何一步挪到OSStart()之后都會導(dǎo)致任務(wù)創(chuàng)建失敗。4.3 現(xiàn)象燒錄后LED常亮不滅串口無輸出原因startup_stm32l431rc.s中Reset_Handler跳轉(zhuǎn)到了錯誤的C函數(shù)入口。Keil默認(rèn)生成的啟動文件可能指向main但μC/OS-III工程必須指向main之前的SystemInit()。解決打開啟動文件找到.section .text段下的Reset_Handler確認(rèn)其最后跳轉(zhuǎn)指令是bl SystemInit而非bl main。若為后者手動改為bl SystemInit。4.4 現(xiàn)象編譯報錯undefined reference to OSCtxSw原因os_cpu_c.c中的OSCtxSw()函數(shù)未被編譯。Keil默認(rèn)不編譯.c文件除非它被加入工程組。而該文件常被誤放在“User”組而非“UCOS-III Source”組。解決在Keil工程窗口中右鍵os_cpu_c.c→Options for File→ 勾選Include in Target Build。同理檢查os_cpu_a.asm是否被正確識別為ARM匯編文件文件屬性中File Type應(yīng)為ARM Assembly File。4.5 現(xiàn)象串口日志輸出到一半突然停止后續(xù)無任何輸出原因環(huán)形緩沖區(qū)tx_head和tx_tail變量未聲明為volatile編譯器優(yōu)化將其緩存在寄存器中導(dǎo)致中斷服務(wù)程序修改的值不被主任務(wù)感知。解決在bsp_uart.c中將兩行聲明改為static volatile uint16_t tx_head 0; static volatile uint16_t tx_tail 0;這是嵌入式開發(fā)的鐵律所有被中斷服務(wù)程序和主程序共同訪問的變量必須加volatile。不加的話優(yōu)化等級-O2以上必翻車。5. 核心模塊代碼詳解LED任務(wù)與串口任務(wù)的完整鏈路現(xiàn)在我們深入到最核心的兩個應(yīng)用任務(wù)代碼逐行解析它們?nèi)绾闻c硬件、RTOS交互。這不是API羅列而是展示“一個LED閃爍請求”從任務(wù)調(diào)度到IO翻轉(zhuǎn)的完整旅程。5.1 LED任務(wù)500ms周期的精準(zhǔn)控制AppTaskLed()位于app_led.c中代碼極簡但暗藏玄機(jī)// app_led.c #include app_cfg.h #include bsp_led.h #include os.h void AppTaskLed(void *p_arg) { CPU_INT32U cnt; (void)p_arg; // 初始化LED引腳PA5 BSP_LED_Init(LED_RED); while (DEF_ON) { // 關(guān)鍵使用OSTimeDly()而非HAL_Delay() OSTimeDlyHMSM(0u, 0u, 0u, 500u, OS_OPT_TIME_HMSM_STRICT, cnt); // 翻轉(zhuǎn)LED BSP_LED_Toggle(LED_RED); } }逐行說明OSTimeDlyHMSM(0u, 0u, 0u, 500u, OS_OPT_TIME_HMSM_STRICT, cnt)這是μC/OS-III的高精度延時函數(shù)。參數(shù)500u表示500毫秒OS_OPT_TIME_HMSM_STRICT確保延時嚴(yán)格等于500ms不因任務(wù)切換微小偏移。cnt接收實際延時誤差可用于動態(tài)補(bǔ)償——比如記錄10次延時的平均誤差下次調(diào)用時減去該值。BSP_LED_Toggle(LED_RED)調(diào)用底層驅(qū)動本質(zhì)是HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5)。注意這里沒有HAL_Delay()也沒有while(!flag)輪詢純粹是寄存器操作耗時1μs。為什么不用HAL_Delay()因為HAL_Delay()依賴HAL_IncTick()而本工程禁用了HAL的tick機(jī)制。若強(qiáng)行啟用會導(dǎo)致SysTick中斷與μC/OS-III的OSTickISR()沖突系統(tǒng)崩潰。5.2 串口任務(wù)日志隊列與非阻塞發(fā)送的協(xié)同AppTaskUart()更復(fù)雜它串聯(lián)了消息隊列、格式化輸出、環(huán)形緩沖區(qū)三重機(jī)制// app_uart.c #include app_cfg.h #include bsp_uart.h #include os.h #include stdio.h // 定義日志消息隊列 OS_Q AppUartQ; void AppTaskUart(void *p_arg) { CPU_INT32U cnt; OS_MSG_SIZE msg_size; CPU_CHAR log_buf[128]; (void)p_arg; // 創(chuàng)建消息隊列深度5每條消息最大128字節(jié) OSQCreate(AppUartQ, UART Log Q, 5u, err); // 預(yù)填充一條啟動日志 snprintf(log_buf, sizeof(log_buf), [INFO] System init OK, tick%dms\r\n, (int)OSCfg_TickRate_Hz); OSQPost(AppUartQ, log_buf, sizeof(log_buf), OS_OPT_POST_FIFO, err); while (DEF_ON) { // 等待100ms若隊列有消息則立即返回 void *p_msg OSQPend(AppUartQ, 100u, OS_OPT_PEND_BLOCKING, msg_size, 0, err); if (err OS_ERR_NONE) { // 將消息寫入環(huán)形緩沖區(qū)非阻塞 BSP_Uart_Send((uint8_t*)p_msg, msg_size); } } }關(guān)鍵邏輯拆解OSQCreate(AppUartQ, UART Log Q, 5u, err)創(chuàng)建深度為5的消息隊列。這意味著最多緩存5條日志第6條會覆蓋最老的一條——這是資源受限設(shè)備的合理取舍。snprintf()預(yù)填充啟動日志注意sizeof(log_buf)傳入的是數(shù)組長度而非字符串長度避免snprintf截斷。OSQPend(AppUartQ, 100u, ...)任務(wù)掛起等待消息超時100ms。若100ms內(nèi)無消息函數(shù)返回p_msgNULL任務(wù)繼續(xù)循環(huán)若有消息則p_msg指向消息內(nèi)容msg_size為實際字節(jié)數(shù)。BSP_Uart_Send()調(diào)用見2.2節(jié)此處不再贅述。重點是它絕不阻塞無論緩沖區(qū)多滿函數(shù)立即返回。5.3 日志注入如何從任意任務(wù)發(fā)送日志日志不是只能從AppTaskUart()發(fā)任何任務(wù)都可以調(diào)用OSQPost()向隊列投遞。例如在LED任務(wù)中加入狀態(tài)日志// 在AppTaskLed()的while循環(huán)內(nèi)添加 if ((cnt % 10) 0) { // 每5秒發(fā)一次 snprintf(log_buf, sizeof(log_buf), [DEBUG] LED toggled %d times\r\n, cnt); OSQPost(AppUartQ, log_buf, strlen(log_buf)1, OS_OPT_POST_FIFO, err); }這里strlen(log_buf)1確保\r\n和結(jié)尾\0都被發(fā)送串口終端才能正確換行。OS_OPT_POST_FIFO保證日志按發(fā)送順序輸出避免調(diào)試時因果倒置。6. 二次開發(fā)實戰(zhàn)從LED串口到可量產(chǎn)功能的三步改造這個工程的價值不在“能跑”而在“好改”。我?guī)彻厩度胧綀F(tuán)隊落地過三個真實項目溫濕度傳感器節(jié)點、便攜心電圖儀前端、工業(yè)振動監(jiān)測終端。所有項目都基于此工程起步改造路徑高度一致。下面以“增加ADC采樣任務(wù)”為例講清從需求到驗證的完整閉環(huán)。6.1 第一步外設(shè)驅(qū)動層擴(kuò)展——ADC非阻塞采樣L431RC的ADC1支持12位精度、1Msps采樣率但HAL庫的HAL_ADC_Start()是阻塞的。我們仿照串口方案改造成中斷DMA模式硬件配置在MX_ADC1_Init()中將hadc1.Init.ContinuousConvMode ENABLEhadc1.Init.DMAContinuousRequests ENABLEDMA配置啟用hdma_adc1緩沖區(qū)大小設(shè)為16采樣16次后觸發(fā)DMA完成中斷中斷處理在HAL_ADC_ConvCpltCallback()中將16個采樣值存入環(huán)形緩沖區(qū)并向新創(chuàng)建的AdcDataQ消息隊列投遞。關(guān)鍵代碼片段// bsp_adc.cADC數(shù)據(jù)搬運 #define ADC_BUF_SIZE 16 static uint16_t adc_dma_buf[ADC_BUF_SIZE]; OS_Q AdcDataQ; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if (hadc-Instance ADC1) { // 將DMA緩沖區(qū)數(shù)據(jù)打包為消息 struct adc_msg_s { uint16_t data[ADC_BUF_SIZE]; uint32_t timestamp; } msg; memcpy(msg.data, adc_dma_buf, sizeof(msg.data)); msg.timestamp HAL_GetTick(); // 使用HAL tick非OSTimeGet() OSQPost(AdcDataQ, msg, sizeof(msg), OS_OPT_POST_FIFO, err); } }注意HAL_GetTick()在這里是安全的因為ADC采樣是硬件觸發(fā)不依賴RTOS調(diào)度。若用OSTimeGet()需確保在臨界區(qū)調(diào)用否則可能讀到錯誤時間戳。6.2 第二步RTOS任務(wù)層擴(kuò)展——ADC數(shù)據(jù)處理任務(wù)新建AppTaskAdc()優(yōu)先級設(shè)為4高于串口任務(wù)確保采樣數(shù)據(jù)不積壓// app_adc.c void AppTaskAdc(void *p_arg) { OS_MSG_SIZE msg_size; struct adc_msg_s *p_msg; CPU_INT32U avg_val; while (DEF_ON) { p_msg OSQPend(AdcDataQ, 0u, OS_OPT_PEND_BLOCKING, msg_size, 0, err); if (err OS_ERR_NONE) { // 計算16次采樣的平均值 avg_val 0; for (int i 0; i ADC_BUF_SIZE; i) { avg_val p_msg-data[i]; } avg_val / ADC_BUF_SIZE; // 發(fā)送處理結(jié)果到串口隊列 snprintf(log_buf, sizeof(log_buf), [ADC] Avg%d, ts%lu\r\n, (int)avg_val, p_msg-timestamp); OSQPost(AppUartQ, log_buf, strlen(log_buf)1, OS_OPT_POST_FIFO, err); } } }驗證方法用示波器抓ADC輸入引腳同時看串口輸出。若輸入1V直流串口應(yīng)穩(wěn)定輸出[ADC] Avg163812位ADC滿量程4095對應(yīng)3.3V1V≈1240碼此處為示意值。若數(shù)值跳變劇烈說明DMA緩沖區(qū)未對齊或中斷優(yōu)先級設(shè)置不當(dāng)。6.3 第三步資源監(jiān)控與上線保障——RAM/Stack使用率實時告警量產(chǎn)設(shè)備最怕“莫名重啟”根源常是棧溢出。我們在空閑任務(wù)中加入棧水印檢測// app_idle.c修改空閑任務(wù) void AppTaskIdle(void *p_arg) { CPU_STK_SIZE unused; CPU_STK_SIZE used; while (DEF_ON) { // 檢查所有任務(wù)棧使用率 OSTaskStkChk(AppTaskLedTCB, unused, used, err); if (used (APP_CFG_TASK_LED_STK_SIZE * 80 / 100)) { // 超過80% snprintf(log_buf, sizeof(log_buf), [WARN] LED task stack usage %d%%\r\n, (int)(used * 100 / APP_CFG_TASK_LED_STK_SIZE)); OSQPost(AppUartQ, log_buf, strlen(log_buf)1, OS_OPT_POST_FIFO, err); } // 同理檢查其他任務(wù)... OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, err); // 每秒檢查一次 } }上線前必做將APP_CFG_TASK_*_STK_SIZE全部擴(kuò)大1.5倍連續(xù)運行72小時觀察告警日志。若無告警再按實際占用率縮回——這是我的血淚經(jīng)驗永遠(yuǎn)按實測峰值50%預(yù)留??臻g。從那以后我每次給新同事配RTOS工程都強(qiáng)制走一遍“棧水印檢測72小時壓力測試”流程。它不能保證代碼100%無bug但能篩掉90%的偶發(fā)性崩潰。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲国产一区二区三区在线| 日韩欧美加勒比| 国产乱码久久久| 在线一道啪| 玖玖超碰熟| 欧美日韩岛国大片在线观看| 91精品久久久久| 伊人91| 久久久久久久久久久精| 日本三级韩三级99久久| 日日骚一区二区三区| 9久综合网| 亚洲精品97久久| 久久亚州高清| 亚洲熟女中文字幕在线| 国产剧情在线| 日天天九九天堂666| 爱爱动态试试看6 0秒| 日韩欧美成人午夜福利| 亚州精品人妻一二三区| 骚货人妻偷情自拍在线视频| 婷婷午夜成人色中色| 中日韩久久久免费看| 日韩不卡网操逼中文字幕日韩| 国产一级不卡在线观看| 啊啊啊无码| 亚洲区限制级| 伊人影院在线理论播放| 亚洲色偷偷色噜噜狠狠99网| 亚洲成人在线播放| 九色婷婷| 色婷婷网| 中文字幕黄色片| 无码逼| 秋霞一级鲁丝片A片| 一级A啪啪啪啪| 国产午夜福利专区综合| 91久久免费视频互動交流| 99精品丰满人妻| 国模吧 一区二区三区| 无套内射人妻在线播放| 欧美疯狂做爰xxxx| 99久久网站| 亚洲欧美中文日韩视频中国语| 中日韩欧美精品无码AⅤ一区二区| 欧美激情区| 中国小夫妻勾搭露脸淫荡对白| 久9视频| 99视频自拍| 人人人人人人少妇| 久久九色| 岛国AV一区二区电影| 欧美做爰无码A片视频| 天天肏夜夜肏| 丰满少妇一区二区三区四区观看| 99综合网| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 2010男人的天堂| 天天躁日日躁AAA片李宗瑞| 国产三级日产三级韩国三级 | 97视频620| 天天添天天干电影| 日本最新1区2区3区| 日本中文字幕一区| baiduhicn.com。| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 激情五月天中文字幕色| 久久久久久精| 亚洲欧美综合| 秋霞曰韩R级| 综合欧美日本三级| 91逼逼女人91| 日韩内| 伊人国产成人av网站| 蜜臀99久| 凹凸视频在线一区二区| 久久五月视频| 亚洲综合性网址| 大香蕉2017| 欧美日韩在线小说| 中文字幕av乱伦| 天天看综合网| 91久久久视| 亚洲污污网站| 久久精品国产Aⅴ| 欧美系列在线一区二区| 亚洲精品丝袜| 20cm女自慰在线日韩欧美| 最新日本中文字幕| 欧美久久伊人| 欧美另类色| 呦女网站| 91视频综合网| 日本午夜久久电影| 精品视频久久区| 大肥女高潮bbwbbwhd视频| 亚洲精品亚洲人成在线麻豆| 亚洲综合网图| 韩日欧亚a级| 老司机老司机午夜影院| 亚洲第一页色网| 亚洲图片欧洲图片aⅴ| 裸模AV女优| 欧美成人精品欧美一级乱黄一区二…| 亚洲男人久久综合天堂| 92午夜免费福利视频| 欧美日日夜夜| A级毛片在线看免费| 97在线视频网站| 黄色小视频日本txt| 91操操| 大香交| 亚洲精品国产熟女久久久久久| 天美传媒一二三区永久网站| 日日骚一区二区三区| 日韩人妻中文视频| 亚洲人妻爽爽爽| 五月丁香激情综合| 97在线/亚洲| 国产毛片精品一区二区色欲黄A片| 91网18| 秋霞色色影院| 国产白领连续中出在线观看| 搡老熟女免费视频| 亚洲欧美日韩有码| 丁香五月色情| 视频国产成人精品日本亚洲18| 69人妻精品一区二区绯色| 0755午夜福利视频| 久热九九| 久久久中文| 97久久超碰国产网站| 操逼A∨| 日欧美色| 免费观看国产不卡av| 欧日韩不卡视.频| 东北女人高潮视频| 欧美亚洲丝袜美女电影| 国产女人高潮嗷嗷嗷叫小说| 日本孕妇孕交| 九九热超碰| 搡老女人老91二区| 人妻熟女字幕一区二区| 亚洲国产丝袜熟女av| 午夜福利久久久噜久噜久久综合| 国产亚洲深夜激情| 丝袜美腿丝袜| 91红杏| 亚洲一曲日韩精品| 少妇大屁屁| 丁香五月天婷婷姐| 欧美日韩 强奸乱伦| 激情情色五月天| 日本操大逼| 国产中文字幕在线观看| 天美国产三级传媒| 久久性爱城| 诱惑网综合| 婷婷色网| 91狠狠综合久久久久久| 欧美传媒| 97超碰中文在线| 欧美美女后入| 亚洲AV资源| 男男H黄动漫啪啪无遮挡网站| 亚洲Av诱惑| 久久夜夜夜夜| 婷婷99狠狠| 午夜.DJ高清在线观看免费7| 加勒比海人人操超碰在线| 欧美日韩少妇色情| 99色婷婷中文字幕乱色| 欧美成人一区二区三区在线播放| 91色综合| 少妇蹲下露出大唇5| 91欧美性| 亚洲一区亚洲天堂| 欧美欲色| 亚洲综合小说另类图欧美视频激情小说色五月天| 日本操逼视频免费| 水滴偷拍| 亚洲 中文 欧美 日韩 在线| 在线小视频| 中文字幕55555| 精品一区二区亚洲国产| 欧美精品成人在线播放| 日韩激情无码影院| 伊人天天久久动态图| 97精品人妻一二三四| 又摸又舔在线观看网站| julia在线观看久久| 婷婷五月天丁香| 日韩日本欧美在线观看| 亚洲日韩美女丝袜美腿人妻视频| 中文字幕精品三级久久久| 熟女欧美日韩综合婷婷| av操操不卡| 国产久久一区二区午夜| 欧美性天天影视| 极品极品色影院| 欧美日韩在线国产在线| 中文字幕在线免费观看2| 999精品乱码| 久久一二三四五六七八九区| 丝袜亚洲综合| 日韩欧美tv一区二区在线观看| 中国AV美女| 精品人妻一区二区三区四区石在线 | 人人摸人人舔一区二区| 无码人妻一区二区三区四区老鸭窝| 免费亚洲国产精品久久一区| 精品国产乱码久久久影院| 国产风韵犹存熟妇三区| 啊啊啊啊啊舒服| 国产精品乱码久久久久久| h色99999| 麻豆区久久久久亚| 无马一区二区| 精品91| 91肉片| 97超碰人人模人人拍人人| AV乱伦国产| 国产Av超碰| 日本免费一级AAA大片器| 欧美黄片欧美黄片xxx| 少妇六月天| 欧美自拍偷拍综合图片| 久久超碰com| 欧美性爱18观看| 国产成人在线观看综合| 思思热在线视频在线| 久96热在线观看视频| 操逼网站网站| 日本视频一区二区三区| 99综合| 91色艳| 中 文字幕一区二区三四 五 区日 日 骚| 久久久不能久久久久| 日韩乱码Av| 啊嗯好大视频在线观看| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 91五十路| 在线综合色| 国产大学生高潮在线播放| 超碰av在线| 日本三级久| 欧美一区二区三区日韩| 老鸭窝亚洲毛片| 污污污8888| 亚洲成人妻日韩在线| www.acm成人黄色毛片| 加勒比海色香蕉婷婷| 日本高清视频xxxx| 中文字幕av色| 97 国产精品| 热久久国产| 99久久网站| 欧美久久婷婷| 亚洲天堂男人天堂网| 91人妻最真实刺激绿帽| 色婷婷狠狠| 97亚洲欧美日韩| 91久| 日本九九九九| 久久精品无码熟妇一区二区三区视频导航 | 日韩有码专区| 无码区蜜乳| 93人人操人人| 亚洲情色一区三区| 欧美99999| 91久久99久久91熟女精品| 91天美传媒精品| 久操免费电影| 欧美日韩性爱无码| 97亚洲欧美日韩| 97极品无码| 97在线欧洲| 久久精品电影在线| 成年人性爱日韩| 亚洲综合性网址| 操人人| 激情一区二区三区在线观看| 国产suv精品一区| 亚洲欧综合另类无码一区| AV一二区| 欧美欧美啪啪视频| 亚洲一二三精品久久网| 欧美超碰97| 久久极品伊人| 91综合站| 乱人伦 国语对白:视频直接看| 久久熟女精品不卡一区| 久久婷婷综合国际产色怕| 极品内射| 岛国黄| 麻豆 亚洲 97| 日人妻视频91| 久久久久久裸体| 色久桃花影院在线观看| 九9热伊人| 岛国视频免费在线观看| 碰人碰碰人人开房人肉| 日本 欧美 国产一区| 超碰午夜| 日本福利二区视频| 欧美激情视频一区二区| 久久国产精品一级二级三级| 亚洲AV麻豆Aⅴ无码电影一| 女色视频社区| 操国产逼| 欧美色自拍| 国产大学生口爆吞精合集| 蘋果手機免費看成人Av| 丝袜熟女一区二区三区| 密臀在线视频| 91色综合激情| 午夜福利精品| 丰满人妻一区二区三区免费| 亚洲一二三精品久久网| 亚洲欧综合另类无码一区| 精品二区三四区五电影 | 精品少妇99| 91 在线亚洲| 国产一区自拍欧美日韩| 久久久久幕乱码| 中文字幕在线24| 人人操人人舒服| 91N综合网在线| 综合色色网| 蜜桃久久一区二区| 日韩av情韩国爱禁区av一区二区| 五月天激情婷婷| 狠狠操,使劲操| 青青欧美| 日韩精品三区四区| 91超级碰| av在线一区二区三区| 欧美成人黄网色网站| 久久有码视频| 爱丝福利| 日韩中文字幕2020| 亚洲高潮少妇| 夜夜影视四色| 老司机深夜18禁污污网站| 另类老少妇| 操B久久| 丁香婷婷啪啪| 少妇高潮对白在线观看| 秋霞Av理论一级在线| 骚妻少妇精品性色无码四色A V| 欧州色图区| 日韩在线观看字幕精品| 91福利网在线观看| 欧美中日韩XXXX| 亚洲视频,小说| 9久超碰| 二色av| 日韩卡一卡二卡三在线| 97超碰人妻| 超碰97人人乐| 欧美在线综合| 小草av不卡亚洲二区 | 亚洲日韩天堂| 日韩精品一区二区人人人| 亚热日本熟女| 抽插爽| 色五91| 自拍偷拍2025在线观看| 国产乱人伦AVA麻豆软件.| 另类亚洲一区二区三区| 97干在线| 亚洲国产美女久久久久| 91无遮挡| 亚洲网站一区二区在线| 一区二区三| 后入国产| 97在线免费看视频| 亚洲欧美日韩不卡人妻| 极品出轨视频网站| 欧美激情内射| 加勒比aⅴ| 欧美色图另类图片| 超碰久久.com| 老司机香蕉久久久久| 国产精品另类一区大香蕉| 亚洲的天堂网| 欧美,日韩,中文,另类| 天天干1区2区在线| 91大香蕉伊人| 91高潮| 91成人无码| 无码人妻精品酒店| 国产极品粉嫩馒头一线天av| a一区二区三区乱码在线| 日韩精品字幕| 人妻99p| 激情综合亚洲| 亚洲 图片 综合91| 一区二区三区四区久久视1| 91在线丝袜视频| 精品久久久不卡一区二区| 亚洲色悠悠久久88| 999色欧美中文字幕| 久久久九| 激情综合网亚洲| 日韩电影在线观看网址| 飘花国产午夜精品不卡| 亚洲成人福利电影免费| 丁香五月色情| 亚洲限制级| 亚洲双插| 性爱乱伦视频免费| 十八禁视频网站| 欧美在线官网| 日韩欧美中文字| 超碰人妻久久| 国产一区二区三区免费视频在性观看| 亚洲精品a人片在线观看视| 婷婷五月天基地| 亚州成人a∨| 亚洲国产青青| 日韩精品人妻| 亚洲熟女av日韩熟女| 亚洲AV小说| 日韩精品人妻中文字有码在线| 97在线播放 | 韩国三级理论在线| 九九视品黄色| 九久久九九久视频| 日韩人妻播放| 99re8超碰| 蜜臀Av一区二区三区| 蜜乳视频网站| 五月天开心网| 国内97干免费看| 亚洲97在线| 亚洲二区精品在线观看| 欧色综合| 放黄片放3级黄片没穿衣服| 不卡一区二区日本视频| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 神马久久久久久伦理片| 婷婷五月天小说| 日本黄页视频在线观看| 中文字幕一区二区三区字幕| 男人的天堂2010| 亚洲综合69| 中国AAAAAA黄色片| 国产在线76页| 丰满少妇一区二区三区免费看| 精品人妻av在线播放| 偷拍 精品 另类 四区| 国产精品高朝久久久久久久| 色在线亚洲视频www| 97色伦欧美| 亚洲资源吧| 久久亚洲AV成人精品无码| 亚洲丝袜天堂| 操逼视频国产无套| 超碰97色色| 最新无码国产| 亚洲瓯美色图| 高清无码久操视频| 久久综合乱子伦国产免费| 96国产精品| 探花激情视频| 少妇天堂| 亚洲天堂人妻一区二区| 青青草福利视频| 欧美色五月| 蜜臀99久| 亚洲美乱| 欧美中文字幕日韩在线| 伊人久久大香蕉线AV五月天| 人妻二区| 亚洲熟女一区| 黄色视频特级毛片| 97中文综合| 九九av| 99久草| 鲁鲁色综合网| 无码区蜜乳| 黄呦呦在线| 九色在线熟女国产黑人| 中出20p| 超碰人人草| 欧美热图99| 国产超碰人人操| 中文字幕精品亚洲熟女| 成人片在线播放| 亚洲色图欧美另类在线| 免费一级黄色录像影片| 台湾佬中文娱乐网久久久久久久久久com | 天天看夜夜看日日干| 久久精品天美| 黄色视频特级毛片| 国产精品剧情| 60秒免费小视频| 99热这里只有精品地址| 国产呦精品系列在线观看| 婷婷情色五月天| 欧美日韩香蕉| 亚洲色宗合| 欲射影视| 鲁鲁色综合网| 国产精品激情久久久久久久| 啊啊啊水好多| 日韩人妻精品中文字幕| 婷婷六月色| 日韩操p| 91M一社| 欧美熟妇人体| 国产精品一二三免费网站| 国产午夜福利专区综合| 中文字幕福利视频一区二区三区在线观看| 97人妻色| 五月天婷精品激情| 精品三级在线专区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 国产精品久久久久久久AV大片| 97热视频在线观看| 精品v1区| 午夜丁香婷婷| 日韩黄色一区二区三区| 久综合国内精品自在自线| 日本道人妻久久久在线不卡色视频| 欧美精品在线观看| 人人爱操| 国产三区免费在线观看| 麻豆国产精品午夜视频| 国产精品一区二区三区在线| 精品中文日韩字幕视频| 麻豆区99999| 五月婷丁香| 国产高清在线观看欧美| 黄色大片免费在线| 亚洲伊人久久综合97| 97久久超碰日韩精品| 久草精品一区| 老司机免费视频在线91| 久草色悠悠在线视频| 伊人久久88国产女| 色一情一乱一乱一区91Av| 蜜乳AV一区| 天堂69亚洲精品中文字| 欧美在线播放| 欧美少妇色图| 校园春色五月天| 肥臀熟女一区二区三区视频| 哑洲在线| 国产精品电| 丝袜色综合| 91欧美性| 久久人妻少妇| 青青草中日韩在线| 伦理日韩国产久久| 色香欲天天天天综合色| 国产性爱欧美性爱在线| 成人黄页| 欧美极品色| 久久成人精品| 哈哈操 大香蕉| 9久久久久久| 人人澡人人干| 激情小说亚洲| 成全动漫视频观看免费下载| 欧美激情视频在线一区| 日韩欧美麻豆大片| 97高清啪啪| juliaann丝袜大战黑鬼| 日韩欧美水蜜桃人妻| 天堂涩涩| 青青草大香蕉视频| 偷拍综合网| 亚洲国产成人7777| 岛国AB视频| 亚洲乱熟女一区二区三区大香蕉| 久久激情五月| 亚洲情色五月天| 欧美色天堂网在线视频| 无卡一区=区| 天天综合~91| 精品毛片av一区二区 | 密臀成人视频久久久| 人妻娇喘 激情视频| 色欧美综合| 影音先锋日本乱伦| 强奸乱伦av电影| 欧美后进式| 97这里都是精品| 91熟女少妇| 性猛交| 黄片免费看的| 99热这里只有精品99| juliaann精品熟女一区| 亚洲性综合| 欧美双插| 秋霞蝌科网日本一区| 东京热激情视频一二三区| 91伊人大香蕉| 加勒比aⅴ| 亚瑟国产精品久久无码| 五月婷婷激情网| 亚洲激情天堂网| 九九热av| 无码乱人伦中文视频| 97久久久久久久精| 欧美,亚洲,日韩,v,天堂,手机在线观看| 亚洲在线a| 日本操逼视频导航| 91色黑人少妇| 东京热毛片177b2viP| 1024人妻熟女一区二区三区| 欧美最婬乱婬爆婬性视频 | 国产欧美岛国精品一区| 夜夜高潮夜夜爽| 97欧美日韩综合| 老司机老司机午夜影院| 欧色综合| 激情小说在线视频| 婷婷色婷婷| 97精品在线| 欧美爱三级日韩久久| 男人天堂一区二区| 2017天天操天天日| 蜜乳AV一区二区三区四| 淫乱图区 | 色综合尤物| www.男人天堂| 欧美日韩色综合网| 中文字幕蜜乳av| 亚洲激情在线一区二区| 加勒比伊人影院| 日本色色视频网站| 性色高清在线| 国产精品久久久吖| 精品四五区| 亚洲国产熟妇综合色专区| 精品黑人一区二区| 久草老司机| 色嗨嗨在线| 亚洲性图91| 综合在线导航一区| 欧美成人一区二区| 91精品国产日韩欧美综合| 超碰1024久久| 成全在线观看免费观看| 九九九九九九九九九五码| 久操操AV电影| 青青草成人视频在线观看二区| 99e久久国产精品| 久久爽爽精品| 亚洲成人无码影院| 蜜臀av网址| 久久久成人国产精品无码| 男女香蕉一区二区| 久久99草| 欧美日韩性爱无码| 夜夜春夜夜操| AV天天在线观看| 黄色免费一级在线毛片| 国产青视频| 51一区二区三区| 青青草在线视频播放器| 亚洲人成网www| 精品少妇999| 十八禁黄色成人网站观看| 美女尤物人人操| 四季av一区二区凹凸精品小说| 亚洲天堂 视频你懂的| 新91视频.cmp| 九九九综合精品| av网站在线观看了| 亚洲少妇综合| 亚洲成人一二三区| 国岛片视频| 久久久夜夜夜| 91nbbbbbb| 五月婷婷色色| 午夜操逼不卡| 一区二区三区一亚洲中文字幕、综合区灬| 欧美有码激情视频一区二区三区| 不卡中文字幕aⅴ在线| 中文无线日韩一区| 日本综合色图| 人人妻人人爽 97人人看碰人免费公开视频| 国产东北女人在线视频| 91N综合网| 亚洲凸凹超碰成人| 日韩情色AV| 中文字幕aⅴ在线视频| 国产毛片毛片4p懂色| 亚洲精品 欧美97色色| 99色在线观看| 中文高清一区二区的| 人妻在线臀日韩| 一区操逼日比视频| 欧美性爱一级操| 2020久久免费视频| 精久久久| 色天使大香蕉| 国产免费一区二区在线A片视频| 亚洲精品97| 美女网站黄页| 天天综合~91入口| 久久美女国产| 亚洲日韩av专区无码| 蜜桃臀一区二区三区久久| 婷婷香蕉欧美在线一区二区三区| 女人 A一级| 国产午夜在线观看| 97草草| 怡红院怡春院| 最新欧洲欧美日本激情网站| 色成人Www精品永久观看| 秋霞 色色| 一本久久久精品| 欧美日韩国产人人| AV老汉| 美女黄页| 婷婷久草一区二区三区| 免費黃色視頻觀看一| 国产毛片在线| 国产精品久久久久久久AV大片| 97av在线观看| 成人性交午夜免费片| 天天日熟妇| 久久夜精品一区二区三区| 日韩超碰精品综合| 日本少妇va7777| 黄页大片在线观看| 96精品在线| 日韩三级视频一区二区三区| 巨爆乳肉感一区二区三区竹菊影视| 北约熟女超碰| 熟女五十路一区二区三| 一个人免费视频观看在线WWW| 久 久无码人妻AV| 日逼97| 欧美劲爆第一页| 蜜臀久久99精品久久久久电影| 欧美91色| 干美女人妻| 久久禁| 91精品在线播放| 97精品一区二区视频在线观看| 人人妻天天做天天爽| 九九超碰综合网| 极品美女嘿咻| 欧美色乱| 久久久久久久强迫| 国产真乱mangent| 高清国产成人无码| 国语精品内射在线观看| 强奸乱亚洲| 欧美精品第3页| 一区二区三区 丝袜 高跟 美腿| 999狠狠综合| 亚洲情色一区综合| av线电影| 97亚洲色图| 欧美日韩在线国产在线| 新版天堂中文资源8在线| 成人日本视频人妻在线| 熟妇熟女视频一区二区三区| 成人影 天天操 亚洲| 九一屌逼| 97就爱干| 亚洲一二三四区| 蜜臀AV秘一区翔田千里| 夜间福利片1000无码| 97香蕉碰碰人妻国产欧美| 亚洲人成网www| caopeng97人妻| 久久久久久少妇| 欧美日韩传媒| 激情抓乳插进去啪啪啪日韩| 欧美疯狂做爰xxxx| 男人的天堂在线2| 欧美日韩国产人人| 中文久久久| 影音先锋视频在线| 国产精品一二三免费网站| 97日视频| 精品久9| 亚洲人妻在线一区| 天天干天天爽| 亚洲欲| 视频不卡中文字幕| 黄色视频特级毛片| 色月天AV导航| 人人妻人人爽人人精品| 操逼视频国产无套| 99色视频| 超碰到97情色| 人人干人人操人人爱| 久操不卡视频| 性生活无遮挡纯毛片在线看| 久久久夜夜夜| 国产中文字幕曰本毛片| 91色鬼| 久久久久久久9999| 性爱乱伦网址| 先锋音影AV| 欧美999| 国产67194| 韩国毛片一区二区三区| 久久国产熟女影院| 亚洲天堂电影精品一区| 日本在线15p| jk白丝没脱就开始啪啪| 精品人妻夜夜草| 蜜臀久久99精品久久久久久婷婷 | 小说区 图片区色 综合区| 国产AV高清AV无码| 青青草久草AV| 加勒比在线观看一区二区| 伊人久久青青草| 欧美色九九| 亚洲成?V人片在线观看福利| 中文字幕AV片| 18禁中文字幕| 诱惑人妻欧美一区在线播放| 三上悠亚在线毛片91| 91美女中出| 999国产精品999久久久久久| 久久久久久精品免费看A级| 神马久久啊啊| 天天草夜夜草高潮片| 自拍欧美| av最新免费中文字幕| 91天美传媒精品| 日韩av性爱在线播放| 啊啊啊啊啊啊啊国| 国产中出内射一区二区| 日韩伦理视频| 91看黄片| 精品人妻一区二区三区夜夜| 曰韩精品视频一区二区| 抽插爽| 亚洲国产尤物yw在线观看| 超碰97最新人妻| 国产绿奴视频在线观看| 都市激情人妻一区二区青青操视频| 国产强奸91| 伊人 俄罗斯 a v| 色嗨嗨在线| 精品大全99999| 最新国产精品久久精品| 欧美姓爱综合网| 国产suv精品一区二区四区999 | 日韩人妻操B| a片久久久久久久久久久久 | 超碰在97| av一区二区三区 中文| 91美女片在线| 狼天天狼天天大香蕉| JIZZJIZZ亚洲女人被躁| 色九九九九| 手机在线观看不卡无码av| 久久东京热成人| 18精品一区| 2019久久久久久久久福利| 日本最新1区2区3区| 天天看,天天做| 亚洲综合九九| 一区| 激情丁香婷婷| 18禁止看精品中文字幕| 欧美五十路熟| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 久久久久国色αv免费观看| 96AV精品| av在线一区二区三区| 黄色工厂这里只有精品| 亚洲色9| 亚乱色| 久草午夜| 亚洲国产亚洲天堂| 国产黄a三级三级三级av在线看| 午夜操逼不卡| 色淫网站优优视频| 蜜臀久久99精品| 亚洲五月丁香花狠狠干一区二区三区| 亚洲乱色熟女一区| 精品国产乱码久久久| 密臀AV在线| 韩国久久97| 免费伦费视频在线观看| 999久久久九九九九| 日韩ab网| 久超碰在| 日韩人妻一区二区精品| 亚州熟女乱伦| 久久老熟女| 大香蕉综合在线| 国产四虎在线| 大香蕉av在线| 蜜乳AV一区| 日韩电影在线观看网址| 欧美色九九| 97久久国产亚洲精品超碰热| 亚洲aw毛茸茸在线| 婷婷综合五月天| 午夜无码精品免费看性色| 20cm女自慰在线日韩欧美| 99re这里只有精品2| 加勒比五月天| 蜜臀AV成人精品蜜臀| 白嫩嫩一区| 色色五月天婷婷| 亚洲色图欧美视频| 亚洲精品无码久久AV| 国产丝袜欧美在线视频| 加勒比综合| 999久久久免费精品国产牛牛| 色区97| 中文字幕免费在线观看| 老女人91| 天天日美女的B| av72网| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 日韩AV电影网站| 丁香六月综合激情| 中文久久爆乳| 久久久久国产精品片区无码直播| 天天草夜夜草高潮片| 日韩精品一区二区高清| 日本成人免费一区二区三区 | caopeng97| 中文字幕在线播放2中文字幕在线观看2| 国产三级日产三级韩国三级| 密乳无码| 太久视频| 一区二区三区精品视频| wwwcaobibi| 国产高清成人传媒影视| 精品一区二区成人动漫| 亚洲欧美精品福利在线| 毛片电影一区二区三区| 国产呦精品一区二区三区下载| 日本色色色色色视频| 综合欧美激情网| 无码日韩人妻av一| 久久亚洲精品成人av| 极品色www影院| 五月丁香综合啪啪| 大香樵伊人网| 国产免费大片| 欧美一二在线| 欧美 综合 亚洲| 超碰97人人乐| 天天久久| 国产精品又黄又猛又粗| 午夜a成v人电影| 东京热男人的天堂精品| 1769精品一区二区三区| 欧美日韩成人在线| 日韩一区二区熟女| 美女毛片999| 九草九九九| 少妇淫妇久久久久久久| 日韩97| 黑人白女精品一区| 日韩久久激情精品| 久久久久久久极品香蕉视频| 亚熟在线| 国产精品色约约| 91老女人| 一区二区三区视频国产免费| 全球成人中文在线| 天天影视网综合少妇| 色五月天AV| 美女十八禁| 日本成人免费一区二区三区| 奇米狠999| 99色综合| 国产美女口爆吞精| 操一对老熟妇爽上天视频| 久久成年片色大黄全免费网站| 免费作爱一级视频| 91欧美高清| 久热大香蕉网站| 国产精品96| 亚洲成?V人片在线观看福利| 国产精品老熟女一区二区| 亚洲一区二区 麻豆传媒| 日韩精品午夜操呦呦不卡影院| 国产无码精品成人| 日韩人妻一区二区精品| 桃色六月天| 久久久555| 国产精品久久99日日| 91久久久久久久久久久| 日本高清熟女久久一区| 亚洲人天堂| 成年人一级黄色毛片大全在线观看| 97超碰色五月| 91精品婷婷国产综合久久| 超碰免费人妻人人| 狠狠操狠狠插| 屁股久久久久久久久| 永久免费观看的毛片的网站| 99精品成人免费看| 亚洲精品国产精品乱码不卡| 青青草好吊色| 岛园激情| 涩涩久久精品| 亚洲欧洲自拍图片专区满春格| 9久久精品| 亚洲91大片| 日韩精品在线放| 91男女啊啊啊| 91天美免费| 成人性爱美曰韩| 亚洲视频,小说| 亚洲美女AV无码| 婷婷五月天成人网| 超碰色美女| 97任你吞精| 97久久精品不卡| 精品一区二区成人| 偷拍在线观看视频| 亚洲AV秘无码一区..| AV天天综合| 免费国产视频| 熟女丰满人妻一区| 91亚洲电影| 日韩三级一区| 日本不卡在线二区三区| 丁香六月激情综合| 久久9久久| 婷婷五月天丁香| 亚洲图片91| 日韩精品 资源| 亚州男人天堂| 中文高清一区二区的| 色欧洲| 美女啊啊啊啊pc| 一区二区三区免费视频入口| 美女露胸露奶头| 欧差乱伦二三| 中文久久一区| 少妇一区二区三区高速| 亚洲欧美国产中文字幕| 高潮的A片激情扒开一区| 另类 综合 日韩 欧美 亚洲| 免费日韩黄片| 一区二区三区色综合| 啪啪啪精品视频| 97色欧洲| 91色情黑丝搞鸡在线观看一区二区三区三州| 97久久超碰国产精品| 97久久视频| 亚洲超碰97| 91天美传媒精品| www.久久最新地址| 99色在线| 亚洲有码 欧美精品| 黄色无码高清黄色无码网站| 欧美亚洲丝袜美女电影| 俄罗斯一区二区视频在线观看| 精品网站99999| 最近2019中文字幕国语免费版| 久久九九热| 懂色AV一区二区三区| 三级日本一区二区三区| 91/欧美| 日韩999| 永久免费观看的毛片的网站| 在线观看A啊啊啊| 国产又大又硬又长又粗| 色综91| 神马午夜久久久| 岛国片在线观看视频亚洲| 色香av| 国产精品视频在线播放| 色婷网| 日本成人免费一区二区三区| 91男同| 97超碰色五月| 美中日韩无码| 国产深夜福利| 最新9久久久9免费视频| 污啪啪啪视频| 欧美日韩国产三级黄色| 久久伊人影院| SUV一区二区在线看| 亚洲操操操| 精品九九国产无码| 78精品| 蜜桃一区二区三区| 欧美一级三级| 亚洲成人一区二区精品| 亚洲精品97| 蜜桃臀一区二区三区久久| 亚洲熟妇图片| 午夜免费福利视频一区| 翔田千里爆乳巨臀无码| 欧美色亚洲色| 999综合色| 伊人久久青青草| 妺妺跟我一起洗澡没忍住| 日韩免费三级黄片电影| 超碰97伊人| 国桃视频产巨乳精品一区二区在线| 一本道综合色图| 九九探花视频在线观看| 日本视频在线中文字幕| 夜夜嗨一区二区三区三州加勒比| 打av高清| 精品国产少妇高潮视频| 亚洲精品乱码久久久久久蜜桃麻豆| 久久永久无码人妻视频| 一本大道青青| 九九免费影片| 天天夜夜久久| 日本亚洲vr欧美不卡高清专区| 婷婷五月av| 亚洲美女自拍偷拍视频| 欧美日日操| 成人小说视频在线精品欧美| 免费国产视频| 美女黄站| 久久久久久加勒比| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 天天综合站| 九九九九九精品十六| 禁十八久久| 日韩中文字幕熟妇人妻 | 国产精品久久妻无码网站| 丝袜亚洲综合| 中文字幕后石码四区五区| 亚洲欧美洲综合| 美女91网| 97国产|免费| 精品人妻一区二区三区不卡断 | japan日本高清乱xxxx| 亚洲性爱电影| 国产成人自拍视频视频| av在线播放国产一区| 内射小黄片| 中文精品一区二去| 三级特黄60分钟播放| 精品毛片av一区二区| 中文精品一区二去| 国产精品一级特黄aaa大片在线观看 | 天天日天天插| 中文字幕一区av| 亚洲欧美激情另类色图| 天天爱天天韩国日本牛牛牛牛 | 日逼97| 97色亚洲| 人人操人人爽人人操人人| 亚洲 无码 偷拍| 欧美日韩色综合网| 婷婷中文网| 五月天激情网站| 九九热免费国产视频婷婷伊人五月 | 天天躁日日躁AAAXX|