亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

STM32F4固件庫實戰(zhàn):從GPIO到DMA的寄存器級解析

STM32F4固件庫實戰(zhàn):從GPIO到DMA的寄存器級解析 簡介STM32F4固件庫是意法半導體為STM32F4系列微控制器提供的官方軟件開發(fā)包面向嵌入式軟件工程師旨在簡化外設初始化、驅動調(diào)用與項目開發(fā)流程。資源壓縮包約47.1MB共兩千四百二十五個文件以C語言源文件、頭文件、超文本格式的接口說明、純文本說明及工程配置文件為主其中包含數(shù)百個驅動源文件與頭文件可直接移植或二次開發(fā)。離線幫助文檔、芯片參考手冊和示例工程一同提供可幫助開發(fā)者快速掌握各類外設的編程方式并適配多種常用集成開發(fā)環(huán)境減少環(huán)境配置時間。該庫集成了標準外設庫、硬件抽象層和低層驅動三套接口同時附帶數(shù)字信號處理數(shù)學庫以及文件系統(tǒng)組件、實時操作系統(tǒng)內(nèi)核、輕量級網(wǎng)絡協(xié)議棧等中間件適合數(shù)據(jù)采集、電機控制、浮點運算和物聯(lián)網(wǎng)節(jié)點等開發(fā)場景。目前已有兩千四百三十三人瀏覽學習該版本未支持特定型號F429選用前請核對具體芯片。1. STM32F4 固件庫是什么為什么老工程師不急著換 HAL接手過在役設備的人多半見過這種代碼滿屏GPIO_InitTypeDef、RCC_AHB1PeriphClockCmd和NVIC_InitStructure句式整齊得像教科書示例。這就是 STM32F4 固件庫圈內(nèi)通常叫它標準外設庫。它把寄存器操作封裝成一層很薄的庫函數(shù)比直接讀寫寄存器好維護比 HAL 的句柄和回調(diào)機制更透明也更容易看出“這一行到底寫了哪個寄存器”。它解決的是存量項目維護和學習寄存器映射兩件事。新設計簽 HAL 沒問題但產(chǎn)線設備、儀器固件、培訓課件里有大量固件庫寫的老代碼裸機資源緊張時固件庫編譯產(chǎn)物比同等功能的 HAL 也小一截。這篇筆記面向的是要讀老代碼、維護老設備、或者想搞明白庫函數(shù)背后寄存器行為的工程師。我不勸你從 HAL 遷回固件庫也不勸你原地焊死不動。只把固件庫從文件結構、初始化套路、中斷 DMA 到典型翻車現(xiàn)場講透照著能復現(xiàn)。讀完你能自己判斷手里的項目該不該動它以及真出了問題該先懷疑哪里。2. 固件庫文件結構與工程搭建從壓縮包到點亮一顆 LED2.1 先看懂壓縮包里四類文件CMSIS、外設驅動、啟動文件、模板標準外設庫壓縮包解壓后的目錄雖然多真正用得上的就四類。第一類是 CMSIS 層的器件頭文件和系統(tǒng)時鐘文件負責把內(nèi)核和外設的寄存器地址、位定義、中斷號全部聲明出來第二類是外設驅動源文件每個外設一對.c/.h比如stm32f4xx_gpio.c和stm32f4xx_usart.c第三類是啟動文件后綴為.s的匯編第四類是官方模板工程里面帶著能直接用的stm32f4xx_conf.h和stm32f4xx_it.c。工程需要用到哪些外設頭文件由stm32f4xx_conf.h統(tǒng)一管理這個文件是整個固件庫的“總開關”外設模塊的注釋和使能都在這里做。用一個常見的模板布局舉例如下表所示文件常見位置作用stm32f4xx.hLibraries/CMSIS/Device/.../Include外設寄存器地址、位定義、中斷號枚舉system_stm32f4xx.c同上的 Source 目錄SystemInit與時鐘樹配置startup_stm32f407xx.sCMSIS 的 Source/Templates/arm棧初始化、復位向量、全部中斷向量表stm32f4xx_gpio.c/.hLibraries/STM32F4xx_StdPeriph_DriverGPIO 外設驅動函數(shù)與結構體stm32f4xx_conf.hProject 模板或 User 目錄外設模塊開關、assert_param斷言開關misc.c/.h外設驅動目錄NVIC 與 SysTick 的配置函數(shù)啟動文件值得多說兩句它定義了第一條指令執(zhí)行前的事包括棧大小、堆大小、復位向量以及一張完整的中斷向量表。你在固件庫里寫的USART1_IRQHandler等函數(shù)之所以能進中斷正是這張表在復位后被加載到向量表基地址。啟動文件選錯型號程序會莫名其妙跑飛連個報錯都沒有這是新手最容易忽略的“黑匣子”。選型上要注意固件庫和 HAL 的分界不一樣HAL 按整個 F4 系列給一份固件庫更依賴你手頭具體型號的啟動文件和器件頭文件。F405、F407、F429 之間啟動文件不同外設驅動源文件卻基本通用。所以復制工程時第一件事是核對啟動文件和stm32f4xx.h里的條件編譯是否匹配你的型號這一步錯了后面全白搭。2.2 建一個最小工程文件清單與 IDE 里的六個必查項我一般建工程不自己手搓啟動文件而是從官方模板或一個驗證過的舊工程里復制再刪掉用不到的外設源文件。這樣比從零添加穩(wěn)能省掉大量“為什么鏈接報錯”的時間。拿到一個最小模板后工程目錄通常長這樣project_root/ ├── User/ │ ├── main.c │ ├── stm32f4xx_it.c │ └── stm32f4xx_conf.h ├── Libraries/ │ ├── CMSIS/ │ │ ├── Device/ST/STM32F4xx/ │ │ └── Include/ │ └── STM32F4xx_StdPeriph_Driver/ │ ├── inc/ # 外設頭文件 │ └── src/ # 外設驅動源文件 └── MDK-ARM/ ├── startup_stm32f407xx.s └── project.uvprojx目錄結構只是骨架IDE 里的配置才是大多數(shù)人翻車的地方。我每次建完工程都會按六個點檢查一遍C/C 宏定義里有沒有USE_STDPERIPH_DRIVER和器件型號宏Include 路徑是否覆蓋 CMSIS 的 Include、Device 的 Include、外設驅動的 inc 和 User 目錄C99 開關是否打開調(diào)試器下載算法是否選了對應型號的片內(nèi) Flash編譯優(yōu)化是否暫時設為 O0 便于調(diào)試以及外部晶振頻率宏HSE_VALUE與實際板子是否一致。一個都不能省特別是HSE_VALUE。固件庫的system_stm32f4xx.c默認按某個固定晶振值計算 PLL很多開發(fā)板用 8M 晶振模板默認卻是 25M結果串口波特率全錯、延時全部偏掉。第一次接觸固件庫的人90% 的“串口亂碼、延時不對”最后都查回這里。宏定義的寫法在 MDK-ARM 里通常是USE_STDPERIPH_DRIVER,STM32F4XX如果你的庫版本把型號分得更細就換成對應的STM32F40XX或STM32F41XX之類具體看stm32f4xx.h開頭的條件編譯清單里面寫了每個宏對應哪些型號。USE_STDPERIPH_DRIVER必須留著它決定stm32f4xx.h要不要帶出外設驅動頭文件和函數(shù)聲明一旦漏掉你會看到一堆隱式聲明警告或者鏈接時找不到庫函數(shù)。提示從舊工程復制模板時優(yōu)先復制“能用”的整套工程再改名而不是手動新建后逐個添加庫文件能省掉大量路徑和宏配置上的低級錯誤。main.c的最小骨架通常長這樣#include stm32f4xx.h #include stm32f4xx_conf.h int main(void) { /* 啟動文件已經(jīng)調(diào)用過 SystemInit()這里不需要重復調(diào) */ while (1) { } }新手常踩一個重復調(diào)用的問題startup_stm32f407xx.s在復位后會先調(diào)用SystemInit再跳轉到main。如果在main開頭又調(diào)一次SystemInit等于把已經(jīng)配置好的時鐘重新初始化一遍輕則浪費時間重則把外設時鐘源改亂。固件庫模板里SystemInit的調(diào)用位置就在啟動文件里main里別寫第二遍。這也是判斷一個固件庫工程是否“正經(jīng)”的快速方法。3. 外設初始化標準套路GPIO 點燈與串口收發(fā)背后的寄存器邏輯3.1 GPIO 點燈結構體五個成員各自改寫了哪個寄存器固件庫里初始化外設的姿勢高度統(tǒng)一先定義一個外設對應的InitTypeDef結構體填好成員再把這個結構體的指針交給外設的Init函數(shù)。GPIO 的例程是入門第一課代碼骨架如下/* 第 1 步打開 GPIOF 所在總線的時鐘 */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); /* 第 2 步定義初始化結構體并逐個填成員 */ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin GPIO_Pin_9; /* 選引腳 */ GPIO_InitStructure.GPIO_Mode GPIO_Mode_OUT; /* 通用輸出 */ GPIO_InitStructure.GPIO_OType GPIO_OType_PP; /* 推挽輸出 */ GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_NOPULL; /* 無上下拉 */ GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; /* 翻轉速度 */ GPIO_Init(GPIOF, GPIO_InitStructure); /* 第 3 步置位引腳點亮 LED */ GPIO_SetBits(GPIOF, GPIO_Pin_9);這段代碼的邏輯順序不能顛倒第 1 步先開時鐘第 2 步配置模式第 3 步輸出電平。很多人只寫后兩步結果編譯通過、下載成功、燈就是不亮原因就是 GPIO 的時鐘沒開寄存器寫入根本沒生效。這是固件庫第一個大坑后面避坑章會再展開。參數(shù)說明值得逐個過一遍。GPIO_Mode有四個可選值輸入、輸出、復用、模擬。F4 的引腳模式由 MODER 寄存器控制每個引腳占 2 位所以輸出是 01、復用是 10、模擬是 11GPIO_OType決定推挽還是開漏推挽適合驅動 LED 和普通數(shù)字信號開漏用于 I2C 這類需要外部上拉的總線GPIO_PuPd配置上下拉電阻輸入模式時經(jīng)常用到懸空輸入是抖動和誤觸發(fā)的溫床GPIO_Speed控制輸出驅動器的翻轉速度不是越高越好高速帶來更陡的邊沿和更多 EMI點燈用 2MHz 都夠需要時再用示波器看邊沿取舍。還有一個容易被忽略的細節(jié)GPIO_SetBits和GPIO_ResetBits在固件庫內(nèi)部寫的是 BSRR 寄存器。BSRR 的高 16 位是復位、低 16 位是置位寫入是原子操作不需要“讀-改-寫”相比之下直接操作 ODR 是讀改寫在中斷和多任務環(huán)境下可能被別的代碼打斷。這也是固件庫在這個接口設計上比直接寫寄存器更穩(wěn)的原因。3.2 串口發(fā)送復用引腳、波特率與 printf 重定向的完整鏈路串口是調(diào)試的“第二個屏幕”比點燈復雜一個層級因為涉及引腳復用和 APB 總線時鐘。先看配置代碼/* USART1 掛在 APB2 上TXPA9RXPA10都走復用功能 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* 把 PA9、PA10 的復用功能映射到 USART1 */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF; /* 復用模式 */ GPIO_InitStructure.GPIO_OType GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate 115200; USART_InitStructure.USART_WordLength USART_WordLength_8b; USART_InitStructure.USART_StopBits USART_StopBits_1; USART_InitStructure.USART_Parity USART_Parity_No; USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None; USART_Init(USART1, USART_InitStructure); USART_Cmd(USART1, ENABLE);這里有兩個經(jīng)常寫錯的地方。第一是引腳模式必須是GPIO_Mode_AF而不是GPIO_Mode_OUT復用映射是 F4 引入的概念由 AFRL/AFRH 寄存器決定引腳信號來自哪個外設第二是時鐘總線別搞混USART1 掛在 APB2USART2/3 掛在 APB1APB1 的時鐘上限和 APB2 不一樣從 USART2 的例程抄到 USART1 而不改 RCC 前綴波特率會差一截。波特率不是配進去就完事它是外設時鐘除以一個分頻系數(shù)得到的固件庫內(nèi)部實際做了這個計算。從寄存器角度看USART_BRR 的值就是 APB 時鐘與波特率的比值取整。以 84MHz 的 APB2 配 115200 為例除出來接近整數(shù)誤差幾乎為零但如果你把外部晶振或 PLL 配錯比如板子是 8M 晶振而代碼按 25M 配 PLL時鐘樹整體偏掉波特率就是“假”的必定收到亂碼。這類問題用示波器測 TX 引腳一個字節(jié)的時長和理論位寬對一下就知道了。下面把串口輸出接到 printf 上這是調(diào)試體驗的分水嶺。常見做法是重定向fputc到 USART1#include stdio.h /* printf 聲明 */ int fputc(int ch, FILE *f) { /* 等發(fā)送數(shù)據(jù)寄存器為空再寫一個字節(jié) */ while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) RESET); USART_SendData(USART1, (uint8_t)ch); return ch; }fputc每被 printf 調(diào)用一次就發(fā)送一個字符發(fā)送前輪詢 TXE 標志保證不丟字節(jié)。在 IDE 里做這個重定向一般要勾選 Microlib 之類的精簡 C 庫否則標準庫的底層 I/O 會鏈接出一整套文件系統(tǒng)代碼既有體積問題也可能不按你的fputc走。提示精簡庫的 printf 對浮點支持通常需要額外配置打印浮點變量前先確認你的工具鏈組合不然會出現(xiàn)%f打不出東西的玄學問題。到這里串口配置已經(jīng)能用下一章講中斷和 DMA把 CPU 從這種輪詢等待里解放出來。4. 中斷與 DMA把 CPU 從輪詢里解放出來的固件庫標準姿勢4.1 NVIC 優(yōu)先級分組必須在第一個外設中斷使能前定下來串口輪詢發(fā)送在功能簡單時夠用但一旦主循環(huán)里還有顯示刷新、按鍵掃描輪詢就會互相卡。中斷是第一步。F4 的中斷配置在固件庫里由misc.c提供多數(shù)人第一次看見 NVIC 這個縮寫時沒意識到它是內(nèi)核外設、屬于 CMSIS 層不歸某個具體外設管。配置代碼模板如下/* 優(yōu)先級分組2 位搶占優(yōu)先級 2 位子優(yōu)先級整個工程只調(diào)一次 */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel USART1_IRQn; /* 中斷通道 */ NVIC_InitStructure.NVIC_IRQPreemptionPriority 1; /* 搶占優(yōu)先級 */ NVIC_InitStructure.NVIC_IRQSubPriority 1; /* 子優(yōu)先級 */ NVIC_InitStructure.NVIC_IRQCmd ENABLE; NVIC_Init(NVIC_InitStructure);NVIC_PriorityGroupConfig是整個工程里必須且只能調(diào)用一次的函數(shù)它決定后續(xù)所有中斷優(yōu)先級字段怎么劃分。F4 的優(yōu)先級寄存器實際只用 4 位分組 2 表示高 2 位是搶占優(yōu)先級、低 2 位是子優(yōu)先級于是搶占優(yōu)先級可取 0~3子優(yōu)先級也可取 0~3。搶占優(yōu)先級決定一個中斷能否打斷另一個正在服務的中斷子優(yōu)先級只決定同時到達時誰先排隊。很多人把這兩者的區(qū)別當文檔背下來了但排查問題時會發(fā)現(xiàn)真正麻煩的場景幾乎都出在“兩個中斷共享同一搶占優(yōu)先級且互相有數(shù)據(jù)依賴”這種組合上。中斷服務函數(shù)的命名必須和啟動文件里的向量表完全一致。固件庫工程里USART1 中斷對應的是USART1_IRQHandler這個名字在startup_stm32f407xx.s里已經(jīng)擺好了。寫錯名字不會報編譯錯誤因為鏈接時它把找不到的符號當普通弱引用處理結果就是中斷來了直接跑進默認死循環(huán)或 HardFault。我的習慣是打開stm32f4xx_it.c照著里面的函數(shù)名改名字以工程里的啟動文件為準不要憑記憶寫。中斷使能后還有一個順序問題先在主程序里USART_ITConfig(USART1, USART_IT_RXNE, ENABLE)打開接收中斷然后再NVIC_Init使能中斷通道最后才輪得到中斷里收數(shù)據(jù)。反過來先開 NVIC 再開外設中斷中間那段時間如果有數(shù)據(jù)到達中斷可能因為外設中斷位還沒開而錯過。4.2 DMA地址、方向與 FIFO搬運前先核對這三件事中斷解決了 CPU 被阻塞等待的問題但每收一個字節(jié)斷一次、現(xiàn)場保護一次高波特率下 CPU 還是被折騰得夠嗆。DMA 是真正的解藥它在外設和內(nèi)存之間按配置好的地址和長度自動搬運。F4 的 DMA 比 F1 復雜在引入了 Stream 和 Channel 的概念外設信號先進 Channel再走 Stream配錯映射數(shù)據(jù)根本不動。以串口發(fā)送到 DMA 為例/* USART1_TX 固定在 DMA2 的 Stream7Channel 4別按直覺去配 */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); DMA_InitTypeDef DMA_InitStructure; DMA_InitStructure.DMA_Channel DMA_Channel_4; DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)(USART1-DR); /* 外設地址 */ DMA_InitStructure.DMA_Memory0BaseAddr (uint32_t)txBuf; /* 內(nèi)存地址 */ DMA_InitStructure.DMA_DIR DMA_DIR_MemoryToPeripheral; DMA_InitStructure.DMA_BufferSize txLen; DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable; /* 外設地址不變 */ DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable; /* 內(nèi)存地址遞增 */ DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode DMA_Mode_Normal; /* 單次搬運 */ DMA_InitStructure.DMA_Priority DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode DMA_FIFOMode_Disable; /* 直接模式 */ DMA_Init(DMA2_Stream7, DMA_InitStructure); DMA_Cmd(DMA2_Stream7, ENABLE);這段配置里有三個參數(shù)被問得最多。DMA_PeripheralBaseAddr填的是USART1-DR的地址注意外設地址要用 volatile 方式訪問固件庫里寫(uint32_t)(USART1-DR)就是標準做法DMA_DIR方向決定了哪個地址是源、哪個是目標方向寫反現(xiàn)象是 CPU 全速跑但串口沒輸出DMA_FIFOMode_Disable打開的是直接模式數(shù)據(jù)不經(jīng)過 FIFO 緩沖對串口這種字節(jié)流足夠用。如果你想開 FIFO 提升效率就要同時設置閾值閾值必須與外設數(shù)據(jù)寬度匹配不然搬運結果會錯位調(diào)試起來比直接模式難得多。串口配合 DMA 的經(jīng)典組合是 ADC 連續(xù)采樣ADC 轉換結果寄存器每完成一次轉換就產(chǎn)生一個 DMA 請求由 DMA 把結果搬進內(nèi)存數(shù)組全程不需要 CPU 干預。配置 ADC 時幾個開關必須同時打開否則結果永遠只有第一個通道的值ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Resolution ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode ENABLE; /* 掃描所有通道 */ ADC_InitStructure.ADC_ContinuousConvMode ENABLE; /* 連續(xù)轉換 */ ADC_InitStructure.ADC_ExternalTrigConvEdge ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion 3; /* 采樣通道個數(shù) */ ADC_Init(ADC1, ADC_InitStructure);對應 DMA 側的配置是用 DMA2 的 Stream0 和 Channel0方向為外設到內(nèi)存模式必須設成DMA_Mode_Circular循環(huán)否則搬完指定次數(shù)就停住后續(xù)轉換結果不再進內(nèi)存。掃描、連續(xù)、循環(huán)這三個詞分別管硬件三件事掃描管通道輪換、連續(xù)管不需要外部觸發(fā)一直轉、循環(huán)管 DMA 搬完一輪從頭再來。少一個表現(xiàn)都是“數(shù)據(jù)不對”但原因不一樣排查時先逐個確認這三個 ENABLE。5. 固件庫實戰(zhàn)避坑五個高頻翻車現(xiàn)場與排查手段避坑章不按錯誤類型分類按現(xiàn)場現(xiàn)象分類更實用。你在開發(fā)群里提問也好、自己翻手冊也好最終都是拿著現(xiàn)象去反推原因。下面五條是我見過的高頻現(xiàn)場每條按“現(xiàn)象 → 原因 → 解決”的順序寫你可以直接當排查清單用。5.1 現(xiàn)象編譯零錯誤零警告上電燈就是不亮這是固件庫入門第一翻通常發(fā)生在從別的工程復制代碼改引腳時。最常見原因是 GPIO 時鐘沒開或開錯總線F4 的 GPIOA~GPIOI 全掛在 AHB1 總線上很多人從 F1 的習慣里抄來RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)編譯能過但那一行實際操作的寄存器里根本沒有 GPIOA 的時鐘位等于白寫。解決方法是核對總線映射F4 的 GPIO 時鐘走RCC_AHB1PeriphClockCmd串口 1 走 APB2串口 2/3 和大部分通用定時器走 APB1。另一個隱蔽原因是 Boot0 引腳被跳線拉高芯片從 SRAM 啟動代碼根本沒跑。判斷方法很簡單復位后看 PC 指針落在0x08000000附近還是0x20000000后者去查啟動腳。還有一個可能調(diào)試器下載算法選錯程序壓根沒寫進片內(nèi) Flash校驗時卻能對上仿真器里的鏡像這類問題換一個正確的 Flash 下載算法即可。5.2 現(xiàn)象串口收到亂碼或者復位后第一個字節(jié)丟失亂碼的大頭始終是時鐘樹。system_stm32f4xx.c里HSE_VALUE默認值和實際晶振不一致PLL 配出來整個系統(tǒng)時鐘偏差波特率寄存器按錯誤的 APB 時鐘計算自然全錯。排查時先讓一個 GPIO 翻轉輸出方波用示波器量周期驗證主頻是不是預期的 168MHz如果主頻不對問題一定在HSE_VALUE或 PLL 參數(shù)不在串口配置。時序上再補一刀示波器測 TX 引腳一個字節(jié)的整體時長和理論位寬對比誤差超過 2% 就要懷疑時鐘源。復位后丟第一個字節(jié)的原因不太一樣多半是代碼一上電還沒等兩側時鐘穩(wěn)定就開始發(fā)數(shù)據(jù)或者發(fā)送端搶在對方復位窗口里發(fā)數(shù)據(jù)被吞掉。解決就是在初始化末尾加幾十毫秒延時等雙方電源和時鐘穩(wěn)定再握手。很多“偶爾丟第一個字節(jié)”的詭異現(xiàn)象就是這么治好的不用懷疑硬件。5.3 現(xiàn)象一進中斷就 HardFault或者中斷反復觸發(fā)把主循環(huán)卡死中斷類問題有個規(guī)律HardFault 大多不是中斷里代碼邏輯錯而是中斷服務函數(shù)根本不對。要么函數(shù)名拼錯要么中斷服務函數(shù)寫了卻和其他弱定義函數(shù)重名被鏈接器忽略。先用編譯生成的 map 文件查USART1_IRQHandler的地址如果落到一個默認的while(1)死循環(huán)函數(shù)上就說明名字錯了對照啟動文件里那張向量表改名字一個字都不能差。中斷反復觸發(fā)則是標志位問題進中斷后沒清除中斷標志或者清的是錯誤的寄存器導致退出中斷后標志還在立刻又進一次。固件庫的規(guī)則是“進入中斷先清標志再讀數(shù)據(jù)”但有些外設比如串口讀 DR 本身就是清 RXNE 的行為先清了標志再讀數(shù)據(jù)反而丟字節(jié)。所以遇到重復觸發(fā)先看外設參考手冊里標志由誰清零是讀寄存器清零還是寫寄存器清零照著做。另一個容易踩的是優(yōu)先級分組被多個模塊各調(diào)了一次后調(diào)用的覆蓋了先調(diào)用的導致所有中斷優(yōu)先級語義變化。5.4 現(xiàn)象ADC 多通道采樣結果永遠只有第一個值這個坑在上一章提過配置這里說排查順序。先確認ADC_ScanConvMode是 ENABLE否則 ADC 只轉第一個通道再確認連續(xù)轉換和外部觸發(fā)是否如你所想在固件庫里如果配置了外部觸發(fā)邊沿但觸發(fā)源沒配上ADC 可能根本不啟動最后查 DMA 側模式是不是DMA_Mode_Circular方向是不是外設到內(nèi)存DMA_BufferSize是否等于通道個數(shù)。還有一個經(jīng)常被忽略的硬件因素采樣周期太短。信號源輸出阻抗高時采樣電容還沒充到穩(wěn)定值就被切走了表現(xiàn)就是通道串數(shù)據(jù)、值偏低、或者讀到同一個值。把 ADC 采樣周期調(diào)大幾檔再試很多“玄學”問題會直接消失。如果你在調(diào)試器里看到采樣值隨探頭接觸位置變化多半就是這個原因。5.5 現(xiàn)象仿真器下正常拔掉調(diào)試器就失靈這類問題最容易讓人懷疑人生因為調(diào)試器在場和不在場芯片的復位行為其實不一樣。第一種常見原因調(diào)試器在連接時會初始化內(nèi)核并暫停程序把一些你代碼里沒正確初始化的外設狀態(tài)“掩蓋”了拔掉后按真實復位流程走錯誤就暴露了。解決方法是全速跑不設斷點或者把復位類型切換成硬件復位再試。第二種原因是懸空引腳外部中斷線接的按鍵或排針仿真調(diào)試時手指靠近、導線分布電容都能改變電平拔掉調(diào)試器后環(huán)境一變化懸空輸入直接隨機觸發(fā)中斷。解決是把不用或暫定的中斷輸入引腳配上拉或下拉。第三種是看門狗類仿真時經(jīng)常停在斷點上喂狗由程序周期執(zhí)行看不出來問題脫機后主循環(huán)某條路徑卡住超過窗口期看門狗復位表現(xiàn)成隨機重啟。先關看門狗跑一遍確認主程序穩(wěn)定再回來考慮喂狗策略。6. 進階用固件庫源碼反查寄存器練出獨立調(diào)試的本事6.1 每個庫函數(shù)都能翻譯成一行寄存器操作固件庫的價值不在于“會用”而在于它是一本可以單步執(zhí)行的寄存器手冊。遇到不懂的配置與其去網(wǎng)上搜二手結論不如直接打開stm32f4xx_gpio.c看函數(shù)實現(xiàn)。比如GPIO_SetBits/* stm32f4xx_gpio.c 里的實現(xiàn)核心就是寫 BSRR */ void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t Pin) { GPIOx-BSRRL Pin; /* 寫 BSRR 低 16 位 置位 */ }看多了你會發(fā)現(xiàn)規(guī)律Init函數(shù)改寫模式類寄存器Cmd函數(shù)改寫使能類寄存器GetFlagStatus讀狀態(tài)類寄存器。函數(shù)名本身就是寄存器操作的白話翻譯。在此基礎上我習慣在調(diào)試器的 Watch 窗口直接加(uint32_t)GPIOF-ODR、(uint32_t)USART1-BRR這類地址表達式配合單步執(zhí)行看配置生效的瞬間比看變量值直觀得多。6.2 斷言功能別盲目關掉它是固件庫自帶的參數(shù)檢查固件庫每個Init函數(shù)入口都有一個assert_param斷言檢查參數(shù)是否在合法范圍內(nèi)。默認開啟時參數(shù)越界會調(diào)用assert_failed函數(shù)進入死循環(huán)很多人嫌它礙事發(fā)布前直接關掉結果恰恰掩蓋了配置錯誤。某開發(fā)者曾把斷言關了為一個“有時正常有時不正常的 GPIO 初始化”排查了三天最后翻源碼發(fā)現(xiàn)是GPIO_Pin填了一個跨端口的非法組合斷言打開時半秒鐘就能定位。我的習慣是調(diào)試階段全程開著斷言確認穩(wěn)定后只在 Release 版關閉并且給自己留一個assert_failed里的打印出口讓問題在產(chǎn)線上也能留痕。這個習慣幫我省過不少返工希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97天天综合网| 性色高清在线| 最新国产精品久久精品| 亚洲欧美色图| 天天看天天日天天操| 国产欧美日韩在线不卡第一页| 三四中文字幕| 亚洲。天堂。日本在线观看| 男人天堂.AB| 九九黄色视频在线观看| 日小BB小视频| 欧 美 自 拍 偷 拍| 熟妇乱伦一区二区| 亚洲高清欧美总合| 欧美天天射| 成人开心网在线视频| 亚洲欧美色综合| 欧美黄片视频在线观看免费 | 国产强奸AV在线| 欧美精品系列| 青娱乐 青青青操 日逼| 国产精品粉嫩福利在线| 人人操人人精品影片| 色九月综合| 99热超碰| 免费国产| 天天天操天天天爱| av橘色网站| 我爱搞逼综合网| 日韩99神马视频片| 秋霞一区二区三区四区五区六区七区| 中文字幕一区 二区三四五 区日 日骚| 人妻乱仑一区二区三区| 九九无码视频| 综合网欧美在线| 成功精品影院| 蜜桃视频精品一区二区| 国产精品一二三免费网站| 国产 丝袜 欧美中文 另类| xxx亚洲午夜天堂| 色播综合| 亚洲图片 91| 婷婷五月花| 五月天婷婷色| 东京太热久久久| 欧美日韩人人早| 蜜奶av| 久久久久久久久久久人妻| 天美AV片| 99操| 少妇的嫩逼图片| 97视频免费播放| 欧美性第一页| 国产AV精久久| 六九九九| 欧美 亚洲 综合 制服 另类| 久久99干一本高清| 中文字幕三四区| 亚洲精品免费中文字幕| 欧亚性爱啪啪| 激情五月婷婷| 第45页一区二区| 人妻内射一区二区在线视频| 亚洲人精品久久久| 91大神精品长腿在线观看网站| 久久中文字幕一区不卡| 亚洲操人| 国产人伦精品一区二区三区 | 国内毛片欧美香蕉精品| 亚洲中文日韩欧美大香蕉视频| 囯产乱伦一区二区三女 | 男人天堂网站| 欧美日韩 强奸乱伦| 国产精品成人无码av| 亚洲日韩一区电影| 成人黄页| 色妇综合网| 国产黄色影片在线观看| 色99视频| 国精综合一二三区影视| 一区二区三区看视频| 日韩成人性日韩成人性爱视频在线免费观看| 国产二区三区免费视频| 婷婷色综合| 国产久久视频| 久久AV无码AV| 综合啪啪| 狠狠干2020| 亚洲天堂久久久久久粉红视频| 国产乱色国产精品免费视| 色色色欧美| 中文字幕丝袜| 91足交| 99.色网| 中文字幕激情小说| 欧美日韩999| 水野优香在线观看| 国产精品无码成人精品| 午夜福利无毒不卡| 精品无码久久久久久久杏吧| 天色综合网| 97精品久久| 国产精品一区二区三区,亚洲综合| 久久,精品一二三| 色天堂在线观看| 九九九免费视频| 青青草天天亲夜夜操网| 亚洲青青草| 国产精品盗摄 偷窥盗摄| 99这里有精品| 久久久久久久97| 国产三区免费在线观看| 91美女看B| 日韩免费三级黄片电影| 日韩精品三区四区| 亚洲欧美日韩中文播放| 超碰人人妻| 伊人网在线点播| 亚洲精品天堂久久A∨51成人漫| 超碰 另类 欧美 | 日韩精品一区二区人人人| 樱花蜜乳av| 99re这里只有精品3| www.av家庭乱伦| 澳门成人网站久国产日韩| 夜夜欢天天干| 蜜臀AV一区二区三区激情综合| 欧美日韩中文字幕不卡| 九九RE视频在线精品| 十八禁电影伊人网| 国产乱码精品一区二区三区四川| 九九九精品色乱九九九| 国产九九九九九九九九| 蜜臀视频网站| 校园春色美腿丝袜| 嗯嗯啊在线视频| 9Ⅰ超碰| 日本在线一二| 午夜啪| 久9久9精品| 天天视频综合在线观看视频| 日日骚av| 亚州色图第三区| 日本一级特级毛片视频| 加勒比海成人视频网| 欧美日本国产日韩激情视频| 日韩在线观看AV| 女优免费一区二区永久| 日韩欧美tv一区二区在线观看| 久久久111| 91精品无码人妻系列| 99久在线精品99re8| 亚洲图片偷拍视频区| 啊啊啊啊啊啊在线| 亚洲成人妻日韩在线| 夫妻四区五区六区| 欧美很很操视频| 欧美91变态| 另类av综合久久| 五月丁香色色网| 亚洲97成人在线观看| 国产精品不卡一区二区三区| 亚洲色图91欧美日韩| 久久久99免费| 麻豆av一区二区| 日本欧美色| 97在线视频观看| 国产一区二区免费福利片| 日本天天干天天日一区| 欧洲Au麻豆| 99热官网| 亚洲av影院在线观看| 97超碰欧美手机| 丝袜狂射91| 欧美九九爱| 国产视频一区二区免费| 国产操逼视频在线观看| 免费视频97| 久久精品一区二区三区蜜桃臀| 97九色人妻| 99精品成人免费看| 91在线超高颜值国产| 性高潮久久久久久久久久久| 九九九九九九视频| 欧美精品91| 六月婷婷色综合| 国产精品永久免费10000| 亚洲女优有码无码高清| 日产123区精品免费观看| 欧美黑人与女人91~| 综合色播| 99天堂网| 99热这里是精品| 另类 日韩 熟女| 亚洲人妻中文在线视频| 日韩欧美日韩| 国产午夜精品理论片a大结局| www.成人无码| 亚洲日本大香蕉1| 99蜜桃臀亚洲成人在线观看| 大肉棒导航| 偷拍超碰| 五月婷婷hd| 素人美腿视频网站| 超碰 97国产熟女| 欧美日韩91| 婷婷综合在线| 欧洲色色| 国产有码一区| 国产专区路线| 欧美一二在线| 欧美日韩亚洲五月天婷婷| 欧美亚洲国产自久久| 午夜精品99久久久久传媒| 密桃99999| 狠狠中文字幕| 久久婷婷亚洲欧| 97超碰久| 欧美日韩中国x| 国产久久男人天堂| 久久噜噜噜精品国产亚洲综合| 欧美在线综合| 欧美色97| 中日韩一区二区三区欧美| 国产综合操逼高清| 大鸡巴久久久| 啊啊啊不要啊啊受不了了视频在线 | 午夜男人一级A片7777| 91在线无码精品秘 软件| 一区在线观看中文字幕| 午夜精品99久久久久传媒| 炮色五月| 97超碰精品成| 野狼福利社区| 国产操伦| 久久人妻视频| AV在线资源| 加勒比久久av| 欧美亚洲激情| 欧美一级特黄淫片在线观看| 手机看片1024你懂的国产| 中文字幕日本久久| 国产日韩精品一区二区三区| 土豪酒店各种姿势玩弄极品幼稚| 9118禁| 午夜福利一区二区影院| 日韩精品一区二区三区色欲| 18岁禁 茉莉成人久久| 在线亚洲丝袜视频网站| 91色婷婷综合久久中文字幕二区| 日韩福利综合一区| 先锋精品av色鲁| 欧美另类自拍| 国产97色在线 | 亚洲| 中国操逼无码| 99热综合| 国产成人精品午夜福利| 综合久久9| 久久精品中文字幕观看| 亚洲第一页色| 涩亚洲欧洲| 又大又大又大又粗爽高潮观看| 乱欲一区二区| 69AV女优男人的天堂| 欧美一区二区三区成人性生活| 夜夜爽夜夜操| 免费看日产一区二区三区| 97激情97激情| 91亚洲欧洲| 最新啪啪视频| 加勒比伊人影院| 久久精品人妻一区| 操碰97| 久久久成人免费av电影| 欧美黄色片在线播放| 1024人妻| 91模特在线观看| 天天激情综合站| 综合网,亚洲,欧美| 78精品| www.色操逼| 99热国产| 久久综合精品一区二区三区| 97资源久久| 97天堂| 欧美天天影院| 丁香九月激情| 亚洲干B| 男女一级A片大黄,一进一出| 97超色| 操操操日本的逼| 久久久久久久久久黄色网| 国产乱伦视频污| 精品超碰中文在线| 亚洲日韩精品久久久久一区壹牛 | 亚洲一二三精品久久网| 九九九九久久久久| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 亚洲天堂在线怕怕视频 | 综合网欧美| 天天流夜夜操| 男啪女色黄无遮挡免费观看| 校园春色亚洲欧洲| 国产传媒午夜理伦精品| 欧美精品久久| 人妻嗯啊啊在线播放| 91中文字幕制服丝袜免费视频| 中文字幕av乱伦| 天天cao在线| 蜜桃久久综合视频| 91综合色噜噜| 天天看高清麻豆| 日逼国产| 亚州性色| 神马午夜久久久| 91精品国产日韩欧美综合| 动漫av中文| 日韩欧美字幕亚洲一区二区| 91高清欧美| 蜜桃成人1区2区3区| 激情综合网激情综合| 99抽插| 伊人激情五月天一区二区| 日本性一区| 色99色| 污色区网站| 中文字幕女同在线| 99爱精品| 啪啪啪精品| 亚洲男人天堂2| 内射白嫩美女| 亞洲久久直播| 国产强奸乱伦无码视频| a片亚洲一本通视频| 欧美黄片视频在线观看免费 | 2024人人操人人摸| 性综合网| 9ⅰ久久久天天| 口爆综合网| 国产多人在线观看视频| 国产又粗又长又大的视频| 欧美色吧综合| 诱惑人妻欧美一区在线播放| 大香蕉亚洲中文| 99视频这有这里有精品| 中文字幕成人乱码熟女精品国50| 人妻酒店出差被中出免费在线播放| www黄片免费看com| 在线观看无码三级少妇| 天天日天天干天天操| 国产精品久久久久久9999| 欧美男人一区| 九九性爱网| 国产黄色在线播放观看| 九久9精品| 久久精品91| 色综合中文字幕不卡| 久操视频资源站公开| 无码不卡亚洲成?人片| 四季av一区二区凹凸精品小说| 日日干日日操五月天伦理视频| 日韩操人| 熟妇操花| 成人八戒网站| 亚洲国产91精品一区二区久久| 91久| 五十路熟女人妻一区二区在线观看| 久久亚洲熟妇在线视频| 亚洲综合影视| 欧美 日韩 国产传媒| 情色AV电影| 99在线精品观看99| 一区在线观看中文字幕| 国产92麻豆天美精品色欲5| 极品欧美一区二区三区| 色哟哟综合| 屁股久久久久久久| 久久久久久九九九| 亚洲一区二区在线观看91| 久久伊人东京热| 午夜精品久久久99热蜜桃的功能特点| 国产精品熟妇一区二区三| 中文字幕av久久爽Av| 欧美性天天影视| 麻豆人妻精品一区二区| 夜夜操天天肏| 欧美天堂日韩三级国产传媒| 自拍二页| 日日妻色网| 久久97超碰香蕉| 久久 久久国内精品亚洲| 福利在线视频一区二区| 97射欧美| 九色黄站| 狠狠色伊人亚洲综合网站色| 亚洲欧洲综合av在线| 性爱视频无打码在线观看| WWW啪啪的com| 国产成人无码网站在线视频| 97人肏| 91女网站| 夜夜 中文视频rt| 中出在线视频| 国产农村妇女精品| 欧美aa一级片| 亚洲九区| 欧美美女在线高潮999| 成人热久久精品| 成人av在线播放| 小日子操bb在线看| 97色婷| 天天操女人| 91成人国产综合久久精品蜜月| 日欧毛片久久| 超碰诱惑| 人妻81p| 婷婷九月| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲成人免费在线| 久久超碰、| 日韩电影免费网站麻豆视频| 91精片| 日本免费中文字幕在线| 五月丁香| 激情四射五月天| 青青草公开在线免费不卡视频| 国产无码成人无码| 高清无码国产亚洲| 麻豆福利视频导航| AV色女综合| 亚洲男人久久综合天堂| 日本久久天堂| 国产青青美女玩逼视频| 天天影视亚洲| h无码动漫在线观看| 91精品国产综合久久久蜜臀| 日本不卡中文| 91成人久久| 成人日韩中文字幕| 精品999一区二区| 亚洲精品无码成人久久久99| 精品少妇后入一区二区三区四区人妻巨乳 | 99热综合| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 婷婷综合伊人一区| 亚洲中文日韩精品| 91在线/欧洲| 成人免费性爱视视| 亚洲激情综合| 欧美色吧综合| 黄在线| 五十路熟女工口 | 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 欧美激情亚洲情色| 亚洲无码免费看| 好吊色一区| 久久夜夜| 九九九综合精品| 啪啪啪综合网| 色月天AV导航| 99e久久国产精品| 青青草吊丝| 三久久久四久久久久| 97人人草| 91 丝袜在线播放| 91蜜臀在线久久久久| 超碰97男女| 五月婷婷六月丁香| 麻豆av一区二区| 99久久综合| 国产精品久久久亚洲第一牛牛_在线观看| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 你懂的在线观看区国产| 欧美香蕉视xxx| 日韩成人私密一级精品av| 天天操女人| 欧美极品美女aaaaaa级黄片| 99re69| 2017人人操,人人摸| 日韩精品9999| 强奸乱伦av电影| 中日韩久久久免费看| 中文字幕jul-617人妻熟女| 精品久久久久久久久久久久 | 国产精品久久久久中文字幕| 四虎免费看黄| 女人喷水视频在线观看| 日本久久久久久久久久| 久久久久久久久久8888| 亚洲欧美日韩偷拍色图| 东京热精品97综合网| 日韩亚洲国产视频| 久久大香蕉97| 人人爽夜夜操| 国产精品香蕉热久久新品| 公司1区2区3区精产精| 天美传媒AV在线播放| renqi久久久久久久久久久久| 日本欧美中文字幕| 亚码人妻| 91久久久久久| 亚欧免费| 欧美日韩不卡传媒| 超碰超碰欧美| 激情综合二| 日韩91网| 自拍视频大全亚洲专媒视频/一区二区三区| 乱抡国产91| 久久精品夜色国产亚洲AV| 五月天婷精品激情| 丰满人妻一区二区三区四区| 亚洲成人一二三区| 免费a在线播放v| 色欲av国内精品久久久久久| 欧美性战999| 日本一级性爱| 日本伦乱九九九综合| 97视频900| 国产成人亚洲精品自产在线| 激情抓乳插进去啪啪啪日韩 | 熟女高潮合集-永久久久-成人AV| 爽 好舒服 无码刺激久久| 日韩精品人妻一区二区| AV中文字幕剧情1区2区3| 久久久久国产无av| 国产91会所女技师在线观看| 97超碰超| 91网站在线播放| 91无码中出人妻视频| 日本高清视频xxxx| 久久99九九九九6666免费观看软件| 青青草在线视频欧美| 91丨熟女丨丰满熟女| 亚洲色图欧美一区二区不卡| 毛片99-全集电影手机免费观看完整-B029AV | 欧美性爱第一区| 国产精品久久久777| 蜜桃臀av在线观看| 亚洲色图欧美视频| www..com操老师| 久久久不卡| 狠狠干妹子| 蜜桃久久久久久久久久久久| 熟女丰满人妻一区| 91久久久久久久久18| 夜色AV无码手机在线影院| 成人精品无码| 色综91| 国产精品另类一区大香蕉| 伦在线97| 久久大陆| 欧美色图成人网一区二区| 91狠| 天美av在线观看| 九九人人操| 国产伦乱91| 国产区性爱在线视频秋霞豆| 一区操逼日比视频| 久操com| 久久久99免费| 97超碰人人模人人拍人人| 精品久久久久久中文字幕视频免费| 成人精品久久| 噜噜噜亚洲精| 天天网综合| 天天干人人乐| 青青草原av| 久草电影网| 日本ZZ高免费A级视频| 18精品一二区| 欧美天天综合在线| 夜夜高潮夜夜爽夜夜爱爱一区| 极品人妻少妇综合| 蜜臀99久| 九九精品无码专区免费| 亚洲欧洲综合av在线| 免费观看国产小粉嫩喷水精品午| 国产精品视频一区二区三区八戒| 国产区91柔拿会所技师| 国产一区二区三区精品观看啪| 国产偷拍自拍在线视频| 国产97视频免费观看| 欧洲熟妇xxXx欧美老妇裸体| 亚洲国产无码精品首页久久久| 中文字幕精品资源在线| 日韩在线视频1234| 中文字幕88av在线| 激情视频图片| 亚洲资源吧| 黄色工厂这里只有精品| 色在线综合| 亚欧性爱无码| 久久老子无码午夜伦不卡| 国产精品大香蕉| 日韩乱码Av| 色婷婷婷五月天激情四射| 亚欧洲一区二区视频| 日本免费二区三区| 日韩视频中文字幕| 亚洲欧美日韩精品久久久一区二区| 睡产熟女乱伦| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 最新9久久久9免费视频| 91蜜桃传媒精品久久久一区二区| 性色亚洲| 人妻少妇被猛烈进入中| 天天色香欲综合网| 欧美后入视频| 亚洲高清色综合| av最新免费中文字幕| 六月色色| 久久一区二区加油站| 黑人精品欧美一区二区蜜桃| 精品无码秘 人妻一区二区| 国产黄色av大片网站 | 人妻另类 专区 欧美 制服| 日韩操逼HD| 欧美色偷拍 | 丰满人妻av一区二区三区| 天美麻豆精品视频99| 国产久久一区二区| 免费观看网黄| 久久久久久亚洲精品不卡人乳 | 午夜福利激情在线视频| 九色 人妻 大香蕉| 97在线播放 | 天美国产三级传媒| 欧美色91| 91成人在线免费视频| 天天操女人| 九九九九久久久久| 成人av动漫在线观看| 美女黄码视频午夜| 精品久久久av无码免费| av天堂影视中文在字幕在线中文 | 东京热视频网| 日韩三四五区| 欧美性第一页| 狠狠狠狠狠| 97K超碰在线| 青娱乐久久艹| 久久久久ab| 色与欲影视| 日本123区操B视频| 欧美亚洲韩国视频十五区| 精品国产91av一区二区三区 | 天堂av最新电影网| 日本操BAV| 五毛骚逼极品美女怕怕| 美女极品一区二区三区| 天天综合色电影| 亚洲欧美97√| 国产欧美伊人| 亚洲超碰97| www四虎| 久久久少妇| 中文高清一区二区的| 久久精品一区二区| 久久草草欧美精品| 沈阳熟女高潮对白视频| 日韩一区二区熟女| 99老司机精品视频在线观看| 不卡码视频| www久久国产精品| 69人妻精品丰满熟女区| 五月婷婷六月丁香网址| 香蕉免费一区二区三区不读| 欧美成人A天堂片在线观看| 乱老熟女一区二区三区| 国产熟女免费观看久久| 亚洲精品久久一区二区三区蜜桃臀| 福利视频香蕉免费一区二区在线| 99婷婷| 久久99久久99精品天美传媒棢·纸:.| 欧美1区二区三区公司| 神马久久久久久久久久久久| 十八禁视频一区二区| 九九九热精品| 97久久久| 亚洲日韩在线a不卡99精品| 91撸色网 玖玖网 欧美| 久久国产免费激情视频| 久啪视频| 天天肏美女| 日本操大逼| 欧美综合综合| 黑人中出21连凳花野真衣| 啪啪啪东京| 欧美九一精品久久久熟妇| 夜夜嗨一区二区| 日本色色视频网站| 草久在线| 美女91在线观看| 婷婷久久五月| 乱操乱伦AV| 亚洲色图欧美另类在线| 青青草中文-久久青草精品一区二区三 | 伊人一区二区三区| 婷婷五月天影院| 在线有码中文字幕| 九九热精品视频六| 综合欧美日韩在线| 色五月婷婷五月天| 天天日天天搞天天干| 春色91| 国产熟女| 天天综合麻豆视频| 九九久久精品| 1级午夜影院费免区| 91爱网| 97天天在线| 97天天做| 精品 码产区一区二-1080P高清在线www-B029AV| 日韩性爱视频在线免费观看| 东京太热男人的天堂久久久| 啊啊啊啊啊好舒服视频| 色哟哟-国产专区| 亚洲精品美女久久久久久久久| se吧提供91精品国产91久久久久久| 亚洲欧美天| 久湿久久| 亚洲熟女乱熟乱熟妇综合网二区| 天天综合AV| 日韩啪啪网| 成人av在线播放| 精…码一二三区| 2019男人的天堂| 91男人天堂网| 中文字幕88av在线| 色诱avtt| 在线人妻熟女一区二区三区四区五区| 激情久久久| 911粉嫩人妻| 久久‘黄片视频| 欧美偷拍区| 97无码视频在线播放| 一起草视频在线| 99在线精品观看视频中文| 欧美在线 亚洲| 美腿丝袜高跟网免费视频免费视频| 亚洲欧洲偷拍一区| 亚欧成人综合影院| 亚洲一区二区三区中文字幕| 欧美片第一页| 国产午夜福利专区综合| 国产精品人妻免费精品| 大香蕉一级黄色片久久| 啊啊啊想要| 国产呦精品系列在线观看| 久久久久久久97| 探花精品 一区二区| 久久久久白虎| 九t超碰| 97干在线| 国产成年女黄特黄| 欧美性夜| 亚洲欧美综合| 99亚洲精品| 免费看片黄| 国产又黄又爽| 先锋影音av先锋一区| 国模私拍一区二区三区神乳| 免费公开人人操| 高清有码一区二区| 影音先锋新男人| 日韩国产乱子伦App| 国产第25页在线观看| ..日韩av毛片精品久久久| 日韩卡一卡二卡三在线| 欧美系列在线一区二区| 亚洲啪啪视频一区二区| 性爱乱伦网址| 开心五月深爱五月| 久操99| 天天看高清麻豆| 国产女主播视频在线观看| 哈哈操电影| 欧美一区二区男人天堂| 日韩国产乱子伦App| 岛国视频一二三区| 国内精品伊人久久久久影院会| 99无码视频| 99性爱视频| 绯色AV粉色AV蜜臀AV| 丝袜色综合| 夜夜精品视频一区二区| 超碰97综合在线| 日本熟女不卡视频| 国内毛片无遮挡国产| 欧美人人AAA| 久操高青| 日韩BBN| 日韩性爱啪啪视频| 成人在线视频网| juliaann精品熟女一区| 亚洲风情综合网| 日本成a人v网站在线观看| 国产欧美亚洲精品a第2页| 亚洲……91| 日本免费二区三区| 人人看人人插| 欧美性特| 久久97超碰香蕉| 亚洲欧洲日本精品中文a∨| 久久AV无码网址| 97超碰天天爱天天爱| 97资源站国产精品| 欧美日本中字另类在线| 日韩三级久久久| 97亚洲综合在线| 大香蕉黄色一级片免费看| 久久色人体| 人妻无码一区二区三区久久99| 中文字幕天堂在线| 亚洲操人| 久久成人精品| 天天看天天在线精品| 青青草视频爽一爽| 欧美91网| 特级丰满少妇一级AAAA爱毛片| 久久一二三四不卡| 国产精品福利视频| 天天干美少妇一区| 亚州,欧美在线| 黄色性爱网网| 欧美日韩精品久久| 久久精品久久久久久久久| 成人资源中文字幕在线观看天天 | 一区二区三区视频在线观看免费| 男人天堂综合| 亚洲日韩av专区无码| 殴美牲| 97欧美日韩综合| 亚洲天堂久久| 香蕉国产97| 日本 欧美 国产一区| 国模限制级电影| 97国产精品| 嗯啊抽插大香蕉网页| 超碰这里只有精品| 久久久久九九九| 欧美综合97www| 久久在肏| 精品人妻伦一二三区久久| 欧美激情内射| www.狠狠| 男女啪啪啪18禁网站| 日本天天人人狠狠在线日美女 | 国产精品96久久久久久| www.狠狠干.coom | 欧美激情性久久久久久| 欧美国产成人在线| 日韩无码黄色片| 99热99re6国产在线播放| 亚洲色 国产 欧美 日韩| 嫩草 我啊~嗯~在线| 伊人操你| 久久超碰大香蕉| 亚洲精品国产无码高清| 超碰97首页| 精品伊人久久久大香线蕉小说| 四虎精品亚洲| 五月丁香久久| 超碰精品国产无码| 天天综合网1| 欧美一区二区三区日韩| 九九九九一区| 日本免费不卡二区| 黄色成人网久久久久久| 操淫穴亚洲五月丁香 | 青青操狠狠撩| 久区视频| 青青色综合| 中文字幕一区二区日韩网| 舔人妻中文免费视频| 床上啊啊啊一区二区三区| 欧美操人视频| 日本中文字幕一区| 啊啊啊不要好疼视频| 国产丝袜美女在线一区| 另类图片五月天| 国产欧美一区激情交| 天天上日日上日韩精品| 国产精品夜夜夜| 曰韩精品九九无码| 人人操人人摸人人看人人干| 日韩BBN| 自拍二页| 丁香五月电影| 综合 欧美 亚洲 日本| 午夜啊啊| 超碰午夜| 久妇网| 中文字幕亚洲在线一区| 色在线视频导航| 久久久无码精品人妻二区 | 日韩一级二级三级免费看完整版国语版 | 9久久久久| 日韩午夜国产| 人妻天天操天天爽视频免费| 日本一级二级三级网站| 91日韩| 激情另类激情| 日韩av色图综合| 九九热免费国产视频婷婷伊人| 天天操夜夜嗨| 内射夫妻三片| 精品天堂| 亚洲天堂一区二区| 久久综合女优| 人妻一区二区三区| 久久久草成人网站久久久草成人久久久草久久久 | 日韩操逼性鲍| 久久久人妻| 国产精品电| 久久九精品| 日本一区二区三区欧美日韩中文字幕| 亚洲欧美日韩综合在线尤物| 色视频蜜乳| 精品欧美老熟女一二区| 色哟哟av网址| 欧美永久激情一区二区| 九九热免费国产视频婷婷伊人| 天天操天天舔| wwwcaobibi| 九X超碰| 欧美78p| www.色五月| 中文字幕成人| 国产高清精品一区二区三区毛片| 国产高清自拍视频| 91精片| 久久这里只| 熟妇女伦乱视频| 国产精品伦理| 青青在线视频免费| 欧美偷| 91白嫩| 亚洲精品久久久久久| 久久宗合亚洲| 干美女人妻| 骚货 中文字幕 av| 国产日韩美女小穴视频网站不卡| x97av| 热G综合热G中文| 久久久久久中文| 中国和日本人色哪个不下载能放| 亚州欧美另类| 久久久91| 婷婷超| 操逼网站网站| 国产精品露脸在线观看| 天天上日日上日韩精品| 久久久久久久久久久免费精品| 蜜臀久久99精品久久久久久无删减| 少妇大屁屁| 91在线视频国产网站| 国产一国产一级毛片古装| 日本久久女同性恋视频| 欧美组图日韩亚洲中文字幕| 一本色道久久天天射天天干| 国产9 9在线 | 亚洲| AV不卡在线| 精品久久99| 五月丁香网站| 97超碰天天| 老司机午夜福利视频一区二区| 日韩有码回春沙龙第一页| 一本久久精品中文字| 欧美草草高清日韩视频| 中国一级αV| 午夜操逼不卡| 91性高潮久久久久久久久| 日韩啪啪啪啪啪| 天堂在线一区二区| 丰满搜索结果 -第18页- 久久高清无码| 亚洲自拍另类丝袜综合| 久久久九| 91欧美网| 少妇人妻好深太紧了vr91| 黑人嘿嘿嘿超爽免费视频| 熟妇熟女视频一区二区三区| 91殴美大片| 懂色av中文字幕一区二区三区天美| 97超碰欧美精品| 亚洲精品97| 久久东京伊人一本到鬼色| 久久婷婷五月天| 亚洲 中文 女同| 亚洲日韩黑丝| 国产 亚洲 一二三四| 亚洲最大的综合性av| 久热伊人99re| 天天综合网~91综合网| 国产美女高潮| 99re国产中文字幕| 日本一区二区三区精品| 久久精品视| 麻豆国产97在线| 深爱五月婷婷| 西西美女视频网| 欧美日韩人妻精品系列一区二区三区| 中文字幕日韩专区精品系列| 亚洲人妻av| 亚洲熟女乱熟乱熟妇综合网二区| 欧美黄业| 青青久久手机线视频| 高树玛利亚无码流出| 精品欧美乱码久| 亚洲乱伦图片视频| 天天操av懂色| 91岛国动作片| 1禁看欧美黄片免费看| 久久夜夜夜夜| 欧美性天天| 久久久久婷婷| 欧美洲精品一级| 欧美中文字幕日韩在线| 亚洲日本韩国极品一区二区| 蜜臀va69| 色官网色综合| 一区| 免费AV中文网在线观看| 99热这里都是精品| 这里只有97精品| 久久一级无码精品毛片6| 欧美在线l亚洲| 男人天堂电影院| 99精品在线| 欧美综合色,www| 日本日皮视频逼| 久草毛片| 麻豆这里只有精品| 精品无码一区二区人妻久久蜜桃| 乱伦色图网址是多少| 中文字幕 一区二区 亚洲无码| 欧美97爱| 麻豆av一区二区三区| 欧美97色| 成人精品电影| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 丁香九月激情| 亚洲黄色| 91丨九色丨东北熟女| 欧美东京热青青草| 日韩97超碰中文字幕| 欧洲亚洲人妻无码久久三区四区| 综合激情婷婷| 999国产精品999久久久久久| 丰满人妻一区二区三区大胸懂色| 懂色av中文字幕| 日本国产欧美高清在线| 97网站在线观看| 狠狠操狠狠爱| 啊啊啊啊免费视频| 青青草日本无码| 99久久99久久免费精品蜜臀| 天天欧美欧美亚洲网| 秋霞色色影院| 日本精品人妻少妇一区二区| 国产亚洲精品A在线观看下载| 九区国产| 日韩AV无码中文一区二区| 97精品一区| 超碰亚洲97| 国产呦精品系列在线观看| 粉嫩AV一区夜夜嗨| 亚洲成人一区二区精品| 淫纸中9区| www四虎| 东京热视频网| 国产熟码AV| 欧美黑人性猛交91| 日本操逼aaaaa| 蜜臀久久99'精品久久久| 成人欧美一区二区三区黑人一| 天堂男人网| 伊人伊人LD| 99操视频| 欧美一级美片在线观看免费| 久久亚洲色图中文字幕| 亚洲中文字母在线播放| 欧美性天天| 日韩三级在线观看网站| AV在线资源| 婷婷丁香六月天| 逼操网站| 青青草在线视频播放器| 啊好爽受不了无码| 新版天堂中文资源8在线| 日本媚薬中文字幕在线| 久啪| av日韩手机在线影视| 2017大香蕉| 五月天人妻综合| 狠狠中文字幕| 日韩去日本高清在| 人人贴人人摸| 性高潮久久久| 97在线观看免费视频l| 920日本午夜免费| 天天躁日日躁AAAAXXXX国产 | 少妇超碰在线| 精品成人亚洲午夜电影| 91精品国产一区三一| 97欧美色综合| 人妻夜夜爽天天爽麻豆三区网站| 成人日本视频人妻在线| 国产高清吃奶免费视频网站| 208天天久久九九九| 亚洲成人一二三区| 精品高清一区二区三区三州| 国产精品乱码久久久久| 欧美色图片欧美色图| 久久久中文版| 91久久精品蜜臀| 91精品国产麻豆国产自产在| 国产一级内射无挡观看| 天天爽天天操啊啊啊| 欧美97av| 国产精品97超碰| 人人妻人人色| 亚洲人在线| 午夜久久一区二区无码中出| 亚洲aV性爱| 伊人黄色视频免费观看| 亚洲中字慕不卡| 中文字幕黄片在线| 97网色| 97在线播放| 久热精品在线| 很很很很操| 日韩精品电影| 人人澡人人弄| 夜夜操91744565| 国产精品经典一卡久久久| 欧美久久九九| 99只有精品| 深夜啪啪啪视频免费| aⅴ日韩成人电影av在线免费看av大全| 日韩精品资源专区二区| 欧美性少妇| 玖玖爱视频网站| 天堂伊人久久| 国产999精品久久久| 秋霞福利网| 欧美亚洲美少妇一区二区| 精品乱子一区二区三区99| 91电影色诱| 麻豆人妻少妇在线免费观看| 天天爽夜夜欢视| 蜜臀在线免费观看在线免费观看| 天堂av2019| 日韩超碰精品综合| 日韩在线97| 97超碰久久色| 91操人| 欧美激情亚洲情色| 老熟乱一区二区三区四区| 亚洲激情在线|