色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

STM32調(diào)試踩坑指南:從No target connected到串口亂碼的排查方法

STM32調(diào)試踩坑指南:從No target connected到串口亂碼的排查方法 做STM32開發(fā)這些年我見過太多人卡在同一個地方程序?qū)懞昧司幾g也過了一點(diǎn)下載——No target connected。然后開始懷疑人生板子壞了芯片燒了線沒接對其實(shí)大概率都不是。這種經(jīng)歷我太熟了所以這篇文章不打算講STM32基礎(chǔ)也不寫高深算法就專門聊聊STM32開發(fā)調(diào)試過程中那些真正浪費(fèi)過時間的坑以及我是怎么一步步排查出來的。不管你是正在做畢業(yè)設(shè)計(jì)的學(xué)生、剛轉(zhuǎn)嵌入式的新人還是寫了幾年程序的工程師在調(diào)試這條路上總有那么幾個坑能讓你對號入座。我盡量把每個坑的根因、排查鏈路和解決辦法都寫得具體一點(diǎn)方便你直接對照自己的項(xiàng)目。畢竟調(diào)試這種事最怕的不是問題難而是連從哪兒下手都不知道。1. 環(huán)境搭建與工程樣板先解決“能不能編譯、能不能下載”1.1 Keil5裝完卻找不到STM32芯片包很多新手第一次裝Keil5裝完興沖沖打開結(jié)果在Device選擇列表里翻半天都找不到STM32。不是軟件有問題而是Keil MDK從V5版本開始把芯片支持從安裝包里拆出來了變成了獨(dú)立的Pack包。MDK安裝包本身默認(rèn)只帶ARM通用編譯器具體芯片的器件支持需要額外安裝。解決辦法是打開Pack Installer找到STM32F1系列的DFP包如Keil.STM32F1xx_DFP安裝。但這里有個很現(xiàn)實(shí)的坑Pack Installer需要聯(lián)網(wǎng)下載國內(nèi)網(wǎng)絡(luò)狀況下經(jīng)??ㄔ谙螺d進(jìn)度條不動或者下載一半失敗。我遇到過好幾次Pack下載失敗后還殘留了部分文件導(dǎo)致重新安裝時報(bào)錯。如果你也遇到這種情況直接去Keil官網(wǎng)下載對應(yīng)DFP安裝包手動雙擊安裝比Pack Installer里干等靠譜得多。還有一個小細(xì)節(jié)安裝DFP時最好先關(guān)掉Keil工程否則可能出現(xiàn)安裝成功但工程里仍然顯示不了芯片的情況需要重啟工程。另一個很常見的坑是C51和STM32共存的問題。Keil的C51版本和MDK版本其實(shí)是兩個獨(dú)立產(chǎn)品一個管8051一個管ARM。如果你電腦上先裝了C51的uVision4后來又裝了MDK的uVision5或者反過來很容易出現(xiàn)我裝了Keil但打開工程提示Device不存在的情況。因?yàn)閮蓚€IDE雖然看起來差不多但支持的芯片列表完全不同。我的做法是C51和MDK都裝安裝路徑分開圖標(biāo)雖然很像但打開前看清楚是哪個版本。如果你手頭有51的工程和STM32的工程要輪流折騰千萬別圖省事只裝一個那才是真正的折磨。1.2 STM32標(biāo)準(zhǔn)庫新建工程的三個隱藏雷雖然現(xiàn)在新項(xiàng)目很多人直接用STM32CubeMX加HAL庫但標(biāo)準(zhǔn)庫依然有大量存量代碼和教材尤其是做畢業(yè)設(shè)計(jì)和老項(xiàng)目維護(hù)的場景。新建標(biāo)準(zhǔn)庫工程時我踩過的雷可以列出三個第一個是啟動文件選錯。STM32F1系列啟動文件分了好幾種startup_stm32f10x_ld.s、md.s、hd.s分別對應(yīng)低容量、中容量、高容量。很多教程里默認(rèn)用hd.s如果你手里的芯片是F103C8T6這種中容量的用hd.s也不是不能啟動但如果你選的是F103RCT6高容量芯片卻用了md.s程序能燒進(jìn)去運(yùn)行卻會莫名其妙出問題。因?yàn)閱游募锒x了堆棧大小和中斷向量表的位置容量不匹配會導(dǎo)致內(nèi)存映射錯位。第二個是宏定義沒加。標(biāo)準(zhǔn)庫工程必須在C/C的Define里加上USE_STDPERIPH_DEVICE以及STM32F10X_HD或者STM32F10X_MD取決于你的芯片容量。很多教程建工程時根本不提這個導(dǎo)致編譯報(bào)一堆未定義錯誤。我當(dāng)年第一次建工程編譯報(bào)錯幾十條還以為是庫文件沒拷全其實(shí)是宏定義漏了。第三個是頭文件路徑?jīng)]有包含全。標(biāo)準(zhǔn)庫的源碼按文件夾組織你需要把Misc、GPIO、RCC、USART等用到的外設(shè)頭文件路徑都加進(jìn)Include Paths。漏一個就編譯報(bào)無法打開文件。建議直接把整個Libraries文件夾路徑加進(jìn)去省得來回改。這其實(shí)是Keil工程配置里的基本功但新人在這一步卡一天很正常。我?guī)У膸讉€實(shí)習(xí)生幾乎每一個都在新建工程上耗過半天一旦跑通一次后面就順了。1.3 標(biāo)準(zhǔn)庫和HAL庫到底怎么選關(guān)于選庫這件事屬于每次群里都有人問的問題。很多人糾結(jié)標(biāo)準(zhǔn)庫字符級操作直接、好多教程都用標(biāo)準(zhǔn)庫HAL庫配合CubeMX生成代碼效率高但代碼量太大。我的看法是標(biāo)準(zhǔn)庫封裝層次低離寄存器近適合學(xué)習(xí)原理、調(diào)試底層問題、做資源緊張的簡單項(xiàng)目。ST官方已經(jīng)停止維護(hù)標(biāo)準(zhǔn)庫新出的芯片也沒標(biāo)準(zhǔn)庫可用但F1、F4系列老片子用戶量太大網(wǎng)上資料幾乎取之不盡。HAL庫抽象層更高配合STM32CubeMX可以快速生成初始化代碼適合快速原型、復(fù)雜外設(shè)協(xié)同、多項(xiàng)目復(fù)用。但Debug時函數(shù)調(diào)用層級深出問題了追蹤起來費(fèi)勁。HAL庫本身也有一些黑魔法比如狀態(tài)機(jī)管理、超時機(jī)制你要是沒吃透它的設(shè)計(jì)思路初次上手容易覺得怎么這么繞。LL庫介于兩者之間更接近寄存器操作但用的人相對少。如果你的目標(biāo)是搞懂原理或者項(xiàng)目要求極致的執(zhí)行效率走標(biāo)準(zhǔn)庫沒問題如果目標(biāo)是快速出活、接新項(xiàng)目、用新芯片直接學(xué)HALCubeMX更劃算。最怕的是學(xué)到一半想換代碼寫到一半從標(biāo)準(zhǔn)庫遷HAL庫那種痛我真的不建議你體驗(yàn)。順帶提一下VSCode配置STM32的問題。最近問的人確實(shí)多用EIDE插件或者CMake加ARM GCC工具鏈確實(shí)能擺脫Keil的界面。但我的建議是如果你還在調(diào)試階段頻繁踩坑先把Keil用好再考慮VSCode。VSCode編輯代碼舒服但調(diào)試器配置、燒錄器配置、cmsis-dap或OpenOCD的target配置任何一個沒配對都能讓你折騰一晚上。工具是為主業(yè)服務(wù)的不是用來折騰的。2. 下載器連接失敗從No target connected說起2.1 插上ST-Link電腦卻提示無法識別USB設(shè)備先說一個最算不上故障的故障USB設(shè)備無法識別。排查順序很重要我一般是這樣的換一根USB線?,F(xiàn)在很多充電線只有電源線沒有數(shù)據(jù)線插上去能供電但設(shè)備管理器毫無反應(yīng)。這種偽故障占比非常高尤其是你隨手從抽屜里摸出來一根線的時候。換一個USB口。前置面板的USB口供電和信號質(zhì)量經(jīng)常不如主板后置口尤其是接ST-Link這種需要穩(wěn)定供電的設(shè)備。檢查設(shè)備管理器。如果看到未知設(shè)備或者帶感嘆號的設(shè)備嘗試右鍵更新驅(qū)動。ST-Link的驅(qū)動有專門的安裝包老版本W(wǎng)indows下經(jīng)常需要手動裝一次。確認(rèn)ST-Link固件版本。太舊的ST-Link固件在某些機(jī)器上會識別異常用STM32CubeProgrammer或者官方ST-Link Upgrade工具升級一下固件。如果設(shè)備管理器里能看到ST-Link設(shè)備但連接目標(biāo)板時報(bào)錯那問題就在目標(biāo)板這邊了。常見原因包括目標(biāo)板沒有獨(dú)立供電ST-Link的3.3V輸出能力有限、SWD接線過長信號不穩(wěn)定、目標(biāo)板復(fù)位電路異常。這個時候先把SWD線盡量縮短把下載速率調(diào)低往往就能解決問題。下載速率太高的坑特別容易忽略ST-Link默認(rèn)可能跑1.8MHz飛線搭的板子信號質(zhì)量差降到500kHz甚至100kHz就穩(wěn)定了。2.2 第一次下載成功第二次就No target connected這個坑我印象太深了因?yàn)樗l(fā)生的時間點(diǎn)永遠(yuǎn)是你覺得穩(wěn)了的時候。說的就是程序第一次下載成功板子也跑起來了然后你改了幾行代碼想重新下載點(diǎn)擊下載卻直接報(bào)No target connected。根因大概率不是你板子壞了而是你的程序里把SWD引腳給禁用了。STM32的SWD和JTAG共用一組引腳如果你在初始化代碼里調(diào)用了類似GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)這樣的函數(shù)調(diào)試口會被釋放成普通GPIO。程序一旦跑起來SWDIO和SWCLK兩個引腳就不聽調(diào)試器指揮了下一次下載當(dāng)然連不上。這種坑最惡心的地方在于它很隱蔽。你只是按照某個例程加了一句禁用JTAG防止干擾的代碼結(jié)果把下載口也禁了。排查的方法是按住目標(biāo)板的復(fù)位鍵不松手然后點(diǎn)下載在程序執(zhí)行到初始化之前把連接搶下來或者把BOOT0拉高進(jìn)ISP模式用串口全片擦除芯片內(nèi)的程序。如果是已經(jīng)禁用了調(diào)試口的固件最穩(wěn)妥的辦法就是進(jìn)ISP擦除。后來我給自己定了一條規(guī)矩開發(fā)調(diào)試階段絕不輕易在代碼里禁用SWD/JTAG功能。即使量產(chǎn)階段為了省電和IO資源需要禁用也一定保留一段可以通過跳線或者特定操作恢復(fù)的方案否則后續(xù)升級固件就成了噩夢。2.3 ST-Link Utility和STM32CubeProgrammer的救援價(jià)值很多人不知道下載器除了燒錄程序還能用來救命。ST官方早年的ST-Link Utility現(xiàn)在已經(jīng)升級為STM32CubeProgrammer可以繞過正常下載流程直接操作芯片內(nèi)部Flash。最常見的救援場景是芯片讀寫保護(hù)打開后無法連接。有些芯片在量產(chǎn)階段被設(shè)置了讀保護(hù)RDP等級1此時調(diào)試器默認(rèn)無法讀取Flash。你用ST-Link連接時會報(bào)錯但用STM32CubeProgrammer執(zhí)行一次Full chip erase全片擦除會把保護(hù)位一起清掉芯片就能重新下載了。注意全片擦除會清掉所有代碼和配置操作前確認(rèn)數(shù)據(jù)已備份。STM32CubeProgrammer比ST-Link Utility更值得常用它支持多種連接方式ST-Link、UART串口ISP、USB DFU。當(dāng)SWD口被意外禁用時你還有一條逃生通道——UART ISP。只要BOOT0拉高、BOOT1拉低芯片上電進(jìn)入系統(tǒng)存儲器里的Bootloader用串口就能擦除和重刷Flash。這個方法我在折騰自制最小系統(tǒng)板時救過好幾次命。還有一個小技巧STM32CubeProgrammer可以讀取和修改Option Bytes。如果你需要調(diào)整讀保護(hù)等級、看門狗模式或者BOOT配置不用額外寫代碼直接在這個軟件里操作就行。調(diào)試階段建議大家把讀保護(hù)關(guān)了否則每次下載前都要先擦除麻煩得很。3. 時鐘、延時與啟動程序跑飛前最隱蔽的三個坑3.1 時鐘樹配置不對串口亂碼和延時失準(zhǔn)的共同源頭STM32的時鐘系統(tǒng)比51單片機(jī)復(fù)雜得多這也是很多人從51轉(zhuǎn)過來時最不適應(yīng)的點(diǎn)。51單片機(jī)接個晶振就能跑STM32內(nèi)部有HSI內(nèi)部高速時鐘、HSE外部高速晶振、PLL倍頻、總線分頻這一整套時鐘樹。調(diào)試經(jīng)驗(yàn)里凡是程序能跑但串口亂碼延時時間完全不對USB枚舉失敗這些癥狀十有八九和時鐘配置有關(guān)。最經(jīng)典的場景你的開發(fā)板上有一個8MHz外部晶振代碼里SystemInit默認(rèn)使用HSE作為系統(tǒng)時鐘源。但如果你的板子沒有焊外部晶振或者晶振虛焊HSE啟動會失敗。STM32F1的啟動邏輯在HSE失敗后會自動退回HSI運(yùn)行程序不會死但系統(tǒng)時鐘從72MHz掉到了內(nèi)部8MHz所有依賴時間的計(jì)算全崩了——串口波特率不對、定時器溢出時間變了、delay函數(shù)的時間尺度也變了。表現(xiàn)出來就是板子好像所有功能都不太對勁。排查手段其實(shí)很直接。先用萬用表量晶振兩腳波形或者用示波器看有沒有起振再進(jìn)調(diào)試器看RCC-CR寄存器的HSERDY位是否為1如果HSEON為1但HSERDY一直為0就是外部晶振電路沒起來。很多人會忽略電路本身的問題晶振需要兩個負(fù)載電容如果板子上沒焊或者盡最大努力只是看起來焊了實(shí)際上虛焊也會導(dǎo)致不起振。還有一種情況是代碼里明明寫了外部8M晶振但實(shí)際板子上裝的是12M晶振——頻率不對串口亂碼、定時器時間整體偏差。有一個經(jīng)驗(yàn)如果你用的是內(nèi)部HSI時源USB外設(shè)大概率無法正常工作因?yàn)閁SB要求48MHz的精確時鐘內(nèi)部RC振蕩器精度不夠。很多基于F103的USB虛擬串口項(xiàng)目調(diào)試不通過最后都栽在時鐘源上。所以不是能用內(nèi)部時鐘就省事得先看清外設(shè)的時鐘需求。3.2 延時函數(shù)卡死SysTick被誰搶了延時卡死可以說是嵌入式開發(fā)里的固有節(jié)目。明明代碼里寫了一個Delay(1000)結(jié)果程序執(zhí)行到這就再也不走了。這類問題我從標(biāo)準(zhǔn)庫轉(zhuǎn)到HAL庫之后又遇到過一次根因還不完全一樣。標(biāo)準(zhǔn)庫下常見的Delay實(shí)現(xiàn)是基于SysTick定時器中斷實(shí)現(xiàn)??ㄋ赖脑蛴袔讉€某段代碼把全局中斷關(guān)了SysTick中斷一直在Pending狀態(tài)無法執(zhí)行計(jì)數(shù)器永遠(yuǎn)不會更新Delay就永遠(yuǎn)退不出來。你的工程里其他地方重寫了SysTick_Handler標(biāo)準(zhǔn)庫的延時計(jì)數(shù)邏輯被覆蓋了。比如有些人從網(wǎng)上拷貝一段代碼里面自己寫了一個SysTick_Handler結(jié)果把系統(tǒng)那個頂替了。優(yōu)化等級太高編譯優(yōu)化把循環(huán)判斷條件里的變量給優(yōu)化掉了導(dǎo)致for循環(huán)延時永久執(zhí)行。排查方法也不復(fù)雜在Delay調(diào)用前點(diǎn)亮一個LED調(diào)用后再熄滅看LED行為進(jìn)調(diào)試器查看SysTick的CTRL寄存器和Current Value寄存器確認(rèn)SysTick是否在跑如果懷疑優(yōu)化等級把優(yōu)化等級臨時改成-O0試一下。如果問題消失就是優(yōu)化引起的你可以用volatile修飾循環(huán)變量或者改用官方的SysTick延時邏輯。HAL庫的HAL_Delay卡死也有一個隱蔽原因HAL_Delay依賴一個全局變量uwTick而這個變量是在SysTick_Handler里調(diào)用HAL_IncTick遞增的。如果你用標(biāo)準(zhǔn)庫的習(xí)慣寫代碼或者移植項(xiàng)目時忘了調(diào)用HAL_InitSysTick中斷沒有初始化HAL_Delay就會永遠(yuǎn)等下去。還有人在自己的中斷服務(wù)程序里長時間阻塞SysTick中斷一直沒有機(jī)會執(zhí)行HAL_Delay也會表現(xiàn)異常。3.3 HardFault_Handler數(shù)組越界與棧溢出的表象程序跑著跑著突然進(jìn)入HardFault_Handler死循環(huán)這是嵌入式開發(fā)的經(jīng)典夢魘。很多人一進(jìn)HardFault就慌其實(shí)它本質(zhì)上是CPU遇到不可恢復(fù)的錯誤后跳轉(zhuǎn)到異常向量大多數(shù)情況下不是芯片壞了而是你的代碼觸發(fā)了非法操作。最常見的幾個觸發(fā)原因數(shù)組越界寫入尤其是DMA數(shù)據(jù)傳輸緩沖區(qū)定義小了數(shù)據(jù)寫入越界。棧溢出在中斷里定義了超大局部數(shù)組或者遞歸調(diào)用過深把棧撐爆了。操作了未使能時鐘的外設(shè)寄存器。比如你忘了開啟GPIOA的時鐘卻直接往GPIOA的ODR寄存器寫數(shù)據(jù)。在F1系列上這會導(dǎo)致總線錯誤最終進(jìn)HardFault。函數(shù)指針為空、未初始化就被調(diào)用。排查HardFault的關(guān)鍵是定位觸發(fā)點(diǎn)。在Keil里當(dāng)程序停在HardFault_Handler時打開Call Stack窗口看調(diào)用棧通常能看到觸發(fā)異常前的最后幾層調(diào)用。再用Peripherals窗口查看SCB-CFSR寄存器的Fault狀態(tài)位能分辨是總線錯誤還是用法錯誤還是斷言失敗。最實(shí)用的辦法是記錄下R14(LR)和R15(PC)的值在反匯編窗口輸入地址看當(dāng)前執(zhí)行到了哪條指令再對應(yīng)到源碼里的具體行。我調(diào)過最長的一個HardFault案例是串口空閑中斷加DMA接收不定長數(shù)據(jù)時接收長度判斷邏輯出了錯DMA把數(shù)據(jù)寫到了數(shù)組末尾之外。癥狀是程序運(yùn)行一段時間后隨機(jī)死機(jī)一度懷疑是硬件問題最后在Fault Reports里發(fā)現(xiàn)是總線錯誤再查DMA緩沖區(qū)地址才鎖定了越界。從那以后凡是用DMA的地方我都強(qiáng)制在緩沖數(shù)組尾部多留幾個字節(jié)的冗余空間不為別的就是為了排查時少掉幾根頭發(fā)。3.4 啟動文件與宏定義選錯的連鎖反應(yīng)之前講了建工程時的啟動文件選擇但啟動文件的問題不止是編譯期影響。有幾次程序編譯下載都成功了上電就是跑不起來最后發(fā)現(xiàn)是啟動文件里的堆棧尺寸設(shè)置太小。啟動文件頂部有一段Stack和Heap的配置比如Stack_Size EQU 0x400如果你在代碼里大量使用了局部數(shù)組、嵌入式實(shí)時操作系統(tǒng)、或者malloc動態(tài)內(nèi)存默認(rèn)的棧空間可能不夠。棧溢出不一定會立刻死機(jī)而是在某個深層調(diào)用或者中斷嵌套時才崩。這種問題極其難查因?yàn)橐?guī)律不明顯可能運(yùn)行幾十秒才出一次問題。我的習(xí)慣是調(diào)試階段就把棧改成0x800或者更大省得被棧溢出干擾判斷。另外還有一個容易被忽略的坑啟動文件里定義了中斷向量表如果你在工程里另外寫了一個包含相同中斷向量的文件可能編譯報(bào)重復(fù)定義——這是好情況。壞情況是鏈接器選擇了你后加的那個向量表導(dǎo)致定時器或其他外設(shè)的中斷根本進(jìn)不去程序看起來一切正常但功能不響應(yīng)。所以新建工程時不要貪多啟動文件、系統(tǒng)時鐘文件、標(biāo)準(zhǔn)庫外設(shè)文件凡是從網(wǎng)上拷來的大雜燴工程模板都值得你花時間拆開看一遍確認(rèn)每一部分的作用再拼裝。用別人整合好的一鍵工程出了問題你真的不知道怎么排查因?yàn)槟悴磺宄锩嬗心男╇[藏配置。4. 串口通信與外設(shè)調(diào)試從亂碼到數(shù)據(jù)丟失4.1 串口亂碼的排查鏈路串口通信是STM32項(xiàng)目里最常用的外設(shè)基本每個項(xiàng)目都用但亂碼問題也最多。我總結(jié)了一條排查鏈路你按順序走一遍絕大多數(shù)亂碼都能解決第一步排除接線問題。TX接RX、RX接TX這兩個腳位接錯是最常見的。如果你用的是USB轉(zhuǎn)串口模塊還要確認(rèn)模塊電平是否兼容——3.3V和5V混接可能導(dǎo)致通信不穩(wěn)定甚至燒壞引腳。第二步確認(rèn)上位機(jī)波特率和代碼一致??雌饋硎菑U話但真的很多人把代碼里的9600和工具里的115200搞混或者代碼里改了波特率工具沒改。最簡單的方式是用串口助手自發(fā)自收也就是把USB轉(zhuǎn)串口的TX和RX短接在電腦上發(fā)什么收什么。自發(fā)自收正常說明USB轉(zhuǎn)串口沒問題問題在STM32端。第三步用示波器量STM32的TX引腳。波特率是否正確可以直接測量一個字節(jié)的位寬來判斷。比如9600波特率一位的時間是104微秒左右示波器上能看到脈沖寬度明顯不對就是波特率的計(jì)算結(jié)果錯了。第四步回到時鐘樹問題。之前說過外部晶振沒起振或頻率不一致會導(dǎo)致PCLK計(jì)算錯誤波特率必然不對。F1系列的USART波特率發(fā)生器是從PCLK分頻來的系統(tǒng)時鐘是72M還是8M同一個波特率寄存器數(shù)值對應(yīng)的實(shí)際波特率差了9倍。如果你的串口在低速率下看著正常高速率全亂大概率還是時鐘問題不是串口代碼本身的問題。通信波特率不對還有一個非常容易忽略的情形外部晶振虛焊導(dǎo)致HSE啟動失敗但芯片沒死退回HSI后程序繼續(xù)跑串口打印出來的內(nèi)容偶爾正常偶爾亂碼會誤導(dǎo)你以為是串口代碼有BUG。這時候不要反復(fù)改串口參數(shù)回頭檢查外部晶振。4.2 HAL庫串口中斷發(fā)送與接收的坑HAL庫是很多人從標(biāo)準(zhǔn)庫轉(zhuǎn)過來的第一站但它的串口接口和標(biāo)準(zhǔn)庫用法差異很大踩坑點(diǎn)也完全不同。先說HAL_UART_Transmit_IT。這個函數(shù)是異步發(fā)送調(diào)用后立即返回實(shí)際數(shù)據(jù)通過中斷逐字節(jié)發(fā)出去。問題在于如果你上一次發(fā)送還沒結(jié)束就再次調(diào)用函數(shù)會返回HAL_BUSY數(shù)據(jù)直接丟掉。很多人寫一個while循環(huán)里調(diào)用發(fā)送結(jié)果數(shù)據(jù)丟得一塌糊涂因?yàn)榘l(fā)送速度跟不上調(diào)用速度。解決辦法是維護(hù)一個發(fā)送完成標(biāo)志位在HAL_UART_TxCpltCallback回調(diào)里置0調(diào)用前先判斷標(biāo)志位。或者直接用阻塞式的HAL_UART_Transmit省心但會占用CPU。HAL_UART_Receive_IT也有類似問題它是一次性接收——接收完指定字節(jié)數(shù)后觸發(fā)回調(diào)之后就不會再接收了需要在回調(diào)里重新調(diào)用一次才能繼續(xù)收。很多人不知道這個機(jī)制以為調(diào)用一次就能永遠(yuǎn)收結(jié)果發(fā)現(xiàn)只收到一次數(shù)據(jù)就再也不進(jìn)了。不定長串口數(shù)據(jù)接收我推薦的做法是空閑中斷加DMA。配置串口的DMA接收為循環(huán)模式數(shù)據(jù)到了自動進(jìn)緩沖區(qū)然后在串口空閑中斷里讀取DMA剩余計(jì)數(shù)計(jì)算出本次收到的數(shù)據(jù)長度。這個方法能處理不定長數(shù)據(jù)包不丟字節(jié)CPU占用也低。但有幾個坑要避開串口空閑中斷和DMA中斷的優(yōu)先級要合理安排而且要在中斷里快速讀出長度再去處理數(shù)據(jù)不能讓中斷處理太久。DMA循環(huán)模式的數(shù)據(jù)是不斷覆蓋寫的你必須在空閑中斷里拷貝出當(dāng)前這批數(shù)據(jù)到應(yīng)用緩沖區(qū)否則下一次數(shù)據(jù)來了會覆蓋?;卣{(diào)函數(shù)里訪問緩沖區(qū)時務(wù)必注意邊界別把固定數(shù)組寫爆了。4.3 USB虛擬串口設(shè)備管理器里那個感嘆號STM32F103的USB虛擬串口項(xiàng)目很多人按照例程做完插上USB線電腦卻提示未知設(shè)備或者設(shè)備管理器里一個黃色感嘆號。這類問題有固定的排查方向第一個方向是時鐘。F103的USB外設(shè)需要48MHz時鐘如果系統(tǒng)時鐘不是由8MHz晶振經(jīng)過PLL倍頻到72MHz再二分頻得到48MHzUSB的枚舉過程就會失敗。如果你用的是內(nèi)部HSI或者外部晶振不是8MHzUSB極大概率無法工作。第二個方向是硬件上拉。USB設(shè)備通過DP引腳的1.5k上拉電阻告知主機(jī)這是一個全速設(shè)備。很多STM32開發(fā)板把DP上拉做到芯片內(nèi)部由固件控制PA12實(shí)現(xiàn)也有的板子需要外接上拉電阻。如果你用的板子需要外接但沒焊這個電阻自然枚舉不了??丛韴D時專門找一下DP引腳附近有沒有上拉電阻。第三個方向是堆棧和中斷配置。USB庫占用的RAM不少如果你的啟動文件堆棧設(shè)得太小枚舉過程可能跑飛。USB相關(guān)中斷優(yōu)先級也要正確配置不能把其他中斷長時間阻塞USB中斷。還有一個常被忽略的細(xì)節(jié)USB虛擬串口發(fā)送數(shù)據(jù)不能在USB的中斷回調(diào)里直接調(diào)用發(fā)送接口否則可能造成死鎖或者丟數(shù)據(jù)。正確做法是把要發(fā)的數(shù)據(jù)存到循環(huán)緩沖區(qū)在應(yīng)用層空閑時批量發(fā)送。4.4 定時器捕獲測頻與編碼器模式的小細(xì)節(jié)定時器和編碼器是電機(jī)控制、測速項(xiàng)目里的常規(guī)外設(shè)但很多人第一次用輸入捕獲測頻率時得到的第一個值總是錯的。原因是輸入捕獲的第一次捕獲往往發(fā)生在定時器計(jì)數(shù)器的任意位置兩次捕獲之間的差值并不能正確反映一個完整周期。正確的做法是第一次捕獲值先丟棄從第二次捕獲開始計(jì)算周期或者連續(xù)捕獲多次求平均。另外如果信號頻率很低捕獲周期大于定時器的溢出周期你必須處理更新中斷把溢出次數(shù)也一起計(jì)進(jìn)去否則測出來的頻率會突然跳變。編碼器模式也一樣配置成編碼器接口后定時器計(jì)數(shù)值隨編碼器旋轉(zhuǎn)方向自動增減。常見的坑是有人把編碼器A相接到定時器通道1、B相接通道2但代碼里配置成了只計(jì)數(shù)單通道結(jié)果方向無法判斷。還有Z相清零的問題如果你需要絕對位置參考得把Z相信號接到另一個引腳并在捕獲到Z相時清零計(jì)數(shù)否則位置數(shù)據(jù)會一直累加漂移。超聲波測距模塊也是熱門畢設(shè)題材。用定時器輸入捕獲來測量回波脈寬比用GPIO輪詢要靠譜得多。GPIO輪詢在近距離時容易因?yàn)榇a執(zhí)行時延誤差導(dǎo)致測量結(jié)果不準(zhǔn)而輸入捕獲是硬件記錄邊沿時刻精度明顯更高。不過要注意把GPIO配置成正確的輸入模式數(shù)字輸入和模擬輸入的引腳行為差異很大配置錯了回波信號根本讀不到。5. 疑難雜癥的排查思路把經(jīng)驗(yàn)變成方法論5.1 三板斧先復(fù)位、再點(diǎn)燈、后打量調(diào)試經(jīng)驗(yàn)積累到一定程度你會發(fā)現(xiàn)大多數(shù)問題都可以歸納為三板斧排查法。這個方法土但靠譜。第一板斧是硬件確認(rèn)。用萬用表量電壓——3.3V是否到位、GND是否連通、復(fù)位按鍵是否為高電平。很多宣稱程序有問題的情況最后發(fā)現(xiàn)是板子供電接觸不良或者杜邦線松了一根。不要小看這類低級問題他們占的比例一點(diǎn)都不低。第二板斧是軟件最小化。把主循環(huán)里所有業(yè)務(wù)代碼注釋掉只留一個LED翻轉(zhuǎn)或者GPIO翻轉(zhuǎn)看系統(tǒng)還能不能跑。如果帶動業(yè)務(wù)代碼就死機(jī)去掉業(yè)務(wù)代碼就正常說明問題出在業(yè)務(wù)邏輯里跟你懷疑的編譯器、鏈接器、芯片都沒關(guān)系。如果連最小系統(tǒng)都不跑那才輪得到懷疑初始化配置或者硬件。第三板斧是調(diào)試器讀寄存器。進(jìn)調(diào)試器看Peripherals里的GPIO ODR、RCC CR、USART SR這些寄存器能直接判斷外設(shè)是否初始化成功。這個方法比printf高效得多比如一個GPIO輸出沒電平先看GPIO時鐘有沒有開再看引腳配置對不對兩步就能定位。我印象很深的一次排查是超聲波測距模塊始終返回0。主循環(huán)點(diǎn)LED沒問題按理說初始化也沒問題但就是測不到。最后用調(diào)試器看GPIO配置寄存器發(fā)現(xiàn)把ECHO引腳配成了模擬輸入模擬輸入狀態(tài)下數(shù)字電平讀取永遠(yuǎn)返回0。改成浮空輸入后立刻恢復(fù)正常。如果當(dāng)時不打開寄存器窗口光靠猜代碼可能半天都定位不到。5.2 用好調(diào)試器別全靠printf很多初學(xué)者調(diào)試單片機(jī)時習(xí)慣用串口printf這也是江科大這類視頻教程帶出來的慣性。printf沒有原罪但它有兩個明顯的副作用一是在中斷里調(diào)用printf會嚴(yán)重干擾時序。中斷服務(wù)程序里花幾百微秒做字符串格式化輸出對其他中斷響應(yīng)的影響是災(zāi)難性的尤其是有定時器捕獲、USB通信這類對時序敏感的功能時。二是printf本身也可能改變程序行為。有個經(jīng)典現(xiàn)象加上printf就正常去掉printf就死機(jī)這種墨菲定律式問題通常不是printf解決了什么邏輯錯誤而是printf消耗的時間恰好掩蓋了某個時序競爭。遇到這種情況不要覺得是不加上就不行的魔法應(yīng)該警惕背后真實(shí)的競態(tài)條件。我建議的方式是用調(diào)試器打斷點(diǎn)、看變量值、看寄存器這些是第一手段。printf作為第二手段盡量只在非中斷上下文調(diào)用而且打上明顯的調(diào)試開關(guān)產(chǎn)品發(fā)布前統(tǒng)一關(guān)掉。真要在HardFault里打印診斷信息直接把PC和LR寄存器值格式化后發(fā)出來比盲猜強(qiáng)太多。5.3 我的三個真理時刻與給新手的成長路線做嵌入式這些年我印象最深的三個時刻都跟解決問題的方式有關(guān)第一次是當(dāng)我終于靜下心來讀RM0008參考手冊而不是到處搜代碼片段很多之前搞不動的疑惑突然就通了。網(wǎng)上代碼質(zhì)量參差不齊二手信息滿天飛真正一手的正確答案永遠(yuǎn)在芯片手冊里。第二次是發(fā)現(xiàn)自己從開發(fā)板上拿來的出廠例程有問題。例程為了展示方便很多配置并不嚴(yán)謹(jǐn)有的是時鐘配置過度依賴默認(rèn)值有的是外設(shè)初始化順序不對。從那時起我每拿到一個開發(fā)板第一件事是自己重新寫一份最小系統(tǒng)初始化而不是直接依賴?yán)?。第三次是開始用示波器和邏輯分析儀輔助調(diào)試。以前遇到奇怪的問題總是反復(fù)看代碼其實(shí)很多答案在信號層面早就擺在眼前了——晶振起振沒有、串口波形對不對、PWM頻率是不是設(shè)置的值示波器掃一眼全知道。如果你現(xiàn)在剛?cè)肟覵TM32我建議的成長路線很樸素準(zhǔn)備一塊F103C8T6最小系統(tǒng)板加ST-Link有條件再配一個幾十塊錢的邏輯分析儀。從閃燈開始依次走通串口、定時器、中斷、DMA、USB這幾個關(guān)鍵外設(shè)的調(diào)試流程。這個過程中你會把下載器、工程配置、時鐘系統(tǒng)、調(diào)試技巧全都踩一遍等這些基本功扎實(shí)了再去做環(huán)境監(jiān)測、智能臺燈、雙輪小車這些畢業(yè)設(shè)計(jì)或項(xiàng)目就是水到渠成的事。其實(shí)踩坑從來都不是壞事真正浪費(fèi)時間的是重復(fù)踩同一個坑還不總結(jié)。希望這篇總結(jié)能幫你少走幾段彎路把省下來的時間留給真正值得研究的功能和代碼。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产一级作爱毛片| 国产农村妇女精品| 亚洲精品一区二区精品| 97爱免费插| 丰满少妇精品一区二区| 天堂在线一区二区| 欧美偷拍| 性爱久久| 亚洲 小说 欧美 激情 另类| 欧美亚洲玖玖玖| 久草精品在线| 久久香蕉影院| 熟妇人妻精品一区二区| 中文久久一区| av网站免费线看| 久久久久久久少妇| 日本孕妇一区二区视频操逼免费看 | 四虎影院成年人片| 后入式福利| 亚洲精品aa久久伊人| 亚洲精品 欧美精品| 人妻献身系列第54部| 红桃视频高潮| 国产美女口爆吞精视频| 天天日天天操VV| 伊人操你| 熟女网站最新| 99热亚洲天堂| 操逼天美3区| 麻豆性爱视频在线播放| 亚洲精品三区在线观看| 亚洲色棕合| 色婷婷色99国产综合精品| 天堂亚洲精品| 亚洲精品一区二区三区新线路| 色网色网色网色网色网色| www.狠狠干.coom| 欧美大波激情xxxx| 午夜精品人妻二区三区| 日本岛国黄色网址| 啊啊啊好多水| 国产精品久久久久久久免牛肉蒲团| www.yeyecao| 熟女熟妇伦久久影院毛片一区二区| 欧美特大黄一级片片免费| 激情文学亚洲| 天天做天天爱天天爽AV| 亚洲精品日韩国产欧美| 2023天天操夜夜操| 淫纸中9区| 婷婷五月天成人网| 青娱乐亚洲自拍| 18禁久久| 97干天天| 大香蕉在线SuP| 爱媛媛久久国产福利| 久久久日本电影| 久久久久久91香蕉国产| 日本一级黄色电影| 亚洲精品一区二区精品| 无码久久亚洲高清,| 制服诱惑亚洲一区二区三区在线观看| 久久久五月天| 国产日韩精品无码去免费专区国产| 激情啪啪视频| 亚洲最大的黄色电影网站。 | 久久久无码精品人妻二区| 色嘟嘟人妻天堂网| 999岛国大片| 日日爱99| 热G综合热G中文| 久久精品天美| 一二三区在线| 看一级特黄a大一片| 99热这里都是精品| 中文字幕乱偷人妻久久艾草网| 2010男人的天堂| 亚洲AV无码AV吞精久久久久| 加勒比综合| 亚洲 另类 丝袜 自拍 动漫| 亚热日本熟女| 男人的天堂.com| 婷婷亚洲色| av天堂天堂av日韩| 午夜福利国产欧美日韩夜夜| 78m成人视线| 色欲色香天天天综合网www-亚洲综合国| 久久草大香蕉| 亚洲欧美成人在线| 亚洲综合九九| 亚洲色诱惑| 国产一在线观看| 在线视频免费观看午夜| 美女啊啊啊啊啊啊| 97视频一区| 成人久久久精品| 久久天天躁日日躁狠狠躁| 成片免费观看视频大全| 91精品久久久久久77777| 欧美性爱三区二区| 国产一区二区a毛片| 久久久久久精| 亚洲牲交| 国产精品盗摄 偷窥盗摄| 精品一级毛片在线观看| 啊啊啊不要好疼视频| 午夜一区二区三区国产| 人人看人人插| 亚洲欧洲综合av在线| 秋霞Av理论一级在线| 99re9| aV中亚| 日韩在线观看三级电影| 亚洲欧美高清无码| 精品人妻av在线播放| 影音先锋日本一区二区| 国内毛片无遮挡国产| 亚洲精品一区二区精品| 操操逼操操逼操操逼逼| 浪人综合网| 99久久精品无码一区二区| 免费精品人妻一区二区三| 国产AV色黄看到爽| 激情六月婷婷| 欧洲综合视频| 午夜久久久| 欧美日韩不卡传媒| 久久人妻| 人妻人人做人人澡人人爽欧美一区| 上海一级黄片| 99久久com免费视频′| 一区黄二区黄| 欧亚成人在线视频| 亚洲天堂一区二区| 日韩啊V| 中文字幕黄片在线| 最新的亚洲无吗| 天天躁日日躁AAAXX| 99成人| 夜夜爽77777| 婷婷另类小说| 97久久超碰国产精品| 伊人操| 97超碰磁| 97色五月天完| 日韩日韩日韩-国产乱码精品一区二区| 欧美亚洲中文字幕| 制度丝袜99| 婷婷五月天激情网| 亚洲国产中文字幕| 极品白嫩美少妇在地板上位骑射淫水泛滥| 夜夜天天噜狠狠爱2021| 丁香九月激情| 自拍亚洲综合| 国产女人视频三四五区| 一起草日韩| 大香蕉啪啪网| 97超碰在线资源网站| 亚洲天堂少妇| 日本熟妇一区二区三区| 欧美一级专区免费大片| 亚洲加勒比久久日本道| 最近的最新的中文字幕视频| 女同性恋一区二区三区精品视频| #NAME?| 性色av大全| 十八禁视频网站| 99热免费精品| 先锋女优在线观看视频| 国产粉嫩出水在线播放| 蜜桃丰满熟妇av无码区不卡| av在线播放国产一区| 亚洲天堂,男人| 一区,二区,三区视频| 中文字幕在线免费观看 | 午夜αv| 免费啪啪一级视频| 夜夜狠狠躁日日躁色视频| 久久久久久久9| 极品美女福利在线观看| 国产精品视频播放| 新亚洲无码| 五月天精品| 国产精彩女在线观看视频| 亚洲欧美成人网站AAA| 国产呦精品一区二区三区下载| 国产视频三区四区| 97在线观看| www.狠狠| 欧美—性—交—色| 大香蕉乱伦视频网| 欧美色97| 97在线精品| 免费男人的天堂| 91人妻精华帖| 色眯眯av| 欧美性爱1080p| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 黄色av一区二区在线| ai欧美亚洲小说| 无码人妻一区二区三区色欲aⅴ| 东京日日夜夜| 久久国产在线一区二区| 国产人伦精品一区二区三区| 蜜臀久久99精品久久久久| 久久精品国产精品亚洲艾通辽熟妇 | 美女裸体无遮挡永久免费观看网站| 日韩一区二区三区四区五区| 狠狠操狠狠燥| 一起草精品人妻| 午夜久久久| 久久久久久AⅤ无码免费肉站| 日本东京热大香蕉a片| 74成人在线| 97超碰资源网| 久久精品国产亚洲AV片多多 | 欧美亚州手机在线| 欧美天天综合网| 精品无码一区二区| 夜夜天天噜狠狠爱2021| 在线小视频| 国产无套粉嫩白浆在| 五月天AV资源| 天天影视综合网欧美精品| 久久亚洲AV无码白度| 久久亚洲天天做| 成人麻豆av电影网站| 久久中文字幕女同性恋一区| www.天天干| 97色碰| 国产91精品久久久久久久网曝门| 一本一道波多野毛片中文在线| 九热超碰| 天天日天天操心| 蜜臀久久99精品久久久久久-DVD原版全| 十八禁网站在线| jizz啪啪| 国产蜜臀精品一区二区尤物| 啊啊啊啊一区| 无码精品久久| 亚洲精品99999| 久久夜嗨| 九月婷婷综合| 国产三级在线现体验区| 91麻豆天美国产欧美高潮| 一区二区你上我| 操逼视频色| 欧美综合色图片| 91狠狠综合久久久久久| 国产 v乱码一区二| av无线看| 综合亚洲欧美精品日韩?v| 国产一区二区久久| 爱射综合| 99re久久| 亚欧日韩成人| 国产一区二区三区白丝| 超碰色97| 91亚洲狠狠色| 99re8免费高清在线| 99热在线观看| www.久久制服糖| 本道综合精品| 97精品视频在线播放| 中日无幕一二三四区| 欧美网站免费| 亚洲国产尤物yw在线观看| 中文字幕乱亚洲美女精品一区| 综合av影片| 国产精品91一样| 国产精品视频精品一二| 黄色网址在线免费观看| 午夜人人操| 超碰97久| 怡春院久久| 综合国产影视三级| 91亚洲综合| 九九九九一区| 日本一线产区和二线产区伦理片| 亚洲色棕合| 久久亚码| 国产欧美黑人丰满在线| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 九久9热| 久久9视频| 蜜乳性色无码专日粉嫩骚逼AV| 亚洲欧洲中文日韩女优乱码| 亚洲色婷婷久久91| 国产精品无码成人精品| 久久男人的天堂| 人妻丝袜一区二区三区在线| 91模特在线观看| 日日骚av| 亚洲一区二区中文字幕| 超碰久久.com| 亚洲午夜精品久久久中文影院| 在线色资源| 91国产在线精品| 一本久久精品中文字| 五月天伊人| 亚洲AV无码天美传媒一区| 狠狠综合| 久久婷婷五月天| 亚洲日韩成人性爱视频| www.91久久| 亚洲第一在线视频| 五月丁香影院| 麻豆天美国美国产AV| 一区二区三区机械有限公司| 国产精品自拍欧美在线| 天天做日日做天天欢。| 成人片在线播放| 深夜国产一区二区三区在线看| 四虎国产精品永久地址入口| 波多野结衣被操50分钟免费视频| 97香蕉网| 日韩操逼性鲍| 欧美强奸乱| 久久肏大逼| 欧美亚洲日本激情在线| 黄色av片三级三级三级免费看| 一级aaaaa欧美中文字幕录像片| 无码直播久久久| 美女操逼A A| 操人人| 激情小说成人日本无码一| 人妻 中文 日韩| 一级啊性爱在线视频| 综合自拍| 天综合网| 97视频900| 夜夜青青无码影院| 日韩精品-原创伙伴| av网站免费看| 国产精品视频一区二区三区八戒| 99亚洲国产精品色一区二区三区| 啪一啪免费视频| 五月婷婷激情综合| 国产suv精品一区二区四区999| 欧美亚洲影视| 精品无人区麻豆乱码1区2区图片| 超碰2017| 国产福利av精彩对白| 亚洲激情在线| www.一本大99| 色一区二区三区综合| 日韩性色| 岛国A V在线免费看| 福利在线黄片| 97干在线看| 亚州男人的天堂| 一卡二卡三卡| 磁力99AV| 天堂国产AV| 伊人 俄罗斯 a v| 综合网少妇| 激情熟女12P| 精品一区二区人妖| 啊好大好舒服| 天天搞欧美| 亚洲精品久久久久毛片A片拉屎 | 国产三级中文有码在线视频| 亚洲偷拍自拍在线视频| 亚洲18禁| 夜夜嗨一区| 97精品一区二区视频| 黄片在线免费在线观看| 亚洲妇色| 密臀在线一区尤物| 激情国产乱伦Av| 啊啊啊啊啊操我视频| 久艹99| 天天看天天日天天操| 中国女人内射6XXXXX| 欧亚洲精品有视频| 999精品乱码| 国产精品久久久久无码A√| 亚欧精品久久久久久久久久久| 伊人991| 国产在线观看91精品一区| 巨爆乳肉感一区二区三区竹菊影视| 欧美有码亚洲中文字幕一区二区三区四区| 日韩电影中文字幕| AV乱伦国产| 操久久久久久| 91网站在线播放| 色婷婷六月丁香七月婷婷| 天天拍天天操| 日韩一卡二卡三卡| 人妻av在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 天天噜| 色婷婷狠狠| 曰本道人妻久久久在线不卡色视频| 亚洲视频中文一区| 综合色图亚洲欧美| 精品福利| 女同在线视频一区| 日日骚中文字幕| 亚洲成人免费电影| 日本大香蕉综合网红本杳社区| 日韩国产成人自拍视频| av东京热男人的天堂| 欧美的性爱网站免费| 欧美后进式| 亚洲日韩美女丝袜美腿人妻视频| www.yw尤物| 国内一级精品| 啊啊啊好爽快点啊啊啊嗯嗯| 日韩少妇无码| www.五月天| 中文字幕视频二区| 深爱五月婷婷| 欧美综合天堂| 搡老女人老妇女老妇老熟女怎么读| 国产性爱乱伦AV| 男人的天堂日韩| 午夜影美女日鸡鸡天天视频国产| 国产精品第一页国产大屁股视频免费区i| 无码丰满熟妇一区二区浪潮AV| 天天色怡春院| av凤凰久久久| 欧美91在线| 中文字幕 一区二区 亚洲无码| 国产精品嫩草影院午夜两性 | 小说区 图片区色 综合区| 综合久欧洲| 日韩欧美操逼xxx| 免费啊啊啊| 日本性爱不卡视频| 天美传媒婬乱在| 116美女午夜| 久久首页| 久操视频这里只有精品| 精品久久久中文字幕不| 久久社区一区二区三区| 国产精品播放| 亚州色国| 91在线页| 亚洲码专区| 中文不卡视频| 久久熟女久| 久久精精区一区二区一蜜桃一区二区| 日韩字幕一区| 欧姜老司机| 区日韩亚洲乱码av电影| 日韩一级免费性爱| av毛片aaaaa免费看| 欧美综合 站| 欧美性爱五月天| 久9re热视频这里只有精品| 91女优在线观看| 屌逼麻豆| 国产一区二区三区精品观看啪| 国产60页| 99最新日韩偷拍视频| 日本91白丝| 日本操BAV| 国产又粗又大硬免费色网视频| 九九九九一级| 91色黑人少妇| 久久超碰爱| 午夜精品五区| 伊人久久综合影院精品久久久| 夜夜嗨老熟女AV一区二区三区| 性欧美天天| 丁香六月啪| 免费观看国产不卡av| 亚州性色| 日韩人妻无码不卡网站| 男人的天堂久久狠| 丝袜无码a片| 一区二区三区男女操逼黄色小电影| 国产激情在线| 影音先锋视频在线| a亚洲欧美色欲| 操碰97| 操久久久久| 欧美在线 亚洲| 综合网欧| 亚洲人在线| 超碰三级秋霞| 亚洲丝袜色| 99在线观看| WWW.加勒比人妻一区不卡.com| 成人性爱电影一区二区| 中文字幕狠狠玩| 亚洲成a人片在线观看中文!!!| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 日本性爱不卡视频| 国产精品亚洲一级av第二区| 一级片视频啪啪| 精品国产乱码久久| 97超碰碰| 亚洲春色一区二区三区| 中英熟女操女| www.av家庭乱伦| 另类天堂| 亚洲人成网站7777| 强被迫伦姧在线观看无码网站| 亚洲中文字幕在线视频一区二区| 亚洲图片欧美色图| 边做饭边操逼逼| 老妇女91| 中文操逼字幕| 国产大陆天天艹| 欧美特大AA级黄片| 国产精品黄色三级av| 亚洲乱伦图片视频| 8050无码八戒| 色婷婷久久| 亚洲 欧美 中文 日韩超碰| 欧美色偷拍| 9久久9综合| 蜜臀久久久国产| 久久精品国产久精国产| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 蜜臀无码一区二区| 97天天插| 日本一级真人黄色性爱视频| 人人贴人人摸| 日韩在线观看字幕精品| 亚洲精品三| 欧亚乱色熟一区二区三四区| 欧美日韩精品国产91| 久污| 九九碰九九爱97超| 99国产精品视频尤物| 在线精品福利免费播放| 嗯嗯啊操我| 精品无码一二三四区| 精品一区二区久久| 91操熟女| 操高情无码| 久久久A∨| 在线综合 亚洲 欧美中文字幕 | 激情久久久| 亚洲成人碰碰| 97在线无精品| 91丰满| 丝袜AV一区二区三区| 国产多人在线观看视频| 91精品久久久久久77777| 天天操女人| 亚洲熟妇AV日韩熟妇在线| 日本506070| 欧美日韩激情无码专区| 亚洲av影院在线观看| 按摩中文字幕| 欧美综合色综合| 超碰在线欧美性爱激情| 丁香五月激情网| 亚州男人的天堂| 欧美色www亚洲国产阿娇要播| 日日碰狠狠添天天爽超| 免费9 1久久| 亚洲天堂男人天堂网| 亚洲色图欧美色图日韩色图| 丁香五月天堂网| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 9久综合网| 97超碰人操| 东京热男人的天堂| 亚洲成?V人片在线观看福利| 99久久com免费视频′| 亚洲色91| 亚洲欧洲综合视频在线| 蜜臀久久99精品| 亚洲天堂男人天堂网| 无码精品人妻一区二区三区妖精| 色哟哟-国产专区| 国产精品不卡少妇白| 日韩无码黄色片| 九九久久国产精品| 97干在线| 欧美综合骚| 97亚洲色图| 操逼网免费无码视频| 60秒免费视频| 一类无码操逼视频| 操学生天天| 久久久99免费| 国产免费大片| 2019天天干| 人妻啊啊人妻啊啊| 午夜传煤十二区精品| 人人干人人操人人..com| 久久亚洲色图中文字幕| 国产一级内射无挡观看| 东北老女人的激情视频| 超碰人人操97碰| 国产久久日韩网站导航| 中文乱码字字幕在线第5页| 欧美三级一级| 精品国产一区探花在线观看| 91扒丝袜综合在线| 久久久久久久久久va| 高清不卡一二三区视频......| 欧美97爱| 久久久久久久久久久人妻| 精品人妻一二三| 蜜臀久久99精品久久久久免费观| 国产精品直播在线观看直播| 天天α片| 中国大陆国产高清AⅤ毛片| 久久久久ab| 国产AV久久野战精品| 久久久久国产| 天堂8在线新版官网| 国产一线二线三线av| 五月丁香激情综合| 久久精品国产亚洲5555| 天天综合网入口~91| 在线欧美69V免费观看视频| 我爱搞逼综合网| 翔田千里av一区二区三区| 欧美日韩不卡传媒| 97精彩视频网站| 在线无码视频| 色婷婷一区二区三区久久午夜成人不| 伊人久久艹| 97视频播放| 97精品国产97久久久| 国产亚洲深夜激情| 超碰日韩美妻| 天天日天天插| 国产亚洲欧美每日在线| 久久禁| 91熟女熟妇视频网站| 久久久久久久免费A片国产成a人亚洲精∨品无码 | av三级电影在线播放| 神马午夜久久久| A片 AV一级在线播放观看免费| 乱久久久| 中字乱伦AV| 成人羞羞视频国产| 大香蕉92| 91欧美长吊| 亚洲福利中文字幕在线| 中文乱码字幕观看| 九九久久国产精品怡红院| 91女在线观看| 天天做日日做天天欢。| 国产二区三区免费视频| 久久久成人免费av电影| 久久久久久久久久久久久久久性生活视频 | 亚洲自拍一区夜夜操| 激情99| 午夜视频好爽啊| 欧美手机在线综合| 欧美在线55555| 亚洲欧美精品一区天堂久久 | 午夜精品久久久久久久久久久久久 | 国内偷自视频区视频综合| 蜜臀99久久国产| 超碰1997| 久久久爆乳翘臀一线天伦理视频| 亚洲高清无码在线桃色| av网站在线看| 96精品一区| 国产精品网站www| 五月婷婷色色| 亚洲精品人妻吞精av| 日本精品一级二级三级| 精品一区二区三区蜜桃| 死我十八禁| 精品一久久久| 富二代亚洲精品99| 天天看综合网| 97色碰| 国产成人www免费人成看片| 天天弄天天操| 99久久久无码国产精品性啊聊| 性生活性生大爱77AV国产| 91 综合 色| 一区,二区,三区视频| 91蜜臀在线久久久久| 伊人97超碰| 激情五月天婷婷| 国产九九九九九九九九| 人人摸人人叼| 久草视频在线视频在线视频在线观看| 99999亚洲| 国产精品噜噜噜日日日| 亚洲蜜臀精品视频久久| 精品久久九| 久久亚洲不卡一区二区三区| 欧美日韩国第一区| 国产夜夜操| 丰满翘臀美女影院视频| 久久小视频| 亚洲精品男人的天堂| 国产67194| 久久性爱免费送| 超碰成人免费| 日本三级日本三级99| 亚洲第一在线视频| 五月天激情网站| 人妻少妇视频在线播放| 亚洲九月丁香| 99热自拍| 国产女人高潮视频| 中文字幕丝袜人妻| 国产精品色哟哟| 亚洲情色图片区| 亚洲国产中文字幕| 91精品91久久久久77777| 中文字幕欧洲有码| 精品一区二区三区丰满熟女-亚洲欧美一区| 综合少妇网| 人人妻人人澡人人爽人人精品浪潮| JuliaAnn丝袜熟女系列| 伊人骚琪琪亚洲天堂网站| 男插女青青影院| 国产高清无码一区三区二区| 大色综合网| 丁香五月色| 国产伊人自拍| 91丨精品丨国产丨丝袜| 亚洲狠狠入| 91精品国产91熟女| 少妇熟女1区2区3区| 日本一级婬片试看三分钟| 综合久久欧美| 超碰人人妻| 亚洲日本成人动漫| 久久欧洲| 操久久久久| 深夜福利黄片| 精品毛片av一区二区| 大香蕉婷婷| 天天日日日射| 欧美特黄视频网站| 日韩三级伊人| 中文字幕123| 欧插网站| 9997se| 青青草导航在线视频| 97色碰| 国产做?爰片久久毛片?片美国| 校园春色之综合网| 欧美色道啊| a片久久久久久久久久久久 | 蜜乳成人AV| 97色婷| 狠色婷婷久久一区二区三区_| 欧美91网| a v网站在线播放| 99re这里只有精品3| 久久人妻少妇| 一级AV性爱| 欧洲熟妇xxXx欧美老妇裸体| 偷拍亚洲高清图片| 大香蕉视频啪啪啪啪| 亚洲密乳AV| 996热| 欧美性爱一区二区三区四区| 欧美se综合| 黄色小视频日本txt| 啊啊啊好湿国产一二| 加勒比综合在线| 色就色综合| 欧美久久九九| 麻豆一区二区AV天美| 日韩av电影成人在线| 爽爽淫人网| 熟妇无码视频三区| 大香蕉强奸乱伦| 亚洲限制级| 麻豆国产97在线| 五月丁香啪| 熟女熟妇伦久久影院毛片一区二区| 欧美瑟综合| 粉嫩不卡一区二区性爱| 国产精品欧美激在线| 日韩欧美性吧婷婷乱伦大香蕉| 黄色av一区二区在线| 国产十八禁视频| 中文字幕一区二区三区字幕| 91狠狠综合久久久久久| 9999久久久| 九热视频| 国偷自 一区二区| 操我无码| 久久综合久色欧美综合狠狠| 琪琪精品免费一区二区三区 | 黄色片大香蕉| 嗯~啊~轻一点 视频| 中文字幕亚洲热播人妻| 欧美少妇高潮久久91| 在线色导航| 亚州再线| 青青操综合网| 综合av影片| 精品人妻一区二区三区四区石在线| 久都青青视频| 91综合熟女| 精品国产嫩穴视频| av激情亚洲五月天| 黑丝少妇| 屁股久久久久久久久久| 麻豆国产尤物AV| 久久中文字幕在线观看| 色播五月丁香| 99久久99久久免费精品蜜臀| AV中文在线可看| 熟妇综合一区二区三区| 日日日啊啊啊| 草草网站影院白丝内射| 啊嗯嗯啊好大好爽| HEYZO高无码国产精品227| 四虎精品亚洲| 天天爽人人综合免费7799| av天堂电影网| 色婷婷在线视频精品导航| 欧美性爱第一区| 日韩一级二级三级免费看完整版国语版| 日韩精品人妻一| 91蜜桃传媒精品久久久一区二区| 国产精品国产拍高清AV| 国产精品香蕉| 精品人妻一区二区免费蜜桃| 亚洲伊人久久综合97| 久草在| 911粉嫩人妻| 国产强奸无码乱伦| 色麻豆AV| 99啪啪| 夜夜操美女| 亚洲欧美精品久| 九九av| 国产女s强制榨精视频| 99热99re6国产在线播放| 亚洲综合婷婷| 狠狠色噜噜狠狠狠狠2018| 校园春色综合香蕉| 人妻AV 中文字幕的| 99婷婷一区二区| 乱色老一区二区三区的观看方式| 日本三级中国三级99人妇网站| 国产强奸乱伦无码视频| 一二三四区操操Av| 精品.99999| 无套内射性感少妇视频| 久久97| 少好三P| 97久久精品国产| 欧美 亚洲 偷拍自拍| 国产丝袜美女在线一区| 欧美性五月| 亚洲日韩青青草色月| 91天堂色男人的天堂| 久久久96| 超碰是碰在线观看| 欧美图片色综合| 天天日天天色| 97在线精品观看视频| 日本不卡二区| 4tube欧美女厕所| 精品人妻一区二区三区夜夜| 屌色在线97视频| 温婉少妇玩3p| 中国AV美女| 精品人妻丰满熟妇一区二区三| 国产免费久久精品99re韩国| 夜夜一区二区| 啪啪综合网| 插穴性爱视频在线观看| 天天射天天| 啊啊啊啊好多水| 破处bbq| 男人 天堂 日 亚洲| 中文字幕精品资源在线| 欧美一级特黄淫片在线观看| 国产 日韩,欧美 自拍| 精品人妻一区二区三区免费视频| 精品乱码久久久久| 日韩9999| 欧美激情亚洲色图| 国产精品情侣啪啪| 91九九| 色区久久| 澳门特级毛片免费观看| 国产亚州高清国产拍精| 中国AV美女| 亚洲色婷婷久久91| 国产高清视频无码在线| 中文字幕后石码四区五区| 成人性交午夜免费片| 九九九精品色乱九九九| 97视频在线视频| 一区二区视频你懂的| 97色涩| 91伊人影视综合| 黄色高清久久无码依人| 江都AV在线| 久久嫩草国产成人一区| JULIA人妻风俗店中出电影| 大香蕉手机视频| 99日韩| 免费视频a级毛片免费视频| 无遮挡h肉动漫在线观看| 操比国产| 色色五月丁香| 国内外色色色色色成人视频| 五月色综合| 五月天婷婷久久| 69超碰综合| 婷婷精品视频| 亚欧高清在线| 淫荡熟女乱伦网| 国产AV色黄看到爽| 测评在线观看AV| 午夜超碰| 精品国产Av无码久久久亚洲| 香蕉热人人精品| 久久人妻| 精品无码欧美三级| 人妻偷拍一区二区三区| 密乳AV免费观看| 国产aⅴ无码片毛片一级网站| 午夜爽爽爽在线观看永久入口姬片| 人人操人人插人www| 亚洲一本色道中文无码aV天美| 夜色AV无码手机在线影院| 亚洲码专区| 婷婷五月天成人| 日韩美一区| 亚洲91网站| 日日AAvv| 肏逼视频日本| 亚洲国产尤物yw在线观看| 欧美黄色片AAAAA| 男人的天堂亚洲| 青青草白白色| 麻豆区久久久久亚| 日本久久女同性恋视频| 永久免费av无码网站国产app| ..日韩av毛片精品久久久| 370p日韩欧美亚洲精品| 熟女人妻一区二区三区| 日韩一级片| 人妻精品综合中文字幕在线| 熟妇人妻一区二区三在线| 欧洲精品区| 国产偷人伦激情在线观看| AAAAAAAAA黄片| 五月丁香啪| 综合欧美日韩在线| 色色九区| 欧美性爱中文字幕无线码| 五月婷久久| 亚洲综合888| 亚洲drav色图| 日本国产亚洲一区在线观看| 激情视屏国产乱伦强奸| 国产四虎在线| 久久久久国产精品人妻aⅴ天堂| 日本精品五区| 日韩97P| 国产精品欧美激在线| 超碰中文字幕人妻草一区| 午夜综合在线| 风韵犹存大大大大香蕉| 亚洲伊人久久综合97| 亚洲毛片一级带毛片基地| 少妇蜜汁| 啊啊啊好湿久久| 色妺妺AⅤ| 日本亚洲熟女视频| 啊啊啊好湿久久| av草草在线电影| 亚洲国产精品99久久久| 粉嫩国产精品久久粉嫩| 狠狠热这里都是精品| 精品人妻一区二区三区视频在线| 天天躁日日躁AAAAXXXX国产| 女人爽到高潮潮喷18禁网站 | 91热爆在线| 啊啊啊不要啊啊受不了了视频在线 | 丁香五月综合| 欧美亚洲首页| 97福利视频| 亚洲天堂男人天堂网| 成人情色一区二区| 秋霞 色色| 天天淫人人妻日日色| 日韩综合第八区国产精品| xxx0国产在线播放| 中文有码第五页| 绯色一区二区三区不卡少妇 | 亚洲丝袜色| 超碰九7| 人妻一区二区三区| A级片一区| 色妹子A V| 色婷婷六月丁香七月婷婷| 人人妻人人操人人乐| 亚洲天堂欧美| 国产偷仑| 91爆操视频| 欧美综合传媒| 成人短视频在线观看| 搡老女人老91妇女老熟女| 亚洲精品久| 欧美人人操人人插| 久久久久国产| 丁香六月婷| 欧美综合在线第一页| 69精品在线| 能在线播放的国产三级| 国产精品在线一区二区| 中文字幕乱妇免费视频| 18岁禁 茉莉成人久久| 亚州免费啪啪视频| 亚洲AV不卡在线观看| 亚洲熟妇丝袜在线观看| 特级毛片特黄久久免费看| 99色网| 51一区二区三区| 久久久久13| 久久精品中文字幕观看| 丰满人妻一区二区三区免费| 欲香欲色天天天综合和网| 五月天激情四射| 在线综合 亚洲 欧美中文字幕 | 99精品成人免费看| 中文字幕三四区| 精品九九九九九九| 牛牛久久国产精品视频一二三| JIZZJIZZ国产精品喷水| 性饥渴少妇av无码毛片| 色约约一区=区三区| 久久久久久人| 亚州高清色综合| 国产精品黑人一区二区三区| 伊人九九九| 色69大色97香蕉| 久久精品国产97欧美精品亚洲 | 亚洲91射| 亚洲国产日韩精品久久久| 骚熟女AV网| 我想要啊 啊 啊| 伊人嫩草| AVE乱伦| 亚洲精品少妇| 黄色成年| 懂色aV一区二区天美传媒| 青青草中文字幕| 91综合网| 欧美亚洲图片| 国内伊人久久久久久网站视频| 亚洲男人天堂2013| 日韩专区久久久| 欧美综合777| 91精品久久久久| 好属操| 欧美强奸乱能| 亚洲91少妇| 97内射偷拍| 91国精产品| 欧美激情激情xxxx欧美专区| 久久中文字幕不卡人妻| 秋霞无码av鲁丝片一区| 婷婷五月成人| 一本正道久久熟女| 欧美性五月| 久久这里只精品免费福利| 天天色综亚洲91污| 蜜臀人妻少妇久久在线观看| 国产美脚女优尤物在线观看| 天天看高清麻豆| 国语av狠狠色丁香婷婷综合激情| 国内毛片国产欧美拍| 亚洲一卡2卡3卡4卡乱码网站| 欧美一级黄片视频在线| 天天操av懂色| 在线 欧美 亚洲| 青娱乐亚洲自拍| 天天弄欧美| 男人天堂网站| 亚洲成人久久美女| av一区二区三区四区五区久草臀| 91亚洲狠狠色| 欧美极品美女aaaaaa级黄片| 黄色大香焦1级‘′‘| 亚洲综合图色在线| yiqicaoav| 欧美五区| 国产精品ww久久| 九九亚洲| 91亚洲综合在线| 99热91| 国语精品av| 久99| 亚洲欧美999| 欧美少妇一区二区三区| 麻豆精品一区二区三区四区免费观看| 久久丁香| 校园春色五月天| 精品超碰中文在线| 国产精品第一区第一页| 色诱中文字幕| 九九热久久99精品re| 91色五月俺来也| 精品无码一区二区三区| 2000亚洲男人天堂| 精品国模无码| 亚洲性少妇| 97香蕉碰碰人妻国产欧美| 超碰久久网| 亚洲丝袜色| 日va操| 91在线/欧洲| 91爱综合| 国产精品亚洲无码| 久热这里| 大香蕉十区| 久久鲁干| 国产精品农村妇女精品| 艳美熟妇先锋一二三区| 欧美日韩香蕉| 精品对白久久不卡| 香蕉大久久久| 日本久久久久久久久| 97色综合中文网| WWW美腿丝袜香蕉中文| 开心五月深爱五月| 老熟妇一区二区三区…| 思思热一热婷婷热一热| 国产熟女自拍| 操少妞在线视频| 一道本东京热加勒比一区二区三区| 少妇啪啪自拍| 国产AAAAAABBBBB| 国产日本一区二区三区蜜臀在线观看| 亚洲男人的天堂AV| 男人的天堂.com| 午夜精品99久久久久传媒| www成人啪啪18秘 免费| 久久久久久免费电影| 中文字幕精品免费一区二区| 五月天亚洲网| 久久精品男人的天堂| 中文字幕-区二区三区四区视频中国| 99热最新| 日本久久99| 青青草日韩无码| 九色97| 久久久人体| 久久久久久大| 国产精品久久久视频| 日韩美一区| 一牛影视久久久一区二区三区| 天天影视综合网欧美精品| 欧美一级久久久久久久大片动画| 夜夜天天噜狠狠爱2021| 萌白酱自拍视频| 成人片在线播放| 欧美精品第3页|