日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

基于STM32F4與FreeRTOS的智能手環(huán)開發(fā)全流程實(shí)戰(zhàn)指南

基于STM32F4與FreeRTOS的智能手環(huán)開發(fā)全流程實(shí)戰(zhàn)指南 簡介本資源是一套基于STM32F407VGT6與FreeRTOS的嵌入式智能手環(huán)完整開發(fā)工程面向嵌入式初學(xué)者進(jìn)階學(xué)習(xí)者、物聯(lián)網(wǎng)項(xiàng)目開發(fā)者及高校課程設(shè)計(jì)實(shí)踐者解決智能可穿戴設(shè)備中多傳感器融合、實(shí)時任務(wù)調(diào)度與低功耗系統(tǒng)設(shè)計(jì)等核心工程問題。壓縮包共396個文件含89個頭文件h定義外設(shè)接口與任務(wù)結(jié)構(gòu)、77個源文件c實(shí)現(xiàn)FreeRTOS多任務(wù)邏輯與運(yùn)動/生理算法、68個編譯中間文件o/d及調(diào)試配置文件dbgconf、1個Keil工程文件uvprojx和完整啟動腳本與鏈接腳本sct/axf總大小15.65MB目錄結(jié)構(gòu)清晰體現(xiàn)模塊化分層設(shè)計(jì)。已有175人下載學(xué)習(xí)可直接導(dǎo)入Keil MDK編譯運(yùn)行包含全部傳感器驅(qū)動MPU6050、MAX30102、BME280、藍(lán)牙通信協(xié)議棧、OLED顯示框架、自適應(yīng)運(yùn)動識別算法含卡爾曼濾波與TFLite微模型、動態(tài)功耗管理機(jī)制及OTA升級預(yù)留接口是深入理解RTOS實(shí)戰(zhàn)應(yīng)用與健康類嵌入式系統(tǒng)開發(fā)的高質(zhì)量參考工程。1. 項(xiàng)目概述為什么選擇STM32F4與FreeRTOS來打造智能手環(huán)如果你對嵌入式開發(fā)感興趣想做一個能戴在手腕上的、功能完整的智能設(shè)備那么基于STM32F4和FreeRTOS的智能手環(huán)項(xiàng)目絕對是一個絕佳的練手和進(jìn)階選擇。這不僅僅是一個簡單的“點(diǎn)燈”實(shí)驗(yàn)它融合了微控制器選型、實(shí)時操作系統(tǒng)應(yīng)用、低功耗設(shè)計(jì)、傳感器驅(qū)動、無線通信和人機(jī)交互等多個嵌入式領(lǐng)域的核心技能。我之所以推薦這個組合是因?yàn)镾TM32F4系列提供了足夠的性能余量和豐富的外設(shè)來支撐復(fù)雜的應(yīng)用邏輯和實(shí)時數(shù)據(jù)采集而FreeRTOS則能將心率監(jiān)測、計(jì)步、藍(lán)牙通信、屏幕刷新等任務(wù)有條不紊地調(diào)度起來讓整個系統(tǒng)穩(wěn)定可靠這正是產(chǎn)品級設(shè)備所需要的架構(gòu)。市面上很多教程停留在裸機(jī)編程或者簡單的傳感器讀取但一個真正可用的手環(huán)其核心挑戰(zhàn)在于如何讓多個任務(wù)比如持續(xù)讀取加速度計(jì)數(shù)據(jù)、定時計(jì)算心率、等待藍(lán)牙指令、刷新OLED屏幕和諧共處互不干擾并且還要兼顧電池續(xù)航。STM32F407或F411這類芯片主頻高達(dá)168MHz帶有浮點(diǎn)運(yùn)算單元FPU處理傳感器濾波算法如計(jì)步算法游刃有余同時它擁有多個定時器、ADC、I2C/SPI接口和USB OTG能輕松連接各類傳感器和藍(lán)牙模塊。而FreeRTOS作為一個輕量級、開源且經(jīng)過市場驗(yàn)證的實(shí)時內(nèi)核提供了任務(wù)、隊(duì)列、信號量、軟件定時器等機(jī)制完美解決了多任務(wù)管理和資源同步的問題。這個項(xiàng)目做下來你對嵌入式系統(tǒng)的理解會從“單線程順序執(zhí)行”躍升到“多任務(wù)并發(fā)與協(xié)同”無論是求職面試還是實(shí)際產(chǎn)品開發(fā)這都是一塊分量十足的敲門磚。2. 核心需求解析與系統(tǒng)架構(gòu)設(shè)計(jì)2.1 智能手環(huán)的核心功能定義在動手寫代碼之前我們必須明確這個手環(huán)要做什么。一個基礎(chǔ)的智能手環(huán)通常包含以下核心功能模塊這也是我們項(xiàng)目需要逐一攻克的關(guān)卡運(yùn)動監(jiān)測通過三軸加速度計(jì)如MPU6050、LIS3DH實(shí)現(xiàn)計(jì)步、距離估算和卡路里計(jì)算。這是最基礎(chǔ)也是最考驗(yàn)算法功底的部分。健康監(jiān)測通過光學(xué)心率傳感器如MAX30102、PPG傳感器實(shí)現(xiàn)心率、血氧飽和度SpO2的測量。這部分涉及模擬信號采集和數(shù)字信號處理。人機(jī)交互通過一個小尺寸的OLED或LCD屏幕顯示時間、步數(shù)、心率等信息并配合一個或兩個實(shí)體按鍵進(jìn)行菜單切換和功能操作。無線通信通過低功耗藍(lán)牙BLE如nRF52832、DA14580模組或STM32WB系列芯片的藍(lán)牙核與手機(jī)App連接同步數(shù)據(jù)、接收通知。時間管理依靠芯片內(nèi)部的RTC實(shí)時時鐘或外部時鐘芯片實(shí)現(xiàn)精準(zhǔn)的計(jì)時和日期功能包括鬧鐘。電源管理整個系統(tǒng)的靈魂。需要設(shè)計(jì)合理的電源電路并在軟件層面利用STM32的低功耗模式和FreeRTOS的Tickless Idle機(jī)制最大限度延長續(xù)航。2.2 基于FreeRTOS的系統(tǒng)任務(wù)劃分在裸機(jī)系統(tǒng)中我們可能會用一個超級循環(huán)super loop配合狀態(tài)機(jī)來處理所有事情代碼會變得復(fù)雜且難以維護(hù)。引入FreeRTOS后我們可以將上述功能模塊分解成獨(dú)立的“任務(wù)”Task每個任務(wù)就像一個小程序?qū)W⒂谧约旱氖虑椤R韵率且环N經(jīng)典的任務(wù)劃分方案Sensor_Task傳感器任務(wù)優(yōu)先級較高。負(fù)責(zé)以固定頻率如10Hz讀取加速度計(jì)和心率傳感器的原始數(shù)據(jù)進(jìn)行初步濾波后放入消息隊(duì)列Queue供其他任務(wù)消費(fèi)。Algorithm_Task算法任務(wù)優(yōu)先級中等。從隊(duì)列中獲取傳感器數(shù)據(jù)運(yùn)行計(jì)步、心率計(jì)算等核心算法將結(jié)果更新到全局?jǐn)?shù)據(jù)結(jié)構(gòu)或發(fā)送到顯示隊(duì)列。Display_Task顯示任務(wù)優(yōu)先級較低。負(fù)責(zé)管理屏幕根據(jù)當(dāng)前系統(tǒng)狀態(tài)如主界面、菜單、運(yùn)動模式從共享內(nèi)存或隊(duì)列中獲取數(shù)據(jù)并刷新顯示。它通常由按鍵事件或定時器事件觸發(fā)而非持續(xù)運(yùn)行以省電。BLE_Task藍(lán)牙任務(wù)優(yōu)先級中等。負(fù)責(zé)處理藍(lán)牙協(xié)議棧的初始化和事件循環(huán)當(dāng)手機(jī)連接或發(fā)送數(shù)據(jù)時將手機(jī)指令通過隊(duì)列傳遞給其他任務(wù)或?qū)⑹汁h(huán)數(shù)據(jù)打包發(fā)送給手機(jī)。Key_Scan_Task按鍵掃描任務(wù)優(yōu)先級最低。周期性掃描按鍵狀態(tài)檢測按下、長按等事件并發(fā)送事件消息到系統(tǒng)事件隊(duì)列驅(qū)動界面切換或功能觸發(fā)。Power_Task電源管理任務(wù)優(yōu)先級最低。監(jiān)控電池電壓根據(jù)系統(tǒng)空閑情況協(xié)調(diào)進(jìn)入低功耗模式如Stop模式。注意任務(wù)優(yōu)先級的設(shè)置是關(guān)鍵。像傳感器數(shù)據(jù)采集這類對實(shí)時性要求高的任務(wù)優(yōu)先級應(yīng)設(shè)高一些確保數(shù)據(jù)不被丟失。而顯示、按鍵掃描這類任務(wù)可以設(shè)低一些。同時要避免“優(yōu)先級反轉(zhuǎn)”問題在訪問共享資源如全局變量、硬件SPI時務(wù)必使用信號量Semaphore或互斥量Mutex進(jìn)行保護(hù)。2.3 硬件選型與核心電路設(shè)計(jì)要點(diǎn)硬件是軟件的舞臺。對于STM32F4系列我推薦使用STM32F411CEU6黑金、野火等開發(fā)板常用或STM32F407VET6。它們性能足夠社區(qū)資源豐富。其他關(guān)鍵元器件選型建議如下傳感器加速度計(jì)LIS3DH。理由I2C/SPI接口功耗極低自帶內(nèi)置FIFO和多種中斷如自由落體、單擊/雙擊檢測能大大減輕MCU負(fù)擔(dān)。心率血氧MAX30102。理由集成度高將紅光、紅外光LED、光電檢測器和前端電路集成在一起通過I2C輸出數(shù)字值簡化了設(shè)計(jì)。但它對光學(xué)結(jié)構(gòu)即與皮膚貼合的遮光性要求很高DIY時這是難點(diǎn)。顯示0.96寸或1.3寸的OLEDSSD1306驅(qū)動。理由自發(fā)光的特性使其在低功耗顯示時只點(diǎn)亮部分像素比LCD更省電且對比度高。藍(lán)牙建議使用獨(dú)立的BLE模組如JDY-18基于nRF52832或AT-09基于TI CC2541。理由協(xié)議棧由模組廠商固化我們只需通過UART發(fā)送AT指令即可控制降低了開發(fā)難度。當(dāng)然如果你追求極致集成和性能可以使用STM32WB系列的雙核芯片但開發(fā)復(fù)雜度會顯著增加。電池與充電使用一塊小型鋰聚合物電池如301030200mAh。充電管理芯片選用TP4056這是一個經(jīng)典的單節(jié)鋰電池充電IC電路簡單可靠。電源路徑上需要低壓差穩(wěn)壓器LDO如ME6211為整個系統(tǒng)提供穩(wěn)定的3.3V電壓。實(shí)操心得在繪制原理圖時一定要為所有I2C/SPI總線加上拉電阻通常4.7kΩ。為MAX30102的LED供電引腳串聯(lián)一個小的限流電阻如10Ω并預(yù)留調(diào)試用的測試點(diǎn)。對于電池電壓檢測利用STM32內(nèi)部的ADC通道通過電阻分壓后連接即可分壓電阻要選擇高阻值的如1MΩ和200kΩ串聯(lián)以減少待機(jī)電流。3. 開發(fā)環(huán)境搭建與FreeRTOS移植3.1 工具鏈與工程模板創(chuàng)建我們選擇Keil MDKARMCC編譯器或STM32CubeIDEGCC編譯器作為開發(fā)環(huán)境。我傾向于使用STM32CubeMX Keil的組合因?yàn)镃ubeMX能圖形化配置引腳、時鐘和外設(shè)并一鍵生成包含HAL庫和FreeRTOS的初始化代碼效率極高。使用STM32CubeMX新建工程選擇你的具體芯片型號如STM32F411CEU6。配置時鐘樹將HCLK系統(tǒng)時鐘配置到芯片允許的最高頻率如F411是100MHz。高速外部時鐘HSE選擇外部晶振確保RTC時鐘源選擇正確通常用LSE即32.768kHz晶振。啟用必要的外設(shè)I2C1用于連接LIS3DH和MAX30102。注意配置為快速模式Fast Mode并開啟I2C中斷。SPI1用于驅(qū)動OLED屏幕如果OLED使用SPI接口。USART2用于連接藍(lán)牙模組進(jìn)行AT指令通信。ADC1啟用一個通道如ADC1_IN5用于電池電壓檢測。RTC啟用日歷和鬧鐘功能時鐘源選擇LSE。GPIO配置按鍵引腳為輸入上拉模式配置LED引腳用于狀態(tài)指示。中間件Middleware配置在軟件包中找到“FREERTOS”選擇“CMSIS_V2”接口這是ARM為RTOS提供的標(biāo)準(zhǔn)化接口更好用。在“Configuration”標(biāo)簽頁下進(jìn)行關(guān)鍵設(shè)置TOTAL_HEAP_SIZEFreeRTOS的堆大小。對于我們的多任務(wù)系統(tǒng)建議設(shè)置為20KB以上如20480。USE_PREEMPTION啟用搶占式調(diào)度。USE_TICKLESS_IDLE務(wù)必啟用。這是實(shí)現(xiàn)低功耗的關(guān)鍵它允許系統(tǒng)在空閑時停止SysTick定時器進(jìn)入深度睡眠。在“Tasks and Queues”標(biāo)簽頁可以先添加一兩個示例任務(wù)生成代碼后再修改。3.2 FreeRTOS的深度配置與裁剪CubeMX生成的FreeRTOS配置位于Core/Inc/FreeRTOSConfig.h。我們需要根據(jù)項(xiàng)目需求進(jìn)行深度定制// 重要配置項(xiàng)示例 #define configUSE_PREEMPTION 1 #define configUSE_TICKLESS_IDLE 1 #define configCPU_CLOCK_HZ (SystemCoreClock) // 系統(tǒng)時鐘頻率 #define configTICK_RATE_HZ (1000) // 系統(tǒng)心跳頻率1000Hz即1ms一個Tick #define configMINIMAL_STACK_SIZE ((uint16_t)128) // 空閑任務(wù)棧大小 #define configTOTAL_HEAP_SIZE ((size_t)20480) // 堆總大小 #define configMAX_PRIORITIES (7) // 最大優(yōu)先級數(shù)夠用即可 #define configUSE_MUTEXES 1 // 使用互斥量 #define configUSE_RECURSIVE_MUTEXES 1 // 使用遞歸互斥量 #define configUSE_COUNTING_SEMAPHORES 1 // 使用計(jì)數(shù)信號量 #define configQUEUE_REGISTRY_SIZE 10 // 隊(duì)列注冊表大小方便調(diào)試 #define configUSE_16_BIT_TICKS 0 // 32位系統(tǒng)用32位Tick計(jì)數(shù) // 低功耗相關(guān)配合Tickless Idle #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2 // 預(yù)期空閑時間Tick數(shù)提示configTICK_RATE_HZ設(shè)置為1000是常見選擇它提供了1ms的時間分辨率。但對于追求極致低功耗的項(xiàng)目可以考慮降低到10010ms一個Tick這樣可以減少CPU被喚醒的頻率但會犧牲一些時間精度。configTOTAL_HEAP_SIZE需要仔細(xì)評估太小會導(dǎo)致內(nèi)存分配失敗太大浪費(fèi)RAM。可以通過運(yùn)行一段時間后調(diào)用xPortGetFreeHeapSize()函數(shù)來查看剩余堆大小從而調(diào)整。3.3 創(chuàng)建第一個任務(wù)與系統(tǒng)啟動在main.c的main()函數(shù)中在HAL初始化、外設(shè)初始化之后osKernelStart()之前是我們創(chuàng)建應(yīng)用任務(wù)的地方。// 任務(wù)函數(shù)原型 void Sensor_Task(void *argument); void Display_Task(void *argument); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); MX_USART2_UART_Init(); MX_SPI1_Init(); MX_ADC1_Init(); MX_RTC_Init(); MX_FREERTOS_Init(); // CubeMX生成的FreeRTOS初始化 // 創(chuàng)建任務(wù) osThreadNew(Sensor_Task, NULL, SensorTask_attributes); osThreadNew(Display_Task, NULL, DisplayTask_attributes); osKernelStart(); // 啟動調(diào)度器從此處開始任務(wù)調(diào)度 while (1) {} // 正常情況下不會執(zhí)行到這里 } // 任務(wù)屬性定義通常在freertos.c中 const osThreadAttr_t SensorTask_attributes { .name SensorTask, .stack_size 512 * 4, // 棧大小512字*4字節(jié)2048字節(jié) .priority (osPriority_t) osPriorityAboveNormal, // 優(yōu)先級 };任務(wù)創(chuàng)建后調(diào)度器啟動各個任務(wù)就會根據(jù)優(yōu)先級和狀態(tài)開始運(yùn)行了。一個常見的錯誤是在任務(wù)中寫死循環(huán)而不使用RTOS的延時函數(shù)這會導(dǎo)致該任務(wù)獨(dú)占CPU。正確的做法是在任務(wù)循環(huán)中使用osDelay()或vTaskDelay()來主動釋放CPU控制權(quán)。4. 關(guān)鍵驅(qū)動與中間件實(shí)現(xiàn)詳解4.1 傳感器驅(qū)動I2C通信與數(shù)據(jù)讀取驅(qū)動LIS3DH和MAX30102的核心是穩(wěn)定的I2C讀寫。HAL庫提供了阻塞式、中斷式和DMA式三種I2C通信方式。對于傳感器讀取我們通常使用阻塞式因?yàn)椴僮骱唵吻液臅r短。// LIS3DH 讀取加速度計(jì)數(shù)據(jù)的示例 #define LIS3DH_ADDR (0x18 1) // SA0接地地址為0x18左移1位是HAL庫要求 #define LIS3DH_REG_OUT_X_L 0x28 uint8_t data_buf[6]; int16_t raw_x, raw_y, raw_z; float accel_x_g, accel_y_g, accel_z_g; // 單位g // 讀取三軸數(shù)據(jù) HAL_I2C_Mem_Read(hi2c1, LIS3DH_ADDR, LIS3DH_REG_OUT_X_L | 0x80, I2C_MEMADD_SIZE_8BIT, data_buf, 6, 100); // 注意寄存器地址 | 0x80 表示啟用地址自動遞增可以連續(xù)讀取多個寄存器。 raw_x (int16_t)((data_buf[1] 8) | data_buf[0]); raw_y (int16_t)((data_buf[3] 8) | data_buf[2]); raw_z (int16_t)((data_buf[5] 8) | data_buf[3]); // 轉(zhuǎn)換為重力加速度g假設(shè)量程為±2g靈敏度為1mg/digit accel_x_g raw_x * 0.001; // 1mg 0.001g注意事項(xiàng)I2C通信失敗是常見問題。首先檢查硬件連接SCL/SDA上拉電阻、地址是否正確。其次在HAL_I2C_Mem_Read后檢查返回值。如果頻繁失敗可以考慮在I2C初始化后增加一個小的延時或者降低I2C速度。另外為I2C總線操作創(chuàng)建一個互斥量因?yàn)槎鄠€任務(wù)如Sensor_Task和某個調(diào)試任務(wù)可能同時訪問I2C導(dǎo)致沖突。4.2 低功耗藍(lán)牙BLE通信集成如果使用AT指令型藍(lán)牙模組如JDY-18驅(qū)動相對簡單。我們需要一個UART收發(fā)任務(wù)并解析模組返回的數(shù)據(jù)。初始化上電后通過UART發(fā)送一系列AT指令如ATNAMEMyBracelet設(shè)置名稱ATROLE0設(shè)置為主機(jī)等來配置模組。數(shù)據(jù)收發(fā)創(chuàng)建一個BLE_Task內(nèi)部是一個狀態(tài)機(jī)。通常模組在連接后會通過串口主動上報(bào)數(shù)據(jù)格式如NOTIFY:XXXX。我們的任務(wù)就是持續(xù)讀取串口接收緩沖區(qū)使用DMA空閑中斷方式效率最高解析這些指令。與手機(jī)交互定義簡單的應(yīng)用層協(xié)議。例如手機(jī)發(fā)送STEP?手環(huán)回復(fù)STEP:1234。手環(huán)的心率數(shù)據(jù)可以定時如每分鐘主動上報(bào)HR:78。這些協(xié)議數(shù)據(jù)通過隊(duì)列在BLE任務(wù)和其他任務(wù)間傳遞。// 串口空閑中斷DMA接收示例在CubeMX中配置 uint8_t uart_rx_buf[256]; uint8_t uart_rx_len 0; void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { if (huart-Instance USART2) { uart_rx_len Size; osMessageQueuePut(uart_rx_queue, uart_rx_buf, 0, 0); // 將收到的數(shù)據(jù)包放入隊(duì)列 // 重新啟動DMA接收 HAL_UARTEx_ReceiveToIdle_DMA(huart2, uart_rx_buf, 256); } } // 在BLE_Task中處理隊(duì)列數(shù)據(jù) void BLE_Task(void *argument) { uint8_t rx_packet[256]; while(1) { if (osMessageQueueGet(uart_rx_queue, rx_packet, NULL, osWaitForever) osOK) { process_ble_packet(rx_packet, uart_rx_len); // 解析協(xié)議 } } }4.3 顯示驅(qū)動與GUI框架對于小型OLED我們通常不移植復(fù)雜的GUI庫而是自己編寫輕量級的顯示函數(shù)。核心是創(chuàng)建一個顯示緩沖區(qū)uint8_t screen_buffer[128][8]對應(yīng)128x64分辨率每字節(jié)垂直管理8個像素所有繪圖操作都修改這個緩沖區(qū)最后通過Display_Refresh()函數(shù)一次性將緩沖區(qū)內(nèi)容通過SPI發(fā)送到屏幕。基本功能實(shí)現(xiàn)畫點(diǎn)、畫線、畫矩形、顯示字符取字模和顯示字符串的函數(shù)。菜單系統(tǒng)設(shè)計(jì)一個簡單的狀態(tài)機(jī)來管理菜單。定義一個全局變量current_screen根據(jù)其值如SCREEN_HOME,SCREEN_MENU,SCREEN_SPORT調(diào)用不同的繪制函數(shù)。按鍵事件會改變這個狀態(tài)。動畫與刷新為了避免屏幕閃爍應(yīng)采用局部刷新或雙緩沖機(jī)制。在我們的簡單實(shí)現(xiàn)中可以限制全屏刷新的頻率如10Hz由Display_Task中的一個軟件定時器觸發(fā)。實(shí)操心得SPI驅(qū)動OLED時時鐘速率SCK不宜過高尤其是使用杜邦線連接時2-5MHz比較穩(wěn)定。確保在SPI初始化序列中正確發(fā)送了OLED的初始化命令。一個常見的坑是忘記在數(shù)據(jù)傳輸間隙拉高DC數(shù)據(jù)/命令選擇引腳導(dǎo)致命令被當(dāng)成數(shù)據(jù)發(fā)送。5. 核心算法實(shí)現(xiàn)計(jì)步與心率計(jì)算5.1 基于三軸加速度計(jì)的計(jì)步算法計(jì)步算法的本質(zhì)是從連續(xù)的加速度數(shù)據(jù)中識別出“一步”的特征模式通常是一個峰值。一個簡單但有效的算法流程如下數(shù)據(jù)預(yù)處理從LIS3DH讀取的原始加速度數(shù)據(jù)是載體坐標(biāo)系下的即隨著手環(huán)轉(zhuǎn)動而變化。我們需要先計(jì)算合加速度acc_mag sqrt(ax^2 ay^2 az^2)這能消除方向的影響只留下運(yùn)動的強(qiáng)度信息。低通濾波合加速度信號中包含人體步頻1-3Hz和手臂高頻抖動。使用一個一階低通濾波器filtered alpha * filtered_prev (1-alpha) * acc_mag來平滑信號保留步態(tài)特征。alpha取值通常在0.8-0.95之間需要實(shí)測調(diào)整。動態(tài)閾值與峰值檢測我們不能用一個固定的閾值來判斷峰值因?yàn)椴煌俗呗?、跑步的幅度不同??梢跃S護(hù)一個動態(tài)的窗口如過去3秒的數(shù)據(jù)計(jì)算窗口內(nèi)數(shù)據(jù)的均值和方差。當(dāng)濾波后的值超過“均值 K * 方差”時K是一個經(jīng)驗(yàn)系數(shù)如1.5并且滿足一定的峰-峰時間間隔如200ms防止一步被多次計(jì)數(shù)則計(jì)為一步。步頻與步長估算記錄兩步之間的時間間隔即可得到步頻。步長估算則復(fù)雜得多通常采用經(jīng)驗(yàn)公式如步長 身高 * 系數(shù) * sqrt(步頻)或者更簡單地根據(jù)加速度的幅度進(jìn)行粗略分類。// 簡化的計(jì)步算法核心代碼片段 #define ALPHA 0.9 #define WINDOW_SIZE 30 // 假設(shè)采樣率10Hz3秒窗口 #define STEP_INTERVAL_MS 200 float acc_mag_filtered 0; float acc_window[WINDOW_SIZE]; int window_index 0; uint32_t last_step_time 0; uint32_t step_count 0; void Step_Detection_Update(float ax, float ay, float az) { float acc_mag sqrt(ax*ax ay*ay az*az); // 低通濾波 acc_mag_filtered ALPHA * acc_mag_filtered (1-ALPHA) * acc_mag; // 更新滑動窗口 acc_window[window_index] acc_mag_filtered; window_index (window_index 1) % WINDOW_SIZE; // 計(jì)算窗口均值與標(biāo)準(zhǔn)差 float mean 0, variance 0; for(int i0; iWINDOW_SIZE; i) mean acc_window[i]; mean / WINDOW_SIZE; for(int i0; iWINDOW_SIZE; i) variance (acc_window[i] - mean)*(acc_window[i] - mean); variance sqrt(variance / WINDOW_SIZE); float threshold mean 1.5 * variance; uint32_t current_time osKernelGetTickCount(); // 峰值檢測與時間間隔判斷 if(acc_mag_filtered threshold (current_time - last_step_time) STEP_INTERVAL_MS) { step_count; last_step_time current_time; // 發(fā)送步數(shù)更新消息到顯示隊(duì)列或全局變量 } }5.2 基于PPG信號的心率計(jì)算MAX30102輸出的是光電容積脈搏波PPG信號。計(jì)算心率HR和血氧飽和度SpO2是信號處理領(lǐng)域的經(jīng)典問題。對于手環(huán)項(xiàng)目我們可以先實(shí)現(xiàn)相對簡單的心率計(jì)算。信號采集MAX30102有紅光和紅外光兩個通道。我們主要用紅光通道或兩者都用來獲取PPG波形。通過I2C以較高的采樣率如100Hz讀取FIFO中的數(shù)據(jù)。預(yù)處理原始信號包含直流分量由組織、骨骼等反射造成和交流分量由血液脈動造成。我們需要用帶通濾波器如0.5Hz - 5Hz提取交流分量。在嵌入式端一個二階IIR帶通濾波器是計(jì)算復(fù)雜度和效果之間的良好折衷。峰值檢測對濾波后的信號進(jìn)行峰值檢測找到脈搏波的波峰位置。算法類似于計(jì)步但閾值策略可能不同。心率計(jì)算記錄連續(xù)N個如5個波峰的時間間隔求平均得到平均心跳周期IBI Inter-Beat Interval心率HR 60 / IBI單位次/分鐘。注意事項(xiàng)PPG信號極易受運(yùn)動偽影Motion Artifact, MA干擾即手部運(yùn)動會導(dǎo)致信號基線漂移和噪聲。這是光學(xué)心率測量的最大挑戰(zhàn)。業(yè)余項(xiàng)目很難實(shí)現(xiàn)完美的運(yùn)動補(bǔ)償。一個折中方案是在檢測到大幅度運(yùn)動通過加速度計(jì)時暫停心率測量或提示用戶保持靜止。MAX30102的FIFO深度有限讀取不及時會導(dǎo)致數(shù)據(jù)丟失因此讀取FIFO的任務(wù)優(yōu)先級必須足夠高。6. 低功耗設(shè)計(jì)與系統(tǒng)優(yōu)化實(shí)戰(zhàn)智能手環(huán)的續(xù)航是硬指標(biāo)。STM32F4系列提供了多種低功耗模式結(jié)合FreeRTOS的Tickless Idle可以大幅降低平均電流。6.1 硬件層面的低功耗設(shè)計(jì)電源域管理將不用的外設(shè)如調(diào)試用的串口、多余的GPIO時鐘關(guān)閉。外設(shè)選型所有外設(shè)傳感器、藍(lán)牙模組、屏幕都應(yīng)選擇支持低功耗模式的型號并在不使用時將其置于睡眠或關(guān)斷狀態(tài)。例如通過GPIO控制MAX30102和OLED的電源開關(guān)。LDO選擇選擇靜態(tài)電流Quiescent Current極低的LDO在系統(tǒng)休眠時LDO自身的耗電也很關(guān)鍵。6.2 軟件層面的低功耗策略外設(shè)動態(tài)開關(guān)在任務(wù)中只在需要時打開外設(shè)。例如Sensor_Task在每次采樣前打開傳感器電源和I2C時鐘采樣完成后立即關(guān)閉。屏幕在無操作30秒后自動關(guān)閉背光OLED則清屏。任務(wù)調(diào)度優(yōu)化合理設(shè)置任務(wù)優(yōu)先級和阻塞時間。讓低優(yōu)先級任務(wù)如按鍵掃描長時間阻塞osDelay(100)即阻塞100ms這樣調(diào)度器會頻繁發(fā)現(xiàn)所有高優(yōu)先級任務(wù)都處于阻塞態(tài)從而有機(jī)會進(jìn)入空閑任務(wù)并觸發(fā)Tickless Idle。啟用FreeRTOS Tickless Idle這是最關(guān)鍵的一步。在CubeMX中啟用后當(dāng)系統(tǒng)進(jìn)入空閑時會自動調(diào)用portSUPPRESS_TICKS_AND_SLEEP()函數(shù)。我們需要在該函數(shù)中根據(jù)下一個即將喚醒的任務(wù)時間計(jì)算出MCU可以睡眠的時長然后配置STM32進(jìn)入低功耗模式如Stop模式。在Stop模式下所有時鐘停止SRAM和寄存器內(nèi)容保持功耗可降至微安級。RTC喚醒即使系統(tǒng)休眠RTC仍在運(yùn)行。我們可以設(shè)置RTC鬧鐘定時如每秒喚醒系統(tǒng)一次用于更新時間和檢查是否需要執(zhí)行某些周期性任務(wù)如每10秒讀取一次傳感器。// 一個簡化的低功耗管理任務(wù)示例 void Power_Task(void *argument) { uint32_t last_active_time osKernelGetTickCount(); while(1) { osDelay(1000); // 每秒檢查一次 if((osKernelGetTickCount() - last_active_time) 30000) { // 空閑30秒 // 進(jìn)入深度睡眠模式 enter_stop_mode(); // 自定義函數(shù)關(guān)閉外設(shè)時鐘配置喚醒源等 // 被喚醒后... last_active_time osKernelGetTickCount(); } // 檢查電池電壓 check_battery_voltage(); } }6.3 功耗測量與優(yōu)化迭代你需要一個萬用表電流檔或功耗分析儀來測量系統(tǒng)在不同狀態(tài)下的電流。目標(biāo)是將平均工作電流控制在1mA以下待機(jī)電流在幾十微安級別。測量方法串聯(lián)在電池和板子之間分別測量屏幕點(diǎn)亮、藍(lán)牙廣播、傳感器采樣、系統(tǒng)休眠等狀態(tài)下的電流。優(yōu)化迭代根據(jù)測量結(jié)果找出“耗電大戶”。常見問題有GPIO內(nèi)部上拉未關(guān)閉、ADC采樣率過高、調(diào)試接口未禁用、任務(wù)阻塞時間太短導(dǎo)致頻繁喚醒等。通過調(diào)整軟件策略和硬件配置反復(fù)迭代直到達(dá)到滿意的續(xù)航水平。7. 系統(tǒng)集成、調(diào)試與問題排查實(shí)錄7.1 多任務(wù)同步與數(shù)據(jù)共享當(dāng)多個任務(wù)需要訪問同一資源如步數(shù)計(jì)數(shù)器、系統(tǒng)狀態(tài)結(jié)構(gòu)體時必須使用同步機(jī)制。FreeRTOS提供了多種選擇隊(duì)列Queue用于任務(wù)間傳遞數(shù)據(jù)塊。例如Sensor_Task將處理好的傳感器數(shù)據(jù)包發(fā)送到隊(duì)列Algorithm_Task和BLE_Task從隊(duì)列中接收。這是最安全、最推薦的方式。信號量Semaphore用于任務(wù)同步或資源計(jì)數(shù)。例如用一個二進(jìn)制信號量保護(hù)對SPI總線的訪問確保同一時刻只有一個任務(wù)能操作屏幕?;コ饬縈utex特殊的二進(jìn)制信號量具有優(yōu)先級繼承機(jī)制用于保護(hù)共享資源如一個全局的配置結(jié)構(gòu)體。任務(wù)通知Task Notification輕量級的信號量/事件標(biāo)志替代品速度最快但只能一對一通信。踩坑記錄我曾遇到過屏幕顯示亂碼的問題最后發(fā)現(xiàn)是Display_Task和另一個調(diào)試任務(wù)同時調(diào)用了SPI發(fā)送函數(shù)導(dǎo)致數(shù)據(jù)沖突。解決方法就是創(chuàng)建一個SPI互斥量任何任務(wù)在調(diào)用HAL_SPI_Transmit前必須先獲取這個互斥量。7.2 常見問題與解決方案速查表在開發(fā)過程中你幾乎一定會遇到下面這些問題。這里我整理了一份速查表希望能幫你快速定位。問題現(xiàn)象可能原因排查思路與解決方案系統(tǒng)啟動后卡死或運(yùn)行一段時間后死機(jī)1. 棧溢出最常見2. 堆空間不足3. 中斷優(yōu)先級配置沖突FreeRTOS系統(tǒng)中斷與HAL庫中斷4. 在中斷服務(wù)程序ISR中調(diào)用了不可重入的RTOS API1. 增大出問題任務(wù)的棧大小或使用FreeRTOS的棧溢出檢測鉤子函數(shù)。2. 在FreeRTOSConfig.h中增大configTOTAL_HEAP_SIZE。3. 確保FreeRTOS可管理的中斷優(yōu)先級如PendSV, SysTick設(shè)置為最低且所有用戶中斷的優(yōu)先級數(shù)值高于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY。4. 在ISR中只能調(diào)用以FromISR結(jié)尾的RTOS API。I2C/SPI通信不穩(wěn)定時而成功時而失敗1. 時序問題上拉電阻過大、線纜過長2. 多任務(wù)訪問沖突3. 中斷干擾1. 檢查上拉電阻通常4.7kΩ縮短連接線降低通信速率。2. 為總線操作添加互斥量。3. 嘗試在總線操作期間臨時關(guān)閉全局中斷謹(jǐn)慎使用。FreeRTOS的osDelay不準(zhǔn)確或系統(tǒng)響應(yīng)變慢1. SysTick中斷被其他高優(yōu)先級中斷長時間阻塞2. 任務(wù)優(yōu)先級設(shè)置不合理導(dǎo)致高優(yōu)先級任務(wù)長期占用CPU3.configTICK_RATE_HZ設(shè)置過高系統(tǒng)開銷大1. 檢查是否有中斷服務(wù)程序執(zhí)行時間過長。2. 優(yōu)化任務(wù)優(yōu)先級確保低優(yōu)先級任務(wù)也能得到執(zhí)行機(jī)會。3. 如果不是需要特別精確的定時可將configTICK_RATE_HZ降到100。進(jìn)入低功耗模式后無法喚醒1. 喚醒源如RTC鬧鐘、外部中斷未正確配置或使能2. 在進(jìn)入低功耗前未關(guān)閉所有可能阻止喚醒的外設(shè)如某些定時器3. 喚醒后時鐘未正確恢復(fù)1. 仔細(xì)檢查CubeMX中低功耗模式和喚醒源的配置并查看參考手冊的喚醒流程。2. 在進(jìn)入Stop模式前調(diào)用HAL_SuspendTick()并在喚醒后調(diào)用HAL_ResumeTick()。3. 使用調(diào)試器在喚醒后的第一條語句設(shè)斷點(diǎn)看程序是否執(zhí)行。藍(lán)牙連接經(jīng)常斷開或數(shù)據(jù)傳輸錯誤1. 天線匹配或布局問題信號弱2. UART通信波特率不匹配或有誤碼3. 應(yīng)用層協(xié)議解析錯誤緩沖區(qū)溢出1. 檢查藍(lán)牙模組天線周圍是否有金屬遮擋盡量遠(yuǎn)離MCU等數(shù)字電路。2. 用邏輯分析儀抓取UART波形確認(rèn)波特率、起始位、停止位是否正確。3. 在協(xié)議解析函數(shù)中加入嚴(yán)格的長度檢查和幀頭幀尾校驗(yàn)。計(jì)步或心率數(shù)據(jù)不準(zhǔn)1. 傳感器放置位置不佳信號質(zhì)量差2. 算法參數(shù)如濾波系數(shù)、閾值未針對當(dāng)前用戶或運(yùn)動模式優(yōu)化3. 運(yùn)動偽影干擾嚴(yán)重1. 確保傳感器緊貼皮膚避免漏光。2. 設(shè)計(jì)一個校準(zhǔn)模式讓用戶靜止站立和勻速步行一段時間自動計(jì)算基線參數(shù)。3. 結(jié)合加速度計(jì)數(shù)據(jù)在劇烈運(yùn)動時給出“信號弱”提示而不是顯示不準(zhǔn)確的數(shù)據(jù)。7.3 調(diào)試技巧與工具串口打印最基礎(chǔ)的調(diào)試手段。但要注意在低功耗設(shè)計(jì)中頻繁打印會極大增加功耗??梢远x一個調(diào)試宏在發(fā)布版本中關(guān)閉。SEGGER SystemView強(qiáng)烈推薦。這是一個圖形化的實(shí)時系統(tǒng)分析工具可以可視化地看到所有FreeRTOS任務(wù)的運(yùn)行狀態(tài)、切換、中斷發(fā)生時間等對于分析系統(tǒng)卡頓、優(yōu)先級問題、調(diào)度情況有奇效。邏輯分析儀用于抓取I2C、SPI、UART的波形是排查通信問題的終極武器。STM32 CubeMonitor可以實(shí)時讀取和繪制STM32內(nèi)存中的變量如傳感器原始數(shù)據(jù)、濾波后數(shù)據(jù)非常利于算法調(diào)試。完成以上所有步驟你將得到一個功能相對完整、運(yùn)行穩(wěn)定、續(xù)航可觀的智能手環(huán)原型。這個項(xiàng)目最大的價值不在于復(fù)現(xiàn)一個產(chǎn)品而在于你親手打通了從硬件選型、RTOS移植、驅(qū)動編寫、算法實(shí)現(xiàn)到低功耗優(yōu)化的全鏈路。每一個踩過的坑都是你嵌入式開發(fā)能力樹上堅(jiān)實(shí)的枝干。最后別忘了為你的手環(huán)設(shè)計(jì)一個漂亮的3D打印外殼讓它從一堆電路板變成一個真正的可穿戴設(shè)備這份成就感是無可替代的。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚州操操穴网| 97美日韩视频| 密臀视频三区免费网站| 超碰97久久国| 嗯嗯嗯啊啊啊操的我好爽 | 国产品精品自在在线午夜免费| 78久久久| 日韩情色视频| 丁香五月电影| 97人人模人人爽人人| 久久专区| 91爱啪| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 天天日天天舔| 男人天堂黄片| 亚州色图狠狠干| 天堂中文资源在线bt| 夜夜躁狠狠躁日日躁av| 男人的天堂久久狠| 久久蜜桃综合网| 91欧美| 国产日韩欧美三级片| www.亚洲黄色| 国产美女口爆吞精视频| 亚洲中文字幕在现观看| 肏逼视频日本| 91综合色| 欧美性天天| 国产情色在线| 嫩草 人人网精品| 国产免费大片| 后入人妻一区| 韩国毛片一区二区三区| 人妻五十路在线| 欧美日韩精品国产91| AA丁香综合激情| 中国亚洲呦女专区| 欧美在线官网| 看黑人AV不卡| 国产农村妇女精品1区二区| 免费a在线播放v| 91影库| 日B操| 超碰色老头| 这里都是精品| 亚洲图片另类| 日韩三级伦理中文字幕| 国产精品嫩草久久久久| av天堂天堂av日韩| 人人摸人人干人人拍97| 日本一级性爱| 国产欧美日韩在线观看麻豆传媒公司| 人妻丰满熟妇一区二区三| 国产午夜在线观看| 草草影院日本第一页| 国产乱人妻精品入口| 天天看人人操屄犊摸阴| 日本三级精品| 免费看A片毛毛片在线播| 探花一区在线| 蜜桃传媒一区二区亚洲| 91色图片| 后入福利| 91夜色| 国产久久久| 亚洲青青草| 密臀在线视频| 高清孕妇孕交| 91呆哥人妻| 婷婷久久五月| 人妻大相焦在线| 精品无码人妻一区二区免费蜜桃| 最新国产精品| 俺去俺来也在线www| 中文字幕精品资源在线| 免费一级欧美片片线观看| 色哟哟国产精品免费网址| 91人妻视频在线| 亚洲免费精品一区| 97资源站久久| 蜜臀一区二区三区在线 | 囯产乱伦一区二区三女| 91 丝袜在线| 午夜精品人妻二区三区| 久久9精品| 老女人老91妇女老热女| 久久9免费视频| 欧美成人A√在线一区二区| 亚洲蜜乳av| 久久婷婷亚洲| 国产后入清纯| 五十路熟女人妻一区二区在线观看| 丰满人妻一区二区三区性色| 国产 三级自拍| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 午夜免费福利视频一区| 日本三级久| 一区二区三区四区在线不卡| 91色狼| 奇米狠999| 亚洲 欧美 91| 欧美日韩人妻精品一区二区三区| 精品久久久久久无码| av日韩在线观看电影| 日韩/97| 欧美九九九| 成人五级久久| 国产视频一区二区在线观看| 九九精品网| 亚洲欧美另类图片| 校园春色综合| 日本操逼视频免费| 精品国产乱码久久久久久久久1| 亚洲视频二区 | 欧洲精品欧洲精品| 在线观看无码三级少妇| 免费人人搞97| 日韩精品资源专区二区| 国产剧情一区在线观看| 色97干| 亚洲天堂99| 久久久天美| 国产高清自拍视频| 大鸡吧尹人在线| 欧美加勒比| 色情综合| 亚91网| 你懂的在线观看区国产| 欧美A√综合网| 性色av蜜臀av色欲aV| 丝袜狠狠草尤物人妻av91| 992视频一区| 五月婷婷六月色| 欧美性高潮| 2020视频1区2区3区| 性欧美999| 国内精品久久久久影院亚洲| 97久久国产精品女不卡| 综合天天网| 欧美性高潮| 一区二区精品更新提醒| 亚洲国产精品无码AV久久| 亚洲图片欧美在线视频| 国产精品熟女一区二区三区| 国产精品青青草| 91无码西班牙视频在线| 五月开心久久AV官网| 影音先锋视频在线| 香蕉精品二区二区| 人妻天天夜夜爽一区二区| 九九九九免费| 中文字幕视频免费| 蜜乳AV色欲AVAV无码| 人妻欧美| 伊人991| 97任你吞精| 大粗鳼巴久久久久| 思思热在线观看| 欧美成人免费在线观看| 天天看高清麻豆| 欧美一级A片在线看视频性色| 91超碰在线观看| 在线无码操| 亚洲狠| 夜色五月天| 日本熟女免费視颖| 亚洲午夜精品久久久中文影院| 韩日性爱av| 999久久久久久久久| 口爆综合网| 久久久久久久伊人精品| 伊人欧美大香蕉视频| 精品视频123区小说区| 少妇一级婬片免费放一级a性色.| 五月丁香激情四射| 97国产超碰| 在线情色电影 91大 | 日韩激情中文字幕有码| 久久东京热久久| 亚洲综合一| 992这里有精品| 中字幕人妻一区二区三区| 黑人综合色| 97午夜剧场日韩| 天天躁日日躁AAA片李宗瑞| 欧美亚洲手机在线| 人人妻天天做天天爽| 99999精品视频| 高清在线偷拍自拍视频| 嫩草一区二区在线观看| 日本孕妇一区二区视频操逼免费看 | 亚洲欧美综合图片| 天堂伊人久久| 在线五区| 国产97在线播放| 成人天天爽| 青青草原人妻| 国产熟女乱论| 99久热| 国产极品美女高潮无套在线观看 | 丝袜天堂| 中文字幕-区二区三区四区视频中国 | 曰韩香蕉97| 99色在线| 黑丝少妇麻豆| 青青草吊丝| 精品久久久九九九孕妇| 99热只有| 亚洲男人的天堂一区二区| 九九香蕉网| 强奸乱伦中文字幕AV| 中文字幕精品日韩中文字幕| 国产精品亚洲无码| 日韩精品一区二区日韩| 亚洲成人日韩小说| AV无码久久久精品| 肉嘟嘟www视频在线观看高清| 91视频精品| 中文字幕精品探花视频| 精品免费一区| 日本淫乱女一区二区三区视频| 亚洲91射| 蜜臀久久99精品久久久久久成人小说 | 久久久性爱| 欧美丝袜亚洲| 黑人在线91| 国产99999| 色爱天堂| 国产无吗在线播放| 国产精品欧美日韩久久| 日韩欧美成人综合在线| 懂色AV蜜臀无码精品APP | 99啪啪视频| 超碰97玖玖爱| 日韩八十路老熟女| 青草精品视频-日本久久久久网站| 蜜臀99久久国产| 中文字幕乱亚洲美女精品一区| 欧美美女视频| av天堂天堂av日韩| 久久一区二区三区入口| 九九色热| 亚洲色图美腿丝袜| 搡老女人老91妇女熟女| 午夜舔阴达高潮视频免费看| 日本三级A片网站com| 成人性爱免费播放| 午夜高清成人在线视频| 国产欧美日韩女同性恋ww喷水精品 | 国产浮力影院第1页| 三男一女不戴套的A片| 家庭乱伦麻豆| 精品在线观看视频在线| 国产精品一区二区在钱播放| 少妇第一页| 综合熟妇一区二区三区| 久久超碰国产一区二区三区| 亚洲国产成人精品久久久国产成人一区二区三. | 操操操五月天婷婷丁香影院| 无色无码| 97超碰人操| 五十路三区在线| 女同女同恋久久级三级| 中文字幕 国产 精品 | 国产精品盗摄 偷窥盗摄| 婷婷亚洲五月***久久| 91麻豆天美国产欧美日| 爱射综合| 女上位精品在线| 9久久久久| 日本www操操操| 熟女被操视频网址| 久久国99999| 欧美78P| 18禁免费视频| 91丨九色丨国产打屁股| 97就爱干| 26uuu国产亚洲综合| 欧美黑人与女人91| 在线观看国产黄色| 综合色久欲| 91综合色噜噜| 国产浮力影院第1页| 污到发麻的视频 国产| 日本高清一本二本免费不卡| 国产AV久久野战精品| 天天添天天干电影| 天天综合中文字幕 91| caoni国产亚洲av| a在线观看| www久久精品| 国产黄色小视频网站| 色精品极品| 中国和日本人色哪个不下载能放| 亚洲中文字幕三级在线| 超碰无码五月97| 综合久久97| 欧美天天拍| 羞答答AV中文字| 人人操人人大香蕉| 亚洲影视高清第一页| 萌白酱自拍视频| 天天夜夜久久| 久操操AV电影| 欧美黑人91| 亚洲中文日韩欧美大香蕉视频| 国产夜夜艹| 精品国产乱码久久久久久网站入口| 最新日日夜夜天天干干| 五月丁香激情四射| 另类小色呦| 强奸乱伦动态污图免费 | 天天射网| 无码二级三级| 亚洲一区中文字幕一区| 老汉网| 秋霞怕怕片| 日本一级性爱| 久久久久久裸体| 国产一区二区三区免费视频在性观看| 开心激情站| 校园春色中文字幕AV| 国产精品香蕉| 清柠毛片| 无卡一区=区| 大香蕉日韩| 超碰97人人cao| 欧美久久九九| 亚洲av性爱电影| 久草视频在线视频在线视频在线观看| 免费农村成人少妇人妻Aa一区二区视频| 亚熟hd视频在线| 国产精品视频自拍在线| 女色视频社区| 98久久| 人妻9117c| 欧美综合97www| 国产精品熟女一区二区三区| 曰韩欧美国产传媒麻豆第一区| 91 天天综合| 久久久久成人蜜桃精品| 超碰在线一区| 中文字幕一区二区三区高清| 97人人爱人人做人人乐| www.av在线视频| 国产丸一视频| 国产精品一二三免费网站| 久久女人| 锕锕好爽 死我在线观看| 全免费a敌肛交毛片免费| 91插B网站| 蜜色网色哟哟| 亚洲精品a人片在线观看视| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 丰满人妻一区二区三区在线| 91亚州| 啊啊啊啊啊啊啊啊要喷了| 国产精品自拍欧美在线| 亚洲视频中文一区| 男人的天堂VA| 久久久久幕乱码| 色色热| 两性色网| 亚洲AV秘 精品久久老牛影视| 国产精品丝袜在线| 国产精品久久久午夜夜伦鲁鲁| 1956日韩精品| 99在线精品观看99| 伊人操你| av一区二区三区四区| a片久久久久久久久久久久 | 性色av一区二区| 五月激情在线| 欧美黑人性猛交91| 中文字幕日本久久| 日本在线激情一区二区三区| 日韩精品亚洲专区在线影视| 久久毛卡| 国产精品天干天干综合网麻豆| 国产精品麻豆成人AV艾秋| 麻豆天美国美国产| 97天天搞在线| 夜夜騷av、一區二區| 在线人妻熟女一区二区三区四区五区| 国产女人高潮视频| 欧美曰韩国产精品| 久久久9品一区二区三区| 999久久久精品国产| 熟女日韩| 91超碰丝袜制服| 成人九九| 四虎影视永久在线免费| 亚洲无码免费看| 亚洲熟女av日韩熟女| 激情久久久| 校园春色综合色| 2017大香蕉国产精品久久| 欧美 亚洲 另类 综合| 婷婷九月丁香| 51久久夜色精品国产麻豆| 无码伊人久久大杳蕉中文无码| www.狠狠| 男人的天堂日韩| 亚洲国产精品无码AV久久| 日韩成人无码| 91粉嫩萝控精品福利网站_精品影音先锋国 | 丰满人妻一区| 内射小黄片| 人妻久久久久久| 婷婷九月国产| 欧美黄色片在线播放| 一级啊性爱在线视频| 婷婷久草一区二区三区| 啊嗯嗯啊好大好爽| 9999免费精彩视频| 九九九九九九九九九九九蜜桃| 一区二区不卡视| 亚洲精品a人片在线观看视| 久久综合五月天| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 九九热免费国产视频婷婷伊人| 美女黄码视频午夜| 日韩精品一区二区日韩 | 色官网色综合| 加勒比色综合| 欧美极度丰满熟妇hd| 粉嫩AV一区夜夜嗨| 亚洲成a人片在线观看中文!!!| 久久综合18p| 人人妻人人爱人人玩| 国内毛片无码一级毛片| 亚洲区 欧美区| 婷婷五月成人| 嗯嗯啊好爽| 久久亚洲影院一区二区| 亚洲国产97| 午夜激情床戏激情| 国产亚洲色停停久久99精品91| 99只有精品| 欧美 亚洲 第一页| 强上我不卡卡| 亚洲无码成人精品| 婷婷探花久久精品一区| 一区二区三区四区色图| 日韩精品碰碰| 欧美碰碰综合色| 一区二区三区国产精产| 亚洲一区操| 国产欧美成人第一页在线观看| 2000亚洲男人天堂| 五月婷婷六月天| 日本免费一级AAA大片器| 男人的天堂三级| 久久久久9久久久久| 国产久久成人| 操逼A∨| 风月影院男女十八禁| 操婷婷逼| 成人性爱av.com| 性天堂| 日韩专区久久久| 亚洲欧美一区二区三区在钱蜜桃| 乱伦系列一区二区| 蜜乳视频网站| 亚洲成a人v欧美综合天堂下载| 亚洲图片 激情小说| 欧亚不卡| 欧美成不卡网| 99热超碰| 亚洲综合五月天婷婷丁香| ..日韩av毛片精品久久久| 中文字幕99999| 97操97干| 5252色欧美在线男人的天堂| 亚洲。天堂。日本在线观看| 久久久久密臀视频| 亚州图片第一页| 女上位精品在线| 夜夜骑操视频| 日韩综合97P| 97频视在线| 综合天天网| 黄色人人| 色噜噜人妻丝袜a∨先锋影| 亚洲成人无码影院| 色婷婷电影网| 人妻少妇av在线观看| 国产1769在线| 午夜福利视频在线一区| 久久直播国产| 长长久久88视频| 大香蕉综合| 人妻五十路在线| 任你干在线视频| 精品一区二区三区蜜桃| 欧美18 在线观看| 日本黄色精品专区网站| 欧美日本国产日韩激情视频| 国产自产自拍| 操人无码| 色九九九九| 啊啊啊啊好疼视频| 日韩欧美福利视频看看| 亚欧国产无码精品在线| 二对二中文字幕。| 欧美色图另类图片| 96久久精品一二三区色欲| 91 亚洲 欧洲| 久久久少妇诱惑精品视频| 天天视频黄| 26uuu欧美日韩| 青青草日韩无码| 少妇内射www在线观看视频 | 激情五月婷| 后入日本1234| 日日碰狠狠添天天爽超| 嗯嗯啊操我| 97亚洲国产| 激情无码日韩| 亚洲s色图| 成年人一级黄色毛片大全在线观看| 超碰人人乐97| 综合 亚洲 欧美| 日韩人妻精品久久久久| 红杏大香蕉| 国产不卡的视频 | 97久久精品| 久久国产99精品72福利| 天堂v无码免费视频| 中文字幕在线24| 久久精品国产亚洲av水密被窝| 日韩欧美中文| 亚洲日韩欧美一区二区| 亚洲中文日韩欧美大香蕉视频| www.高清无码诱惑一区.com| 国产精品亚洲一级av第二区| 操b网站亚洲无码| 丰满岳乱妇一区二区三区| 九九成人精品| 日韩精品在线观看网站| 91美| 亚洲97P| 人人妻人人爽 97人人看碰人免费公开视频| 日本久操视频| 国产欧美一区激情交| 人人澡人人干| 男人的天堂VA在线| 婷婷激情五月综合| 国产亚洲性生活视频播放| 欧美制服网站美腿丝袜| 国产精品久久伊人| 69人妻人人揉人人躁人人精品| 在线天堂999| 丰满高潮18xxxx| 家庭乱伦麻豆| 婷婷综合伊人一区| 乱操9999| 亚洲有码第一页| www.操| 国产成人无码久久精品| 精品人妻1区| 欧美色图电影| 91精品国产长腿丝袜美女| 国产青一二三| 欧美九9 9 9| 人妻激情偷乱视三区频一区二区| 久久久亚洲Av| 国产不良强奸视频免费看| 男人的天堂VA| 久久嫩草| 夜夜性| 一区二三区四区视频大全套| 小草精彩毛片| 国产老熟女| 国产精品女久久久久av爽| 欧美一二三| 性天堂| 人人操 欧美| 人人干人人操人人爱| 日韩av性爱在线播放| 97色伦97色伦国产欧美| 翔田千里无码中出中文字幕| 少妇一区二区三区精选| 在线免费观看日韩一区| 殴美大黄片| αⅴ天堂| 99亚洲精品| 极品色社| 色阁阁AV综合网| 久久97视频| 国产熟妇 码视频户外直播 | 家庭乱伦麻豆| 亚洲中文日韩欧美大香蕉视频| 久操com| 久久九九国产精品| 色噜噜国产在线| 九七毛片九九毛片| 国产精品午夜AV完会免费| 国产一区二区在线播放量| 日韩一性一交一A片俄罗斯| 九九激情网| 91精产一区二区三区| 亚洲精品xxx| 黑丝少妇| 凹凸 69堂 在线播放| 欧美人黑A片无码免视费| 人人摸人人摸人人干| 超碰97资源中文字幕| 精品久久久久成人码免| 亚洲日韩av专区无码| 中文字幕亚洲热播人妻| 日韩天堂av电影在线观看| 天堂av最新电影网| 日韩一性一交一A片俄罗斯| WWW4虎| 夜夜欧美| 激情婷婷五月天| 天天欧美| 久久精精区一区二区一蜜桃一区二区| 欧美亚洲宗合色性图| 欧美视频一| 色呦呦、国产精品| 伊人五月天婷婷| 国产久久视频| 无码久久亚洲高清,| 天天干天天日天天射黄色| 无码人妻1727| 蜜臀人妻少妇久久在线观看| 操逼日批| 日韩欧美~中文字| 丝袜熟女一区二区三区| 一级免费精品| 91狠狠色丁香婷婷综合久久精品| 激情婷婷丁香| WWW啪啪的com| 夜夜国自区| 五月天伊人| 亚洲色图欧美激情| 高清不卡一二三区视频......| 超碰97久久| 色五月网址| 四虎在线视频| 综合九九| 久久五月份| 粉嫩av久久一区二区三区| av东京热男人的天堂| 婷婷五月天av| 日韩性爱一级片| 另类图片五月天| 97超碰热线| www.久久爱| 粉嫩av久久一区二区三区| 欧美爱国产综合、| 色狠人在线99| 日韩三级网址| 性吧在线视频| 色综合久久久久| 一区二区三区高清天码| 啊嗯嗯啊好大好爽| 熟女一区二区| 99色视频| 色综合色综合网| 丰满人妻无码一区二区三区| A级在线视频| 青青色在线观看| 九九热精品视频六| 欧美淫乱视频| 超碰吊日色| 蜜桃狠狠色伊人亚洲综合 | 思思热在线视频精品| 尤物黄色在线观看网站| 精品国产无码中文| 亚洲国产一区二区日韩专区| 久草免费在线视频| 91天美| 99久久精品欧美国产| 人人妻人人爱人人玩| 亚洲欧美不卡线| 91色图| 久久啊啊| 国产野战露脸在线播放| 日韩视频啪啪| 五月天婷婷成人网| 大香蕉在线视频15| 久久少妇视频| 欧美老妇女内射网址| 91色碰| 91精产一区二区三区| 超碰在线1234区| 精品一久久久| 蜜汁欧美| 少妇一区二区三区在线观看| 欧美精品欧美精品系列 | 日日夜夜精品视频| yirendaxiangjiashipin| 天天操美美| 亚洲综合草草| 91色交| 久草婷婷| 二级久久网| 欧美精品亚洲精品日韩传电影| 国产农村妇女精品| 色色色天美视频| 一区二区激情国产熟女| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 97色色视频| 爱啪精品一区| 韩国一级做a久久久久| 强奸乱伦日韩AV| 欧美大香蕉专区网| 精品夜夜澡人妻无码| 后入式五六区| 亚洲人妻在线一区| 色女99一级片在线观看| 啊啊啊啊啊啊啊啊视频| 国产成人手机视频激情| 天天看综合网| 97视频在线| 99这里有精品| 91白虎| 午夜寂寞欧美| 老女人爆菊| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲蜜乳av| 久久久九| 色情综合| 搡老女人老熟女91老熟女综合网| 久久久九九网站| 熟妇女伦乱视频视频| 欧亚在线视频| 91久久婷婷| 国产成人精品日本视频| 新91视频.cmp| 97色婷婷| 极品销魂美女一区二区| 久草精品视频| 黄色高清无码无码破解免费暗网| 久久黄黄黄| 五月天黄色av| 久久香蕉国产线看观看亚洲女人| 亚洲少妇诱惑| 久久人妻熟女一区二区 | 色婷婷综合网| 秋霞无码av鲁丝片一区| 日本ZZ高免费A级视频| 麻豆黄四叶草网站| 丁香九月激情| 国产不卡免费在线视频| 在线视频免费观看午夜| 久久久久久无码人妻中文字幕| 色综合久久夜色精品国产天堂| 五月天激情小说| blacked精品一区国产| 欧美色人| 被窝影院午夜看片无码| 男女国产精品| 亚洲色婷婷综合久久久久中文| 国产性感骚丝袜在线| 五月天久久久| 69超碰综合| 男人天堂2019亚洲| 欧美1727免费观看视频| 五月婷婷深深爱| 久9热| 一本久道久久综合狠狠爱| 日本一级一级一级一级| 国产18精品亚洲精品| 秋霞欧美性爰视频| 午夜天堂啪啪| 日本欧美成人片AAAA| 玖色AV| 久九九九九九九热| 亚洲激情色片| 久久人妻无码毛片A片麻豆| 久偷拍欧美日韩三区| 久久久草草精品| 精品女同一区二区三区| 91丝袜美女视频| 亚洲国产综合图区中文字幕| 天天肏天天干| 亚洲高清视频在线免费观看| 欧美精品23| 美女写真| 天天看综合网| 免费看污网址| 日韩小电影| 青娱乐欧美激情一区二区| 国产成人bd在线观看| 97自拍视频在线| 亚洲AV资源| 亚洲综合另类色图| 激情小说图片亚洲首页| 97操在线| 俄罗斯及免费在线看| 无码高清专| 五月婷婷六月色| 久久综合久色欧美综合狠狠 | 久久熟妇五十路一区| 青青久久久| 激情熟女12P| 五月香婷婷| 激情五月激情综合网| 国产乱伦视频污| 久久是精品| 人人做,人人操,人人摸| 99热只有这里有精品| 97干日韩| 91白嫩| 亚洲精品日日夜夜52| 久久久18禁| 后入式免费视频| 青娱乐亚洲自拍| 看看小穴| 福利视频香蕉免费一区二区在线| 婷婷五月成人| 超碰78| 欧美专区第一页| 亚洲天堂精品日韩电影| 亚洲男人的天堂亚洲| 9久久久久久| 牛牛aV| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久草成人影片| 亚洲色欲天天人妻无码系列专区| 97在线观看免费| 国产成人+综合亚洲+天堂| 少妇的嫩逼图片| 久久熟女人| 国产综合日韩伦理| 99黄页网站| 国产精品一区二区黄片| 超碰97丝袜| 5252色欧美在线| 免费看A片毛毛片在线播| 久热精品在线| 夜夜操天天肏| 中文激情网| 99re免费视频精品全部| 人人摸人人舔一区二区| 国产九月婷婷| Av手机版天堂网| 色色97爱| 91劲爆| 日本不卡三级网在线播放| 中文字幕aⅴ在线视频| 97色亚洲| 玖玖资源视频一区二区三区| 亚洲色图在线视频| 国产精品久久伊人| 国产一级不卡在线观看| 秋霞午夜成人福利片片| 最新制服中文第一页| 日韩在线97| 丝袜美腿校园春色| 大香蕉婷婷| 少妇滛荡视频| 十八禁视频网站| 精品国产乱码久久久久久口爆网站| 三上悠亚在线毛片91| 色99久草| 后入式999| 制服中出中文人人精品| 西西美女视频网| 国产女同性恋视频| 久久超碰大香蕉| 秋霞午夜视频一区二区| 夜夜高潮夜夜爽| 久操视频免费在线观看| 成人精品电影| 五十路熟女工口 | 干B网| 992视频一区| 蜜臀久久99精品久久久电影| 91亚洲在线| 狠狠操官网| 1024人妻熟女一区二区三区| 睡产熟女乱伦| 性爱动态120秒| 久久精9| 亚洲文学偷乱拍啪啪啪啪| 好爽要喷了| 91粉芽高清在线一区二区| 97在线欧| 伊人久操| 色五月AV| 麻豆天美国美国产| 亚洲人妻中文在线视频| 国产不卡中文字幕免费avi| 久久av成人无码免费| 中文字幕一区二区三区人妻不卡| 亚洲综合色网| 岛国A V在线免费看| 天天综合站| 亚洲精品蜜桃久久久一区二区三区| 偷拍偷窥与盗摄视频专区| 国产丝袜美腿美女麻豆| 亚洲一区二区三区欧美日韩| 97综合在线| 久久AV色| 麻豆性爱视频在线播放| 手机在线A片| 2017大香蕉| 人妻夜爽夜夜爽| 97AV在线免费观看| 色性荡荡荡荡视频| 91深夜夜| 成全动漫视频观看免费下载| 欧美色性情| 黑人粗大V S日韩女优视频| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 97日本超碰综合| 精品一区二区亚洲国产| 少妇无码av专区线| 久久久精品91八戒| 夜夜欢天天干| 超碰色97| 国产97色在线| 91精品人妻| 久久内射| 91人妻人人澡人人爽人人精品| 亚洲国产中文字幕| 久久夜精品一区二区三区| 久久男人网| 97公开久久| 1204金沙人妻懂旧版免费| 蜜奶av| 天天澡天天爽日日av| 色精品极品| 精品免费1| 国产亚卅97| 久久一二三四不卡| 日韩 成人 有码| 少妇极品熟妇人妻无码| 77国产精品| 福利大香蕉| 日日躁天天躁狠狠躁| 蜜臀久久久99久久久久 | 日本久操视频| 四虎 精品 WWW| 午夜欧美神马久久久久| 四虎884| 欧美日韩亚洲少妇寂寞影院正在播放| 综合色欧美| 成人av福利在线观看| 国产丝袜美女在线一区| 在线中文字幕极品av| 丁香五月影院| 美女黑人91神马| 日韩内| 天天插夜夜操| 丁香五月影院| 99国产精品免费| 亚洲欧美清纯| 久久精品中文字幕无码l| 色五月婷婷五月天| 九九热精彩视频| 欧美亚洲激情| 欧美人妻精品一区二区| 九九九九九九亚洲| 综合网少妇| 蜜臀久久99精品久久久久久酒店| 久久性爱精品一区| 熟女丰满人妻一区| 长久操视频| 中文字幕,人妻,日韩| 男人天堂2019亚洲| 久久久久久无码人妻中文字幕| 亚洲人体视频在线观看| 亚洲 欧美 天天| 日比av无码| 九九伊人网| 性欧美| 亚洲夜夜欢无码一区二区| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 超碰色老头| 香蕉久久国产AV一区二区| 综合久久99亚洲人妻中文在线| 国产高清自拍视频| 嗯嗯嗯,草死我| 一区二区高清视频| 久久99热这里只频精品6学生| 日本熟妇精品九九| 性爱乱伦一区| 青青草女人天天干| 人妻AV在线| 香蕉综合网| 91国产大片| 欧美性爱1080p| 无码精品啪啪啪一区二区三区三州| 八人操人人摸人人看| 日本精品九九九| 激情av| 色哟哟AⅤ| 亚洲色图欧美另类在线| 国产69精品久久久久99尤物| 天天日美女的B| 亚洲综合成人网| 久久午夜色播影院免费高清| 91国产大片| 亚洲免费人妻在| 国产精品操| 嗯嗯啊啊日韩精品| 大香蕉免费中文| 一区二区三区黄片免费观看| 99re视频在线播放青草| 激情文学 国产一二三aV| 亚洲天堂人妻熟妇视频| 中文字幕乱码在线| 久久久久大香青草精品综合| 污啪啪啪视频| 美國A片| 熟女乱3伦999| 东京热毛片调教| 久久综合av| 97干com| 东京热男人的天堂网| 免费操逼视频下载| 翔田千里A片一区二区| 亚洲资源吧| 在线五区| 大肉棒导航| 色老汉色| 99999久久久久9国产精品| 黄色片大香蕉| 日韩一级成人毛片免费观看| 超碰免费97| 女生久久网| 美腿丝袜高跟网免费视频免费视频| 亚洲国产成人高清在线| 欧美不卡二区| 国产大学生口爆吞精合集| 亚洲日韩美女中文字幕乱| 乱伦熟女论坛| 亚洲天堂在线怕怕视频| 国产精品福利资源在线尤物| 超碰综合97在线| 久久9999 | 在线人人人人人人精品超 | 加勒比综合九九99视频在线播放| 久九九九九九九热| 欧美天天拍| 丰满少妇一区二区三区专区| 国产成人AV麻豆| 九九热超碰97亚洲最新香蕉| 色诱中文字幕| 久久久久国产精品人妻aⅴ天堂| 超碰在线第一页| 久久久久久中文| 熟女人妻一区二区三区免费看| 97欧美日韩| 97无码视频在线播放| 搡老熟女老女人老熟妇免费视频| 污污汅18禁网站在线永久免费观看 | 91九九九逼| 东方亚洲在线操逼天堂| 亚洲色交| 特级毛片特黄久久免费看| 五月婷婷深深爱| 国产丰满熟夫69mpp| 国产搭汕a级片| 欧美成人四级在线播放| 日韩视频啪啪| 国产久久视频| 青青青青青手机视频| 都市久久精品激情亚洲| 97久久视频| 成人一级二级| 黑人狂躁日本妞一区二区三区| 成年女人18级毛片毛片免费观看| 亚洲男人的天堂V| 色综91| 思思热免费视频观看| 欧美白嫩女HD| 欧美人与动性人交a| 日本韩欧美在线播放a| 欧美A√综合网| 麻豆视频国产一区二区| 日韩人妻资源网| av东京热男人的天堂| 欧美精品三级黄片| 亚洲国产一区二区三区在线| 91制服丝袜| 五月天色色色| 啊啊啊啊啊在线| 91亚·色| 中韩中文字幕在线观看| 99久久久无码国产精品性男| 国产超碰欧美| 成人乱码一区二区三少妇| 国产精品密臀网在线观看| 色狠狠 - 百度| 噜噜瑟| 日本三级黄页| 综合色一区三区二区| 久久黄色网址| 热久久国产| 国产精品suv一区| 激情小说成人日本无码一| 五十路熟女在线不卡观看一区二区| 亚洲精品一区二区精品| 伊人伊人LD| 伊人久久婷婷| 国产9 9在线 | 亚洲| 人人综合| 欧美一级黄色18片免费看| 色五月AV| 亚洲国产亚洲天堂| 亚洲成人久久一区二区| 欧美日韩亚洲少妇寂寞影院正在播放 | 成人性爱美曰韩| 人人操人人色网| 婷婷精品国产欧美精品亚洲人人爽| 亚洲一区日韩| 亚洲A曰本VA欧美VA视频| 超碰 欧美| oumeizonghese,www| 久久亚洲精品成人av| 性夜影院爽黄A爽免费动漫| 中文字幕精品专区搜索结果91| 亚洲情色电影网| 欧美日韩操逼动图| 日本操逼aaaaa| 欧美中文综合| 久啪视频| 亚洲日韩久久精品一区| 久久啊啊| 亚洲 欧美 第一页 | 97综合在线| 操逼免费视频无码国产| 亚洲国产熟妇综合色专区| 欧美草草高清日韩视频| 玖玖草久草99蜜月一区二区三区| 五月色网| 99ri精品| 色优久久| a久久| 亚洲欧美日韩夜夜| 无码WWW免费视频网站| 亚洲无码?第一页| 神马久久久久久伦理片| 啊啊啊啊啊啊在线观看| 91狠狠综合久久| 强奸乱伦资源| 欧美少妇色综合| 精品久久大胆人体| 麻豆黄站| 久久丝袜| 亚洲性高潮| 欧美色欧美| 国产最新小视频在线播放下载| 亚洲国产ⅴ高清在线观看| 日本一道在线播放高清| 亚洲不卡三级手机播放| 国产日产精品久久快鸭的功能介绍| 久久综合亚洲色1080p| 约操熟妇| 国产精品电影| 亚洲欧美国产中文字幕| 久肏视频字幕| 97超碰色色|