国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

DMA地址+偏移量機制詳解:從ADC多通道采樣到串口環(huán)形緩沖區(qū)

DMA地址+偏移量機制詳解:從ADC多通道采樣到串口環(huán)形緩沖區(qū) 做嵌入式這兩年凡是接觸過串口、ADC、SPI這類外設的人八成都被一個問題繞進去過為什么DMA啟動的時候不是從緩沖區(qū)的頭開始傳而是要從某個“地址加上偏移量”的地方開始尤其是當你打開參考手冊或者某個驅動庫的API注釋看到那句“Start transfer from address offset”時心里不免嘀咕這個offset到底怎么算是字節(jié)偏移還是元素偏移是每個通道都要加還是只需要加一次今天這篇就把這個事徹底講明白。我把自己在STM32、GD32以及部分國產MCU上做DMA傳輸?shù)膶崙?zhàn)經驗整理出來圍繞“地址偏移量”這個核心機制把ADC多通道循環(huán)采樣、串口空閑中斷接收、環(huán)形緩沖區(qū)這些高頻場景全部拆開揉碎。無論你是剛接觸DMA的新手還是被數(shù)據錯位、緩沖區(qū)越界折磨過的老手這篇文章都能給你提供一套可以直接抄作業(yè)的配置方案和排查思路。1. 先搞清楚DMA傳輸里的“地址”和“偏移量”到底指什么1.1 DMA的本質把搬運工從CPU換成硬件DMA全稱Direct Memory Access直譯就是“直接存儲器訪問”。它存在的意義只有一個數(shù)據搬運這件事不要讓CPU逐字節(jié)地做而是交給DMA控制器這個專職的“快遞員”來干。CPU只需要在開始時告訴快遞員三個關鍵信息——從哪拿貨源地址、把貨放哪目的地址、拿多少貨傳輸長度然后就可以干別的事去了。等快遞員干完活再發(fā)個中斷通知一下。這個模型在很多場合下非常好用但它有個隱含的限制DMA控制器這個快遞員認的是“絕對地址”。也就是說它只能聽從“從0x20001000這個地址開始搬”這樣的指令而不懂“這個數(shù)組的第3個元素往后”這種相對描述。所以在實際項目里當我們要從某個緩沖區(qū)中間位置開始傳輸時就必須在軟件層把“基地址偏移量”算好然后把最終的結果寫進DMA的地址寄存器。這就是“Start transfer from address offset”這句話的真實含義。它說的不是DMA硬件自己有什么偏移機制而是提醒開發(fā)者你在啟動DMA之前得自己把目標起始地址算準。這個“算準”看著簡單實際是很多數(shù)據錯位、越界問題的源頭。舉個例子假設你有一個uint16_t的采樣緩沖區(qū)adc_buf[64]想從第32個元素開始傳輸那么傳給DMA的存儲器地址就不該是(uint32_t)adc_buf而是(uint32_t)adc_buf[32]等價于(uint32_t)adc_buf 32 * sizeof(uint16_t)。這里的“32 * 2 64字節(jié)”就是偏移量你漏掉任何一個sizeof數(shù)據就會跑偏。1.2 地址偏移的兩種形態(tài)軟件算好 vs 硬件自增搞清楚了偏移量的本質再看DMA控制器里的地址寄存器就會發(fā)現(xiàn)還有另一種“偏移”——硬件自動遞增。大多數(shù)DMA控制器都有一個方向性的地址增長模式Memory Increment / Peripheral Increment。開啟之后每傳完一個數(shù)據單元源地址或目的地址會自動加1對于字節(jié)或加2對于半字或加4對于字。這種增長本質上也是一種偏移只不過它是硬件自動完成的不需要你每次傳輸前手動算。這兩者的區(qū)別很關鍵軟件算好的偏移只在啟動傳輸前算一次傳輸過程中起始地址固定不變。適合“整個傳輸從某個中間位置開始”的場景。硬件自增的偏移每次傳輸后自動變化配合緩沖區(qū)遍歷。適合“從某個位置開始持續(xù)搬運一整段數(shù)據”的場景。實際工程里這兩種經常疊加使用。比如ADC多通道循環(huán)采樣中DMA每次轉換完成都會把結果寫入緩沖區(qū)并且地址自動遞增等寫滿最后一個地址后又回到緩沖區(qū)首地址循環(huán)模式。這時候如果你想在處理中斷里只讀取緩沖區(qū)中間某幾個通道的數(shù)據就需要用“軟件偏移”去定位起始位置而讓硬件繼續(xù)自增以保證后續(xù)數(shù)據的連續(xù)寫入。提示在配置DMA之前先想清楚你要的是“一次固定起始地址的傳輸”還是“邊傳邊遞增地址的流式傳輸”。這個決定會直接影響你選擇普通模式還是循環(huán)模式也影響地址遞增方向是加還是減的設置。2. 場景實戰(zhàn)ADC多通道掃描與循環(huán)采樣里的偏移計算2.1 緩沖區(qū)數(shù)據布局與偏移量推導ADC多通道掃描DMA循環(huán)采樣是“地址偏移量”這個知識點最典型的應用場景。我遇到過太多人在這里栽跟頭要么讀出來的通道數(shù)據張冠李戴要么用DMA讀出來的值和手動輪詢完全對不上。先說清楚數(shù)據布局。假設你用ADC1掃描通道0、1、2、3四個通道開啟DMA請求每次轉換完成自動搬運。那么DMA緩沖區(qū)里的數(shù)據排列是固定的第一次轉換結果寫到buf[0]通道0第二次寫到buf[1]通道1第三次buf[2]通道2第四次buf[3]通道3第五次又回到buf[0]通道0以此類推。如果開啟了循環(huán)模式這個寫入過程會一直持續(xù)下去緩沖區(qū)不停地被刷新。如果你的需求是“每個通道采樣N次取平均值后再用”那么有兩個設計方案方案A緩沖區(qū)大小 通道數(shù) × NDMA一次傳輸長度 通道數(shù) × N傳輸結束后產生一次完整中斷再統(tǒng)一處理。這種方式適合低速周期采樣缺點是緩沖區(qū)大實時性一般。方案B緩沖區(qū)大小 通道數(shù)DMA開啟循環(huán)模式用半傳輸中斷或定時器觸發(fā)去讀取當前數(shù)據。這種方式適合持續(xù)采樣數(shù)據一直是最新的。不管哪種方案定位某個通道的數(shù)據都需要算偏移。對于通道ch它的第k次采樣結果在緩沖區(qū)中的下標是index ch k * channel_count對應的地址偏移就是offset_bytes index * sizeof(adc_buf[0])比如ADC掃描4個通道你想讀取通道2的最新采樣值在循環(huán)模式下就是buf[2]在深度N的緩沖模式下第3輪采樣的通道2數(shù)據就是buf[2 2 * 4] buf[10]。這個偏移量如果你寫錯一位數(shù)據就串了。2.2 半傳輸中斷不用等整批數(shù)據就能處理前半段再深入一步DMA還有一個很實用的功能叫“半傳輸中斷”Half Transfer Interrupt。它會在DMA傳輸?shù)骄彌_區(qū)一半時觸發(fā)一次中斷全部傳完時再觸發(fā)一次完整傳輸中斷。這個特性在ADC連續(xù)采樣場景里特別有用因為它能把數(shù)據處理分成兩次做降低延遲。但半傳輸中斷也引入了新的偏移問題。假設緩沖區(qū)長度為64個半字128字節(jié)DMA傳完32個半字時觸發(fā)半傳輸中斷。此時前半段數(shù)據在buf[0..31]后半段還正在寫入buf[32..63]。你在中斷回調里處理前半段數(shù)據時讀寫的位置就是一個典型的基礎地址偏移// 半傳輸中斷時有效數(shù)據從buf[0]開始長度32 process_data(adc_buf, 32); // 完整傳輸中斷時有效數(shù)據從buf[32]開始長度32 process_data(adc_buf[32], 32);這里的adc_buf[32]就是“基地址 偏移量”的又一次體現(xiàn)。如果你偷懶寫成adc_buf就會把已經處理過的數(shù)據再處理一遍同時漏掉后半段的新數(shù)據最終結果就亂了。注意半傳輸中斷觸發(fā)的位置取決于DMA字節(jié)數(shù)寄存器CNDTR的初始值減半。如果你的緩沖區(qū)長度是奇數(shù)個數(shù)據單元或者數(shù)據類型不是1字節(jié)對齊半傳輸中斷的觸發(fā)位置可能不會落在你預期的元素邊界上。設計緩沖區(qū)時最好保證總字節(jié)數(shù)是2的冪或偶數(shù)倍避免尷尬的錯位。2.3 常見問題手動輪詢和DMA讀到的值為什么對不上熱詞里有一條“adc的dma模式與手動輪詢值不一樣”這個我太有感觸了。很多人配置好ADCDMA后發(fā)現(xiàn)用DMA讀到的轉換值和直接手動讀ADC數(shù)據寄存器拿到的數(shù)值差得離譜就開始懷疑DMA是不是有問題。其實問題通常出在以下幾個方面第一通道掃描順序和緩沖區(qū)映射順序不一致。ADC掃描的順序不一定就是物理通道的順序有些MCU可以配置掃描序列。如果你的掃描序列是通道2、通道0、通道1、通道3那么DMA緩沖區(qū)里第一個數(shù)據是通道2的第二個是通道0的。你如果按“通道0在buf[0]”的邏輯去讀當然對不上。第二數(shù)據寬度配置不一致。ADC數(shù)據寄存器常見12位存儲在右對齊模式時有效數(shù)據是低12位但寄存器本身是16位或32位寬。DMA搬運時如果數(shù)據寬度設成了8位就會把同一個寄存器拆成兩段搬數(shù)據自然不對。正確做法是把DMA的數(shù)據寬度設置為半字16位或字32位和ADC的數(shù)據寄存器寬度保持一致。第三啟動DMA的時機不對。有些MCU要求先使能DMA通道再觸發(fā)ADC轉換否則第一批數(shù)據可能不完整。反過來如果你在ADC轉換過程中反復開關DMA也可能丟掉部分轉換結果。第四沒有關閉ADC的DMA方式和DMA的循環(huán)模式聯(lián)動。當用循環(huán)模式時DMA會持續(xù)搬運數(shù)據并覆蓋緩沖區(qū)。如果你在讀取數(shù)據的同時DMA還在寫入就可能出現(xiàn)“讀到一半被覆蓋”的情況數(shù)值當然不穩(wěn)定。解決辦法是開啟環(huán)形緩沖區(qū)后搭配雙緩沖區(qū)Double Buffer機制或者在數(shù)據處理期間暫停DMA拷貝完再恢復。3. 場景實戰(zhàn)串口DMA 空閑中斷與環(huán)形緩沖區(qū)偏移3.1 不定長接收的組合方案串口接收一直是DMA應用的高頻場景尤其是“DMA 空閑中斷IDLE Interrupt”這套組合幾乎成了MCU串口接收不定長數(shù)據的標準解法。它的原理不復雜DMA一直在后臺搬運串口收到的數(shù)據到內存緩沖區(qū)CPU不參與當串口總線上出現(xiàn)空閑狀態(tài)也就是一幀數(shù)據發(fā)完了總線靜默超過一個字節(jié)時間硬件會觸發(fā)空閑中斷此時CPU才介入處理緩沖區(qū)里剛收到的一整包數(shù)據。這個方案的好處是顯而易見的高頻數(shù)據由DMA搬運CPU只在一包數(shù)據接收完畢的瞬間被喚醒一次處理完繼續(xù)休眠極大降低CPU占用率。但正因為DMA是“一直在后臺跑”的緩沖區(qū)中的數(shù)據不會每次從0開始。如果你接收了第一包數(shù)據比如20字節(jié)后沒有及時處理緊接著來了第二包比如15字節(jié)DMA會從上次停止的位置繼續(xù)往后寫。這就是環(huán)形緩沖區(qū)Ring Buffer概念的由來也是“地址偏移量”的又一個典型應用。3.2 寫偏移的實時計算與讀偏移管理在串口DMA發(fā)送環(huán)形緩沖區(qū)中一般有兩個偏移量需要維護讀偏移read_indexCPU從緩沖區(qū)哪個位置開始取數(shù)據。寫偏移write_indexDMA下一次寫入的位置。對于DMA接收來說寫偏移其實不需要軟件維護因為DMA硬件自己知道它寫到了哪里。我們通過DMA當前剩余計數(shù)也就是CNDTR寄存器的值可以反推出“DMA已經寫到了哪里”write_index buffer_size - (uint16_t)DMA_GetCurrDataCounter(DMAx_Channelx);這個公式是串口DMA接收的核心。緩沖區(qū)大小是固定的DMA剩余計數(shù)代表還有多少個數(shù)據沒搬完所以“已搬完的數(shù)量 總大小 - 剩余計數(shù)”而這就是DMA當前寫到的位置也就是本次接收數(shù)據的結束偏移。拿到寫偏移后就可以和軟件維護的讀偏移一起組成環(huán)形緩沖區(qū)的讀寫指針。每次空閑中斷觸發(fā)時我們就在中斷里做以下事情讀取當前DMACNDTR計算本次接收的數(shù)據長度。從讀偏移位置開始把數(shù)據拷貝到協(xié)議解析緩沖區(qū)。更新讀偏移 (讀偏移 本次接收長度) % 緩沖區(qū)大小。這里最關鍵的一個細節(jié)是空閑中斷觸發(fā)后DMA并沒有停止它還會繼續(xù)接收后續(xù)數(shù)據。所以你必須先把數(shù)據從環(huán)形緩沖區(qū)取走或者讓DMA繼續(xù)往緩沖區(qū)后面寫。如果你在中斷里處理時間太長新來的數(shù)據可能覆蓋掉還沒處理的數(shù)據。3.3 一個可參考的STM32F4串口DMA配置代碼關鍵部分直接上一份我常用的STM32F407串口DMA接收初始化代碼這套配置在F1/F4系列上都能直接用GD32的兄弟們把庫函數(shù)換一換也差不多。#define UART_RX_BUF_SIZE 512 uint8_t uart_rx_buf[UART_RX_BUF_SIZE]; volatile uint16_t uart_read_index 0; void UART_DMA_RX_Init(void) { // 1. 初始化串口開啟空閑中斷 USART_ITConfig(USART1, USART_IT_IDLE, ENABLE); // 2. 配置DMA接收通道 DMA_InitTypeDef DMA_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); DMA_DeInit(DMA2_Stream5); DMA_InitStructure.DMA_Channel DMA_Channel_4; // 串口1接收對應通道4 DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)USART1-DR; DMA_InitStructure.DMA_Memory0BaseAddr (uint32_t)uart_rx_buf; DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralToMemory; // 外設到內存 DMA_InitStructure.DMA_BufferSize UART_RX_BUF_SIZE; // 緩沖區(qū)大小 DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable; // 外設地址不增 DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable; // 內存地址自增 DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode DMA_Mode_Circular; // 循環(huán)模式滿了自動回繞 DMA_InitStructure.DMA_Priority DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream5, DMA_InitStructure); // 3. 啟動DMA DMA_Cmd(DMA2_Stream5, ENABLE); }對應的空閑中斷處理函數(shù)void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_IDLE) ! RESET) { // 先讀SR再讀DR清空閑中斷標志 USART_ReceiveData(USART1); USART_ClearITPendingBit(USART1, USART_IT_IDLE); // 計算DMA當前寫偏移 uint16_t write_index UART_RX_BUF_SIZE - DMA_GetCurrDataCounter(DMA2_Stream5); // 處理從uart_read_index到write_index之間的新數(shù)據 // 注意要處理回繞如果write_index uart_read_index說明數(shù)據分成了兩段 uint16_t len (write_index uart_read_index) ? (write_index - uart_read_index) : (UART_RX_BUF_SIZE - uart_read_index write_index); if (len 0) { // 拷貝或解析數(shù)據 UART_ParseData(uart_rx_buf, uart_read_index, len); // 更新讀偏移 uart_read_index write_index; } } }這份代碼里最需要注意的地方就是“回繞”的處理。因為DMA循環(huán)模式寫滿緩沖區(qū)后會回到開頭繼續(xù)寫所以write_index可能比read_index小這時候數(shù)據會分成兩段一段在緩沖區(qū)尾部一段在緩沖區(qū)頭部。很多新手在這一步翻車就是因為只處理了write_index read_index的常規(guī)情況。提示如果項目里收發(fā)頻率很高建議在每次空閑中斷里把write_index緩存下來并用一個結構體統(tǒng)一管理讀寫索引避免中斷嵌套導致索引被修改。4. 配置的坑從寄存器到HAL庫的落地細節(jié)4.1 地址對齊與緩沖邊界問題很多人在配置DMA時忽略了一個隱性約束——內存地址對齊。不同平臺、不同DMA控制器對內存地址的對齊要求不一樣。STM32F1/F4系列的DMA比較寬松基本上字節(jié)、半字、字對齊都能兼容。但到了STM32F7/H7系列特別是支持D-Cache的高端芯片上DMA緩沖區(qū)如果沒做Cache Line對齊通常是32字節(jié)就可能出現(xiàn)“DMA寫入的數(shù)據CPU讀不到”“CPU寫的數(shù)據DMA搬的是舊值”的詭異問題。解決辦法是在定義緩沖區(qū)時加上對齊屬性。IAR、Keil、GCC各有各的寫法我常用GCC的#define DMA_CACHE_LINE_SIZE 32 uint8_t uart_rx_buf[UART_RX_BUF_SIZE] __attribute__((aligned(DMA_CACHE_LINE_SIZE)));Keil環(huán)境則可以寫成ALIGN_32BYTES uint8_t uart_rx_buf[UART_RX_BUF_SIZE];這個對齊問題對于“地址偏移量”來說還有一個隱藏含義如果緩沖區(qū)首地址對齊到32字節(jié)而你要從偏移7字節(jié)的位置啟動DMA傳輸那么實際的傳輸?shù)刂肥椎刂?就不再滿足32字節(jié)對齊了。這在硬件層面沒問題但在D-Cache做Invalidate操作時Cache Line的粒度是32字節(jié)你只Invalidate從偏移7開始的區(qū)域實際上會把整個32字節(jié)Line都失效那么Line內其他部分的數(shù)據可能因為沒被DMA更新而讀到舊值。所以建議設計緩沖區(qū)時把偏移量也考慮成對齊粒度的一部分或者干脆在DMA處理前后對整塊緩沖區(qū)做Cache維護。4.2 D-Cache一致性處理F7/H7這個話題值得單獨拿出來說。在帶D-Cache的MCU上STM32F7、H7、部分國產高端芯片DMA和CPU之間的數(shù)據一致性問題是排第一位的坑。CPU訪問DMA緩沖區(qū)時會優(yōu)先讀Cache里的數(shù)據。如果DMA已經從外設搬了新數(shù)據到內存但Cache還保留著舊數(shù)據CPU讀到的就是“過期”的數(shù)據。反過來如果CPU往緩沖區(qū)寫了數(shù)據準備讓DMA搬走但數(shù)據還滯留在Cache里沒有寫回內存DMA搬走的就是內存里的舊值。解決方案是操作DMA緩沖區(qū)前后做Cache維護DMA發(fā)送前執(zhí)行SCB_CleanDCache_by_Addr把CPU寫的數(shù)據刷回內存。DMA接收后執(zhí)行SCB_InvalidateDCache_by_Addr使Cache失效讓CPU下次讀取時從內存重新加載。這里又出現(xiàn)了一個“地址偏移”的細節(jié)這兩個維護函數(shù)都需要傳入起始地址和長度而起始地址就是“基地址偏移量”。如果你只在初始化時維護了基地址而實際DMA傳輸是從偏移位置開始的長度也沒對齊到Cache Line那維護就是不完整的。4.3 國產芯片GD32、HC32等的差異點這些年國產MCU用得越來越多GD32、HC32、AT32這些芯片我都用過。它們多數(shù)兼容STM32的DMA框架但在細節(jié)上還是要留意。GD32系列和老款STM32F1很接近但DMA通道和外設的映射關系可能不同。比如GD32F303和STM32F103雖然管腳兼容但DMA通道的請求映射有差異如果你想直接照搬STM32的庫函數(shù)很可能發(fā)現(xiàn)串口3的DMA接收根本不起作用。正確做法是查對應芯片的用戶手冊里的“DMA request mapping”表確保通道選擇正確。HC32系列小華半導體的MCU的DMA和STM32差異就大一些它支持多種傳輸模式包括塊傳輸、重復塊傳輸?shù)?。配置寄存器的手感更接近瑞薩系列。在使用HC32L136這類芯片時我建議直接參考官方例程別按STM32的思維硬套因為它的地址偏移機制和中斷標志位定義差別相當大。注意跨平臺移植DMA代碼時不能只換庫函數(shù)。一定要檢查三樣東西DMA通道與外設的映射關系、中斷標志位的定義、以及地址自增單位字節(jié)/半字/字。這三樣任何一個不對傳輸結果都會莫名其妙地出錯。5. 常見問題排查與避坑清單我把這些年調試DMA時遇到的典型問題整理成一張速查表基本上遇到“數(shù)據不對、傳輸不啟動、死機重啟”這幾種現(xiàn)象照著查就行:現(xiàn)象可能原因排查方法DMA傳輸不啟動CNDTR一直沒變化DMA通道和外設請求映射錯誤查看芯片手冊“DMA請求映射表”核對通道配置數(shù)據全部錯位或字符顛倒數(shù)據寬度配置不一致外設8位/內存16位等確保外設和內存的數(shù)據寬度一致或正確處理半字/字序ADC多通道只有第一個通道數(shù)據對掃描順序和緩沖區(qū)映射順序不一致打印緩沖區(qū)前N個數(shù)據手動核對通道對應關系串口DMA接收偶爾丟包、粘包空閑中斷處理時間過長DMA繼續(xù)寫入覆蓋未處理數(shù)據縮短中斷處理時間或改用雙緩沖區(qū)機制DMA和CPU讀到的數(shù)據不一致D-Cache未做Clean/Invalidate維護在DMA操作前后調用Cache維護函數(shù)確保緩沖區(qū)對齊程序進入HardFaultDMA寫入地址越界檢查偏移量計算是否有誤尤其是“元素長度”沒乘sizeofDMA循環(huán)模式緩沖區(qū)被覆蓋處理速度跟不上DMA寫入速度擴大緩沖區(qū)提高中斷優(yōu)先級或使用半傳輸中斷分流處理修改緩沖區(qū)大小后數(shù)據亂了CNDTR初始值未同步修改排查所有讀取CNDTR的地方確保都用同一個宏定義除了表格里的問題我再補充幾個獨門經驗第一個DMA傳輸數(shù)據長度的單位是“數(shù)據單元”而不是“字節(jié)”。CNDTR里填的是“要傳多少個數(shù)據單元”數(shù)據單元的大小由數(shù)據寬度決定。如果你配置的是16位寬度傳輸100個數(shù)據單元就是200字節(jié)。算偏移量時偏移也要按數(shù)據單元算不是按字節(jié)算。我記得有一次一個項目里ADC緩沖區(qū)明明是200個半字我按字節(jié)寫了CNDTR400結果DMA直接越界寫到了無關內存區(qū)查了好久才發(fā)現(xiàn)是這里的問題。第二個環(huán)形緩沖區(qū)的“回繞”絕對值最容易被忽略。上面串口例子里已經演示了回繞時的長度計算實際項目里如果緩沖區(qū)大小是2的冪可以用位與運算來快速實現(xiàn)取模index (index 1) (BUFFER_SIZE - 1)但前提是緩沖區(qū)大小嚴格為2的冪。這個技巧在中斷里能省不少CPU時間。第三個DMA調試時不要急著仿真正常流程先給一個固定數(shù)據源比如手動往外設數(shù)據寄存器寫值做小樣本測試確認地址和len正確后再接真實外設。// 判斷DMA緩沖區(qū)是否有回繞的小工具函數(shù) uint16_t RingBuf_GetDataLen(uint16_t read_index, uint16_t write_index, uint16_t buf_size) { if (write_index read_index) return write_index - read_index; else return buf_size - read_index write_index; }排查DMA通訊問題時建議先不要用調試器的“暫?!惫δ?。因為暫停的一瞬間DMA還會繼續(xù)跑你看到的寄存器值和內存內容可能已經過時。正確做法是做一個簡單的“自測模式”每收到一包數(shù)據就點亮一個LED確認傳輸邏輯通了再去看數(shù)據內容。6. 我對“地址偏移”這個設計的理解與使用建議關于DMA使用中的地址偏移我個人的體會有幾點。首先在工程結構上建議把“偏移量計算”封裝成獨立的、可復用的函數(shù)不要每次在使用的地方臨時拼地址。這樣一旦數(shù)據類型變化從uint16_t換成uint32_t從數(shù)組換成結構體只用改一個函數(shù)避免在多個位置遺漏。// 用一個宏統(tǒng)一計算緩沖區(qū)中某個索引的偏移地址 #define BUF_OFFSET(buf, index, type) ((uint32_t)(buf) (uint32_t)(index) * sizeof(type)) // 使用示例 uint32_t addr BUF_OFFSET(adc_buf, 5, uint16_t);其次設計DMA緩沖區(qū)時一定要預留足夠的余量尤其是串口、CAN這類可能收到不定長數(shù)據的場景。把緩沖區(qū)設成最壞情況下最大包長的2倍以上至少能留出處理時間窗口避免在高負載時數(shù)據被覆蓋。再次遇到DMA傳輸問題的時候還原基本法最有效第一看外設的數(shù)據寄存器是不是真的產生了數(shù)據第二看DMA地址寄存器對不對第三看傳輸長度對不對第四看通道請求是否使能。按這個順序排查大多數(shù)問題都能在10分鐘內定位。最后想說DMA的“地址偏移量”這個機制雖然基礎但它實際上是整個DMA靈活性的基石。真正把基地址、偏移量、數(shù)據寬度、地址自增方向、循環(huán)模式這五個參數(shù)搭配好你就能設計出很優(yōu)雅的數(shù)據流方案——比如多通道AD采集、連續(xù)攝像頭的斷續(xù)圖像傳輸、串口雙緩沖收發(fā)全都是這套東西的組合應用。能把這些基礎機制用順了以后再遇到那些看起來很復雜的外設驅動也就沒那么可怕了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
操东北女人| 黄页网站成人免费| 亭亭在线资源| 四虎在线观看网站| 欧美亚洲手机在线| 国产一在线观看| 亚洲中文字母在线播放| 欧美一级色| 麻豆精品A片免费观看| 久久综合97| 日本不卡高清视频| 国产久久一区二区三区野外在线| 黄色片G G G| 精品天堂| 激情五月激情综合网| 亚洲欧洲小说图片视频| 少妇同性| 大但人体久久久久| 免费观看网黄| 久久久精品国产亚洲伊人| 淫穴高潮色图| 欧美91精品国产自产| 欧美极品性爱天天射| 色婷婷久久| q2午夜理论片夜色av| 国产三级电影免费观看| 日韩在线国产字幕| 96AV久久久| 国产一国产一级毛片古装| 十八禁成人网站在线观看| 吉田爱美AV在线| 人人性爱视频免费| 亚洲色图欧美色图制服诱惑| 日熟女| 淫乱图区 | 色5月婷婷| 色欲久久99精品久久| 精品区国产区一区二区三区| 伊人在线大香蕉视频久久| 97 色综合| 91狠| 67914亚洲精品| 欧美成人免费在线观看| 国产精品一级二级在线| 小泽玛利亚一二三| 国产无码高清操逼视频| 精品国产99| 日本高清视频xxxx| 国产91丝袜在线播放蜜月| 综合色99| 中文字幕一区二区日韩网| 青青伊人久久| 中文字幕在线免费观看视频| 国产 亚洲 一二三四| 色欧美亚洲| 26uuu欧美| 欧美操逼熟女| 超碰人妻中文在线| 日日夜夜精品视频| 亚洲脚交| 国产 无码 一区二区| 乱色老一区二区三区的观看方式 | 天天爱天天韩国日本牛牛牛牛| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 无码在线亚洲| 久久欲| 色九久| 亚洲日产专区婷婷| 中文有码第五页| 久久人爽| 久久久精品九| 欧美 亚洲| 91蜜臀在线久久久久| av无码精品久久久久| 高清国产无码av| 国产乱码久久久| 97丝袜亚洲在线播放| 麻豆伊人网| 精品无码人妻一区二区免费蜜桃| 国产女人9999| 东京热大香焦| 国产诱惑| 乱理日韩中文| 日韩午夜国产| 国产视频大全| 91国模| 亚洲熟女一区| 精品69网| 色天使亚洲综合在线观看| 老司机深夜18禁污污网站| 中文字幕第9页萱萱影音先锋| 国产精品不卡一区二区三区| 日本久久久久久久久久| 91成人无码| 无码区蜜乳| 国产欧美精选激情视频| 婷婷五月av| 欧美日韩淫加| 伊人热综合| 精品国产人成在线| 婷色五月| 五月天综合网| 日本视频在线中文字幕| 欧美极品性爱天天射| 人人人摸人人| 色哟哟的毛片| 香蕉精品二区二区| 视频黄色国产一级| 91在线限制级| 操逼逼一区视频| 国产女上位好爽在线| 中文字幕78| 亚洲双插| 青娱乐日韩无码| 啊…啊…操我用力操我| 97色诱| 亚码激情| 97在线日韩中文字幕| 色综合一区二区三区| 久久无码一区二区二三区性色| 超碰国产在线| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 亚洲成人日韩小说| 男人网站婷婷| 一区二区娱乐网站| 91综合天天看| 97色色婷婷| 试看60秒| 91九色精品熟女内射| 亚洲色图综合网| 夜夜操美女| 九九黄色网| 日韩一级二级三级免费看完整版| 手机不卡视频不卡在线一二三区| japan日本高清乱xxxx| 男人的天堂VA在线| 亚洲另类小说卡通动漫| 日本一天色道久久久精品视频| 久久大黄片| 中文字幕av色| 欧美激情综合色综合啪啪五月| 四虎在线视频| 狠狠亚洲| 国产少妇与亚洲av| 日韩免费av片高清无码| 国内一区二区三区| 日韩丝袜高跟制服在线观看| 国产精品视屏| 操人无码| 日韩精品在线观看网站| 男人天堂东京热| 9久超碰| 黄页网站免费高清在线观看| 啊啊啊不要嗯嗯在线观看| 国产精品青草综合久久| 神马久久久久久伦理片| 成年人黄色视频免费| 亚洲色悠悠久久88| 99成人| 免费在线观看国内色片网站网址| 中文精品一区二去| a片久久久久久久久久久久 | 亚洲深夜福利| 欧美偷| 碰超人人在线一区二区三区| 性色avv| 五月综合久久| 99热这里是精品| 91蜜桃传媒精品久久久一区二区| 亚洲中文字幕一区二区| 男人天堂新| 欧美综合色,www| 激情另类激情| 亚洲中文字幕av| 久久婷婷苹果| 中文字幕一区二区三区50路| 国产超碰97| 91综合网站| yw尤物av无码点击进入麻豆| 欧美亚洲激情一二三| 国产精品2020| 色欲蜜臀AV| 啪啪啪综合网| 国产精品第一区第一页| 翔田千里AV无码秘 三区| 中文字幕乱妇免费视频| 好湿好紧视频| 国产操逼视频在线观看| 精品高清av中文字幕| 东京热男人的天堂精品| 亚洲黄色a级片| 国产精品老熟女一区二区| 一区二区你上我| 91爱做| 欧美色网络| 91精品国产91久久青草| 91亚州| 亚洲国产综合视频| 久久久久久综合久久伊人蜜月| 翔田千里AV无码秘 三区| 74成人在线| 无卡一区=区| 欧美与日韩97| 精品999999| 人妻丰满熟妇一区二区三| 日本高清_区二区三区| 青娱乐休闲视频在线观看| 婷婷色色五月天福利| 老司机深夜影院18未满| 爱干爱射网啊啊啊| 亚洲无码 国产无码| 操美女高潮抽搐白浆| 嗯嗯嗯不要不要免费视频| 97精品全部| 国产成人午夜视频网址| 小草精彩毛片| 亚洲色91| 国产亚洲欧洲在线观看| 久草男人天堂| 国产一级内射高清视频 | 国产日韩精品suv| 日韩免费性爱视频在线观看| 亚洲校园激情| 超碰av在线| 国产视频小说| 嗯嗯啊在线视频| 人妻少妇无码 | 亚洲麻豆精品二区三区| 91精品丝袜久久久久久| 激情综合五月婷婷| 亚洲精品国产熟女| 久久久97| 人妻精品免费一二三区| 一区久久久二区| 91视频综合网| 加勒比日本在线| 国产乱色国产精品免费视| 97精品97久久| 91国产精品在线看| 舔人妻中文免费视频| 亚卅熟女乱色| 懂色av一区二区三区天美传媒| 91粉嫩萝控精品福利网站_精品影音先锋国 | 久久久久亚洲Av无码专区老牛影视| 综合激情五月丁香| 国产精品不卡高清在线观看| 欧美一品道| 91精品黄在线观看| 国产不良强奸视频免费看| 久久丁香五月天| 亚洲天堂久久| 四虎影视永久在线免费| 欧美图片校园春色| AND人妻系列| 在线看片国产精品每日更新| 大香蕉草草| 99re8免费高清在线| 国产熟女少妇一区| 天天日夜夜爽| 丝袜剧情| 天天视频网站黄| 超碰在线1234区| 黄污污污污| 曰韩人妻中文字幕在线| 国产熟妇 码视频户外直播| 999久久久久久久精| 亚洲欧美日韩综合在线尤物 | 五月天偷拍| 一级啊性爱在线视频| 在线中文字幕极品av| 在线观看不卡一区二区三区| 亚洲在线欧美| 久久专区| 无码人妻精品酒店| 欧美性暴力| 亚洲色图A| 91热| 成人性交午夜免费片| 欧美大的香蕉有线电视视频| 亚洲黄色电影| 大香蕉手机在线| 中文字幕在线免费观看2| 国产一区二区免费福利片| 91精品国产91久久青草| 亚洲乱妇p22| 91男人天堂网| 亚洲97精品| 国产亚洲色停停久久99精品91| 九九热av| 国产精品呦一区二区三区| 操我无码| 欧美日韩免费专区在线| 日韩综合色网| 久久久久久97| 最新亚洲黄色免费电影 | 欧美 传媒 麻豆 日韩 偷拍| 91精品婷婷国产综合久久| 麻豆成人av| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 亚洲激情视频| 欧美成人黄网色网站| 色香色欲天天综合网天天来吧| 思思热免费在线视频| 婷婷五月天久久精品视频一区二区三区| 久久久99999久网站| 青青操日韩| 亚洲欧美天堂| 粉嫩av在线一区二区| 欧美亚州手机在线| 吊色| 男人天堂网站| 久久美女国产| 亚洲图片 激情小说| 免费a v| 另类小说五月天| 91欧美另类| 日本精品五区| 久久久久久波多野吉衣高潮| 无码日韩人妻av一| 蜜乳av一区二区三区| 秋霞一级A片黄色视频| 天美国产精品| 久久久蜜桃臀无码视频| 日韩精品人妻中文字幕有码午| 亚洲精品人体| 视频在线观看一二三区| 69国产对白刺激| 91是天天| 福利操逼| 久久区| 久久久久久中文版| 国产美女mm131爽爽爽爽| 天美一区在线| 亚洲经典啪啪| 97ai亚洲| 欧美亚洲丝袜美女电影| 亲子敌伦对白在线播放| 国产精品久久成人免费| 大屁股人妻女教师撅着屁股| 亚洲精品蜜桃久久久| 色情综合| 久久精品国产精品亚洲艾通辽熟妇| 久操视频在线| 婷婷色综合| 国产成人www免费人成看片| 丰满熟女一区二区三区在线播放| 亚洲欧美精品久| 国产福利精品最新在线| 搡老女人老熟女91| 亚洲综合情色| 日本999精品| 大香蕉黄色一区| 亚洲无码电影久久久| 97视频900| 日本岛国黄色网址| 亚洲国产av中文字幕久久| 久久在肏| 久久久月天| 国产一区二区三区不卡手机在线| 在线观看综合精品亚洲| 人妻乱仑一区二区三区| 俞拍久久国应视频| 大香蕉草草| 福利风月五月天影院| www.四虎在线| 久久亚洲不卡一区二区三区| 黑丝内射一区二区三区| 欧美,日韩,亚洲视频| 亚洲一区二区在线观看91| 亚洲人妻色图| 97欧美色综合| 久久熟女久| 97色涩| 国产丝袜高跟美女av免费观看| 亚欧美色图| 人人九九精| 熟女91网| 精品一区二区三区蜜桃臀www| 97硬碰| 国产欧美日韩臀 | 精品无码人妻一区二区免费蜜桃| 天天看高清麻豆| 亚洲欧美日产国产91毛片| 日韩精品高清资源在线| av东京热男人的天堂| 日本中文字幕一区| 国产后入式在线观看| 日日骚中文字幕| 久久性爱视频99| 亚洲最大成人a毛毛片| 亚洲精品亚洲人成人网| 狠狠干精品一二三四五六2022| 欧美熟女激情| 丝袜视频网国产90| 大香蕉一级黄色片久久| 无码日韩网站| 五月天色综合| 高清不卡 中文 人妻| 性欧美91| 96超碰网| 国语av最新自产拍在线观看| 精品人妻av在线播放| 精品一区96| 人妻另类| 国产51色综合久久免费| 日夜啪电影| 欧美91网站| 九九精品无码专区免费| 性欧美体内射精| 久久免费9| 超97在线精品视频| 国产亚卅97| 97精品在线视频| 八人操人人摸人人看| 密臀在线免费观看| 久久露脸国产老熟女| 伊人久久大香线综合无码| 久久在线观看免费视频| 思思热在线观看| 国产精品色色| 搡老熟女免费视频| 婷婷另类小说| 人人妻人人狠人人| 国产亚洲色婷婷99精品91| 亚洲风情在线观看| 婷婷久久五月天| 国产又粗又长视频| 校园春色欧美色图| 无码人妻一区二区三区色欲aⅴ| 婷婷丁香久久| 在线免费试看60秒| 99九九精品| 极品少妇久久久| 亚洲成人碰碰| 久久性生大片免费观看性| 五月婷婷丁香| 国产91专区| 婷婷五月天色色| 99久久无码| 九草在线大香蕉| 日韩欧美加勒比| 中文字幕AV片| 久久99黄色卞西瓜| 中文字幕亚洲热播人妻| 春色综合免费| 国产乱青青草久久| 色婷婷六月| 成人性爱av| 加勒比99999| 在线综合 亚洲 欧美中文字幕| 一级二级三级黑人无码| 视频在线中文字幕| 激情文学 亚洲图片| 日韩三级一区| 日本日皮视频逼| 色综合一本| 国产免费一区| 久久香蕉超碰97国产精品 | 色五月AV| 日本操逼视频免费| 国产一级内射高清视频| 精品亚洲| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲美女自拍偷拍视频| 久操网址| 国产精品久久久吖| 亚州五月| 91亚洲色图| 色逼综合| 婷婷超| 亚洲成人ab| 色噜噜人妻av中文字幕| 日本三级精品| a片久久久久久久久久久久 | 最近2019中文字幕国语免费版| 人妻献身系列第54部| 亚洲图片欧美色| 国产精品熟女一区二区三区| 国产福利一区二| 国产大陆天天艹| 美女91色黄18| 97午夜剧场日韩| 999亚洲国产视频| 天天做天天爱| 综合网欧| 78精品在线| 伊人91| 100啪啪视频大全| 日本欧美一区二区三区视频麻豆| 日本免费一区二区不卡| 国产乱码精品久久久久久| 亚洲男人的天堂网| 久久东京热成人| 日韩日本欧美在线观看| 国语对白露脸XXXXXX| gogogo免费高清看中国国语 | 久久99手机免费视频| 久热精品色情| 9丨久久九九九| 操操操五月天婷婷丁香影院| 久热9| 另类成人首页一区| 日本操逼aaaaa| 老司机老司机午夜影院| 亚洲综合小说另类图欧美视频激情小说色五月天 | 超碰99热中文字幕| 久草成人影片| 免费看日产一区二区三区| 人人污日韩一区二区| 久久成年精品| 91久久久亚洲| 欧美成人精品一区二区三区| 五月丁香激情四射| 发朗少妇买婬全视频中文| 91丝袜激情在线| 国产无码高清操逼视频| 亚洲色图超碰在线| 伊人一区二区三区| 日韩在线欧美精品一区二区| 中文字幕日韩精品一区二区三区| 999热这里只有精品| 青娱乐国产盛宴视频| 玖玖人人爱| 超碰91在线| 大香蕉久| 成人无码欧美一级A片狼牙直播| 色五月网址| 殴美色网| 日韩精品一二三四| 久久啊啊啊| 北京美女一区二区| 影音先锋新男人| 亚洲精品国产AV天美传媒| 高清不卡 中文 人妻| 1禁看欧美黄片免费看| www.acm成人黄色毛片| 成人五月香网在线| 久久久男人的天堂| 婷婷丁香五月激情啪啪| 亚洲男人天堂2017| 欧美极品女人的天堂| 久久鲁干| 免费a v| 亚洲色图第四色| **一级毛片国产| 欧美一区二区福利在线| 老熟女阿 国产91| 欧美亚洲激情小说| 亚州伊人色综台| 欧美的性爱网站免费| 超碰97.com| 丁香六月婷婷综合| 亚洲成A∨人影院在线欢看| 色网色网色网色网色网色| 亚洲97P| 萌白酱自拍视频| 蜜臀网址在线| 91色综合色| 欧美亚州手机在线| 99热这里只有精品8| 免费簧片在线观看| 99老司机精品视频在线观看| 高清无码人妻久久久一区二区三区aⅴ| 97 九色| 欧美暴力猛交| 亚洲综合113页| 欧美中文字幕一区| 极品粉嫩一区二区| 亚洲s在线观看| 天天干,夜夜爽| 中文字幕在线播放2中文字幕在线观看2| 九九干| 麻豆国产精品午夜视频| 中文字幕人妻丝袜乱一区三区| 欧美玖玖爱免费玖玖| 久久欧洲| 超碰97资源大奶| 91人妻视频在线| 麻豆 欧美 日韩| 久久久不能久久久久| 婷婷国产精品九区| 天天爱综合网| 91亚洲人| 国产亚洲99久久精品熟| av无线看| 超碰久热| 91女人的网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 宅男91视频在线播放| 蜜桃狠狠色伊人亚洲综合| 欧美色图小说综合| 中文精品一区二去| 五月天婷婷综合网| 丁香五月性| 大香蕉久久| 999 久久久| 国产日本顶级一区二区三区| 97视频免费播放| 中国一级αV| 亚洲AV无码AV吞精久久久久| 乱伦3P视频| 久久极品伊人| 香蕉免费一区二区三区不读| 东北女人| 亚洲九九九| 国产一区二区在线电影| www.99热| 国产一| 欧美一区二区三区不卡高清视频| 欧美性爱www免费版| 伊人97超碰| 婷婷10月天青娱乐| 国产精品一区二区三| 成片免费观看视频大全| 少妇高潮喷水无套久久久久久| 九九九九九精品视频| 天天干天天拍| 91精品操美女| 5252色欧美在线男人的天堂| 国产精品爽爽va在线观看98| 亚州色图欧美| 夜夜影视四色| 人人搞人人插人人操| 不卡一区二区日本视频| 亚洲男人的天堂网| 日韩欧美tv一区二区在线观看| 无码一区二区三区四区五区六区七区八区九区十区视频 | 亚熟在线| 天天看天天在线精品| 在线视频 亚洲精品| 成人夜夜爽| 亚洲在线网站| 日韩资源网| 丝袜美腿制服人妻二区中文字幕| 欧洲一区二区三区四区在线观看| 秋霞免费AV| 夜夜精品视频| 久久香蕉超碰97国产精品 | 亚洲精品97p| 超碰79人人乐| 蜜桃av综合网发布| 日本精品999| 欧美暴力猛交| 一区不卡在线观看av| av天堂加勒比| 久久是精品| 日韩另类色图| www.99色| 大香蕉强奸乱伦| 97国产人人| 丝袜综合色图| 色五天伊人| 91国产美女丝袜足交精品视频| 亚洲熟女中文字幕在线| 日本欧美一区二区三区视频麻豆| 色综合 加勒比| 欧美五区| 少妇第一页| 熟妇人妻一区二区| 国产小u女在线观看| 欧美另类精品xxxx| 国产福利电影| www国产无码| 色悠久久久av| 久久久艹艹艹| 九九久久久九九| 天天操天天插| 五月婷婷综合激情| 热99这里只有精品| 国产欧美一级在线观看| 色噜噜精品一区二区三| 特级丰满少妇一级AAAA爱毛片| 99老司机精品视频在线观看| 女人被男人桶爽视频网站| 另类图片天天影视| 97在线观看| 爱爱啊啊啊| 久久性爱视频免费看| 国产人妖的免费的视频| 久久久久免费看少妇A片特黄| 性欧美999| 黄页av| 久久97| 91足交| 婷婷啪啪| 99无码| 国产高清成人传媒影视| 麻豆天美国美国产AV| 日韩人妻大香蕉| 久久亚洲天天做| 精品美女人人干| 密臀成人视频久久久| 97神马久久| 欧美人与动性人交a| 亚洲少妇中文字幕网址| 久久综合女优| 97免费视频在线| 精品视频久久| 7777奇米影视久久| 亚洲国产无码精品首页久久久| 国产不卡片| 黄色av播放免不| 国产亚洲精品美女久久久久久2021| 国产精品一二三在线看| 日少妇亚洲版| 日韩人妻无码不卡网站| www.色操逼| 亚洲Av噜噜一区二区三区妖精| 91天堂丝袜美腿| 操逼片中文| 激情图片伦理国产一区二区日韩| 亚洲欧美校园| 1769精品一区二区三区| 春色综合免费| 综合欧美日本三级| 蜜臀久久在线视频| 天天干人人看综合| 插入综合网| 欧美 牲| 国产黄色影片在线观看| 91天天c| 亚洲精品九九九| 91一区二区| 亚洲se91| 91 在线亚洲| 欧洲亚洲人妻无码高清久久三区四区| 亚洲欧洲日本精品中文a∨| 手机不卡视频不卡在线一二三区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 99国产在线绯色一区| 男女猛烈无遮掩视频免费软件| 日本999精品视频| 亚洲免费在线探花| 久久久久国色αv免费观看| 户外裸露刺激视频第一区| 91性网| 蜜臀操逼黄色视频操的好爽| 超碰色美女| 狠狠干,狠狠操| 国产精品爆乳懂色蜜乳| 日本三级精品| 国产剧情一区在线观看| 99久久精品无码一区二区| 亚洲久草AV色图| 高清不卡一二三区视频......| 久久的免费性爱视频| 欧美精品91| 91精品综合久久久久久五月丁香| AV男人天堂网| 久久久性爱视频| 99久久精品无码一区二区| 精品久操| 亚av顶级裸体一区二区三区四区五区| 夜夜影视四色| 老司机天天操| 免费视频97| 97精品一区二区视频在线观看| 久久女婷| 熟女被操视频网址| 久久久精品国产亚洲AV无码| 日韩熟女乱伦中出| 亚洲色系另类精品国产| 九九九精品美女| 208天天久久九九九| 欧美性爱97超碰| 人摸人人操人| 日本精品不卡一二三区| 精品性爱一区二区| 天天躁日日躁XXXXYY| 亚洲91网| 精品视频在线观看精品| 色综九九九一区| 天天操天天7| 91女日逼| 国产精品视频内谢女人| 午夜福利av电影在线| 乱性AV| 天天色天天干天天爱| 亚川综合视频| 国产精品黄色三级av| 亚洲h片在线免费观看| 久操不卡视频| 性爱乱伦视频免费| 免费簧片在线观看| 欧美偷拍区| 777奇米影视777四色| 成人无码在线超碰网| 热99这里有精品综合久久| 一区二区影视| 久久精品国产亚洲AV片多多 | 视频黄站| 综合久久久久久久久91| 福利操逼| 最新av中文字幕高清| 丁香五月天堂网| 午夜欧美J进J出白浆流出久久久| 96久久久精品| 久久九色| 国产精品自在自拍视频| 思思热在线视频精品| 日韩女优中文字幕| 欧美国产成人在线| 亚洲中文字幕在线视频一区二区| 亚洲性爱成人| 婷婷五月花| 大香蕉伊然在亚洲91| 欧洲在线性爱视频| 亚洲第一在线视频| 九一屌逼| 精品超碰国产| 91欧美巨乳| 亚洲色图激情小说| 成人av影院在线观看| 久久婷婷苹果| 欧苏综合色综合| 国产精品国产自产高清AV| 日韩三级在线观看mp4| 麻豆九九九| 超碰精品97| 六月婷婷色综合| 91热色| 美女天天干| 亚洲五月婷| 久久啊啊啊视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 在线亚洲精品久久久| x97av| 人人弄人人摸| 98色网| 欧美在线|亚洲| 亚洲激情综合另类男同| 乱日视频| 天天综合欧美| 丁香婷婷啪啪| 亚洲色棕合| 久久久久久国产无码精品| 国产伦精品免编号公布| 超碰久久.com| 欧美日韩岛国大片在线观看| 日韩精品高清资源在线| 97视频免费播放| 亚洲图片欧美在线视频| 激情久久日韩精品中文字幕麻豆| 日韩人妻有码免费视频| 超碰 另类 欧美 | AAAAAAAAA黄片| 二对二中文字幕。| 日韩免费簧片| 久久久久久性爱视频| 国产女人视频三四五区| 亚洲黑丝在线| 少妇蹲下露出大唇5| 婷婷激情综合网| 一区二区无码视频| 国产精品亚洲美女久久久久| 啊啊啊在线看| 婷婷五月av| 国产色图乱伦| 久热久| 999岛国大片| 午夜爽爽爽| 嗯嗯嗯,草死我| 日韩国产乱子伦App| 综合网亚洲在线| 91色女| 中文字幕91页| 亚洲少妇视频| 久久天天躁日日躁狠狠躁 | 69精品人人人人| 黑人无码一区二区| 亚欧美色| 91精品国久久久久久无码| 久久精品国产96精品亚洲拳交| 成人一二三区| 久久鲁夜| 中文字幕 码精品视频网站| 亚洲啪啪综合?v一区综合精品区| 欧美伦乱爱| 午夜人妻精品综合在线| 国产女s强制榨精视频| 天天影视之亚洲综合网| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 久久狠狠色噜噜狠狠狠狠97| 欧美91精彩| 992这里有精品| 天天摸夜夜添无码小视频| 国产精品一区二区三区在线| 麻豆黄四叶草网站| 操人91| 99在线免费公开视频| 啊啊啊啊好疼| 大香蕉男人的天堂| 91色艳| 久久男女激情视频网站| 欧美中文字幕日韩在线| 欧洲视频在线| 天美传媒av在线| 超碰超碰欧美| 中日高清无码操逼视频| 午夜.DJ高清在线观看免费7| 94色色电影网| 大香蕉日亚洲日本亚大| 午夜天堂网| 天天综合色| 人人做人人妻人人夜视频| 秋霞一级鲁丝片A片| 91无码人妻精品一区二区三区蜜桃| 久久av网| 嗯嗯嗯啊啊啊在线免费观看| 青青操轻轻| 四虎影视永久在线免费| 欧美国产精品久久九九| AV天堂因数| 超碰到97情色| 超碰98综合网| 双插在线| 午夜天堂精品久久| 97综合在线观看| 婷婷五月天成人| 欧美黄色片AAAAA| 多乙久久久久久| 思思热国产在线视频| 一本色道久久天天射天天干| 91亚洲人| 少妇久久久久久| 欧美性性性| 久久老熟女| 5252色欧美在线男人的天堂| 色香欲天天天天综合色| 久久AV色| 中文字幕一区二区三四五区日日骚| 干b在线性社区| 中文字幕乱碼在线| 国产性刺激| 亚洲丝袜天堂| 日逼五月天| 久久神马影院| 精品人妻一区春色| 美女干逼2| 国产诱惑| 免费男人的天堂| 久草色在线观看| 9美女超碰在线免费观看| 欧美色图自拍| 超碰导航97| 青青青在线高清视频在线一二三四区 | 超碰97 线线 在现| 骚女天天综合网| 麻豆天美91| 超碰日韩人妻| 亚洲免费在线探花| 333kkkk·亚洲com久久| 一区三区啪啪| 99这里有精品| 97干com| 亚洲人妖网| 天天影视之亚洲综合网| 97精品一区| 97在线免费看视频| 妇女性内射冈站HDWWWCOM| 最好看的中文字幕在线2018| 爆操无码| 亚洲色天堂日韩中| 欧美大香蕉97| 中文子幕一二三| 欧美姓爱综合网| 日韩强奸av| 日人妻视频91| Julia在线播放亚洲久久| 天堂av2019| 91 综合 色| 欧美日韩精品久久久久久久久东北老熟妇| 97超碰超碰| 日本免费中文字幕在线| 久久婷婷亚洲| 射欧美综合| 精品大全99999| 精品无码久久久久久久杏吧| 无码WWW免费视频网站| 色色色999| 亚洲美女30b| 人妻另类| 一级性爱啪啪视频| 人妻少妇久久久| 久久日本熟女精品一区| 9久久久久久| 影音先锋新男人| www.久久爱| 蜜臀AV成人精品蜜臀| 老熟女综合网| 懂色av色欲av蜜臀av| 亚州国产精品乱| 日日摸日日碰| 2017天天拍大香蕉| 成人乱码一区二区三少妇| 少妇蜜汁| 国产区在线| 青青操综合网| 淫色网综合| 精品国产乱码久久久久久久| 日韩中文字幕国产| 亚洲国男人的天堂| 天天日熟妇| 无遮挡一级毛片视频免费的| 日韩三级视频一区二区三区| 蜜臀无码一区二区| 国产成人超碰在线| 久久久一区二区三区四曲免费听| 狠色婷婷久久一区二区三区_| 丰满熟女一区二区三区在线播放| 曰韩成人免费视频| 日韩天天本| 综合激情二| 欧美性天天影视| 四虎精品亚洲| 九月丁香综合网| 成人在线视频一区| 国产无码精品无码| 91在线色综合| 撸无码不卡免费视频| 无码聚合| 色亚州人久干视频在线观看免费版| 午夜成人爽爽爽爽A片李冰冰| 五月丁香| 亚洲无码一区成人免费午夜| 国产女人91精品嗷嗷嗷嗷| 欧美成人一区二区| 丁香九月 婷婷| 超碰97资源中文字幕| 欧亚日韩一区在线| A V少妇特黄三级| 色臀AV| 欧日韩不卡视.频| 亚洲天堂2020| 久草精品热视| 电家庭影院午夜69久久夜色精品国产69乱| 99超级碰免费视频| 久久久久久十| 天天摸,夜夜摸| 日韩色| 极品白嫩福利在线| 国产精品不卡高清在线观看| 97综合在线观看| 欧州一区二区三区四区| 青青草黑寡妇男人天堂| 一级性爱视频免费在线| 国产污视频麻豆传媒一区二区| av毛片aaaaa免费看| 综合干干干av久久久综合网 | 大香蕉男人的天堂| 懂色天天爱天天日天天射天天澡| 伊人 俄罗斯 a v| 国产精品探花视频| 97在线播放 | 福利视频香蕉免费一区二区在线| 青青草在线视频人人想人人上| 色综合一本| 素颜老阿姨乱情色| 日韩黄色一区二区三区| 91N综合网| 台湾佬激情综合| 日韩三A大片在线观看| 色男人色天堂东京热| 中文字幕精品区先锋资源| 91老司机精品| 亚洲AV免费在线观看| 国产精品一区av在线| 啊啊啊啊啊舒服| 五月天伊人| 日小BB小视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 理论久久婷婷网8| AV天堂丝袜| 午夜AV人气不卡| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 春色综合免费| 欧美九九爱| 在线国产福利网址导航| 午夜福利合集| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 蜜臀久久99精品久久久久久-DVD| 大香蕉 222| 日本一区二区成人在线| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 婷婷色色网| 操操操五月天婷婷丁香影院| 欧美专区17页| 96AV久久久| 日本 欧美 国产一区| 香港澳门日本三级网站| 97操综合| 欧美三级免费伊人| 偷窥自拍A片| 无码操逼视频一下| 亚洲天堂电影网99999| 97高清啪啪| 99久视频| 久久五十路熟女人妻| 啊啊啊啊啊啊好多水| 天天超级碰碰碰| 亚殴在线| 欧美 亚洲 偷拍自拍| 亚洲码在线中文在线观看| 欧美后入式| 一区| 97亚洲国产影视| 亚洲超碰在线| 91亚洲色人| 国产精品白丝| 69久久| 色网综合网| 欧美熟妇乱码在线一区| 久久五月丁香| 91高清无码下载| 亚洲欧洲中文日韩女优乱码| 少妇的嫩逼图片| 超碰在线1234区| 欧美暴力猛交| 日韩97视频!在线| 天天干天天爽| 性爱av在线免费观看| 久久黄色视频一区二区三区| 网友自拍第一页| 亚洲成成熟女人综合一区二区| 手机av亚洲丝袜美腿日韩第一页二页| 蜜桃中文字日产乱幕4区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 午夜欧美J进J出白浆流出久久久 | 久久久久久久97| 青青草公开在线免费不卡视频| 无码人妻精品一区二区三区九九| 人人操天天爽| 富二代亚洲精品99| 久久天天摸| 国产欧美精品日韩区二区麻豆天美| 久久久com| 九九香蕉网| 任你爽视频| 久久五月丁香| 激情综合色| 五月天伊人| 啊啊啊啊一区| 欧美亚州手机在线| 日韩大香蕉AV影片| 日本熟妇浓毛hdsex| 亚洲97精品| 久久久蜜桃臀无码视频| 人妻熟女一区二区三区视频| 亚洲天堂一二| 婷婷性网| 亚洲欧美黄| 国内伊人久久久久久网站视频| 91高潮| 日本一道在线播放高清| 蜜臀一区二区三区在线| 久久永久无码人妻视频| 亚洲成人精品在线一区| 久久久久久久久久va| 一本精品日本在线视频精品 | 91电影色诱|