日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
久久男人的天堂| 91强热人妻| www国产天美久久久| 色妹子A V| 国产深喉| 中文字幕乱在线伦视频中文字幕乱码在线 | 午夜天堂网| 超碰色大香蕉| AA丁香综合激情| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 国精品一区二区三| 91老熟妇| 超碰97欧美在线| 亚洲成人在线乱码色午夜| 国产乱伦亚洲色图高清无码| 午夜天堂精品久久久久91| 蜜臀久久99精品久久久| 色噜噜婷婷| 十八禁黄色成人网站观看| 亚洲天堂五月天国产| 中文字幕丝袜美腿| 亚洲无吗在线视频| 中文区中文字幕免费看| 亚洲少妇色| 日韩欧美加勒比| 插入综合网| 88xx成人精品视频| 日本超碰色精品| 上海一级黄片| 久久国产精品m码| 国产精品一二三免费网站| 伊人超碰97| 9久久久久| 亚洲精品国产AV天美传媒| 天天亚洲| 人人操人人操人妻人| 美女露胸露尿口| 人妻 丝袜美腿 中文字幕| 久久天堂网| 青草青青久久久久久国产| 日韩操啪| 亚洲丝袜诱惑| 人爽不卡视频| 久久亚洲一区女同性恋中文字幕| 美女超碰978| 成人麻豆av电影网站| 校园激情狠狠四射| 最新9久久久9免费视频| 情色五月天网| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 日本99久久| 亚洲97久久精品亚洲| 射久久| 操亚州| 日本999精品视频| 久久香蕉网| 嫩呦国产一区二区三区AV| 啪啪啪综合| 91人妻Pr| 天天色综合图片| 99精品久久久久久久婷婷蜜桃| 亚洲在线网站| 伊人一级免费黄片| 日韩欧美成人性爱在线| 久久线上视频免费看| 欧美精品在线观看| 神马久久久久眼| 江都AV在线| 久久久久久日韩| 色网在线视频观看免费| 日本护士高潮| 日本岛国黄色网址| 九九十八精品| 日本999精品| 欧美男人亚洲天堂| 国产久久av| 一类无码操逼视频| 日本免费一级AAA大片器 | 日本三级韩三级99久久| 日本人人操人人操| 97WW精品| 亚洲涩图欧美| 99久久9| 久久人爽| 伊人影院日本| 最新中文字幕精品在线| 超碰在线人人射| 强奸乱伦免费网站| 午夜无码精品免费看性色| 天天爽天天操| 91xingse| 欧美日本不卡| 久热精品在线| 一区二区乱码福利| 亚洲色图欧美视频| 大香蕉天天看妹子| 97亚洲中文| 欧美精品日韩久久久九| 欧美天堂日韩三级国产传媒| 91精品91久久久中77777| 日本操逼视频在线| 黑丝少妇| 先锋女优在线观看视频| 无码人妻精品一区二区中文| 欧美亚洲清纯| 日韩综合无码色欲vv| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 超碰在线人妻中文字幕| 日本久久精品| 97干天天| 乱伦Av网| 国产中出内射一区二区| 国产亚洲福利第一页丝袜| 久久亚洲精品成人av| 亚洲欧美啪啪| 温婉少妇玩3p| 试看福利| 九九热精品视频在线观看| 色97欧美| 中文乱码99| 美女AV一区二区| 国产亚洲色婷婷久久99精品91 - 百度| 久久精品店| 午夜精品久久久久久久99热影院| 亚洲影院无码在线| h色99999| 中文字暮97| 日韩国产在线观看av| 日韩射图| 国产 大胆 对白| 日韩另类| 乱伦图一区| 一本久久久精品| 99精品久久| 亚洲欧美天| 亚洲成人精品久久久| 欧美性爽xyxOOOO| 98超碰日本| 欧美色五月| 中文一区二区三区影院| 免费99精品国产自在在线| 任你草| 国产精品不卡一区二区电影| 中文字幕AV中出| 欧美亚洲高清不卡| 中文字幕精品人妻丝袜| 色综合五月天| 久热9| 操逼网免费无码视频| 亚洲一区日韩精品中文字幕| 清纯唯美综合亚洲| 99热日| 国产精品丝袜久久亚洲不卡| 久久久久免费少妇| 天天干一干| 人人综合| 98久久超碰| 久久久啊啊啊| 欧美 亚洲| 欧美亚洲第1页| 欧美精品人妻视频| 少妇毛片久久| 婷婷伊人一区| 成 人 影视 一区 二区 三区 四区| 骚逼高潮久久精品| 五月丁香影院| 激情第四色| 十八禁视频网站| 偷窥自拍亚洲天堂网爆| 日韩av影片在线观看| 温婉少妇玩3p| 99无码视频| 国产精品久久久视频| 四季AV综合网址| 亚洲精品天天影视综合网 | 少妇同性| 欧美激情色婷婷花野真衣一区二区| 天天舔天天日天天射| 人妻美腿丝袜日韩| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲最大无码中文字幕网站| 在线 制服丝袜中出 人妻| 国产黄色 A 片免费看| 婷婷亚洲综合| 中文字幕乱码人妻一区二区三区,99精品 | 欧美十八禁在线看| 污污污8888| 夜夜福利| 亚洲Av诱惑| 欧美91精品国产自产| 欧成人精品一区二区三区| 国产二区三区免费视频| 人人乐大香蕉| 91欧美成人色站| 五月天AV资源| 97人人操人人摸| 欧美婷婷五月天| 日韩精品99999| 久久久精品中文字幕麻豆| 日本精品中文字幕视频| 精品无码不卡视频| 色在线69堂| 中出20p| 美女毛片999| 国产精点久久久成人| 国内毛片免费h片在线| AV天天综合| 男人天堂无码| 色五月婷婷中文字幕| 啊啊啊 在线观看| 伊人久久亚洲色欲综合网站| 日韩性爱小视频| 亚洲欧美在线观看免费| 欧美aⅴ99久久黑人专区| 9 1果冻精品视频| 久久久一区二区三区三州| 98一区二区精品| 黄页网站成人免费| 久热超碰| 91天堂丝袜美腿| 国产精品宅男免费| 黄色十八禁| 夜嗨影院| 男人天堂东京热| 7月婷婷综合| 性爱视频免费网址| 九九热精彩视频| www.av在线视频| 嗯嗯啊啊的视频| 爆乳免费黄网站| 久久啊啊| 五月综合久久| 色五天伊人| 亚洲天堂少妇| 97se综合网| 婷婷AV一区二区三区| 偷拍亚洲视频一区二区三区四区| 色婷婷综合网站| 国产 日韩,欧美 自拍| 亚洲揄拍网| 欧美操人视频| 国产嫩草精品A88AV| 亚洲另类久操网| 韩国黄色片精品久久久| 国产高清精品一区二区三区毛片 | 婷婷五月激情综合| 美女视频尤物网在线看| 九九九九久久久| 夜夜操青青草| 99热在线只有精品| 亚洲综合网91| 天天操妹子| 91色噜噜狠狠| 91新在线欧美| 精品中文一区二区| 青久久| 好舒服视频| 人人搡人人肉久久精品| 亚洲综合射| 中文字幕人乱码中文字的预防方法| 人人色人人射人人妻| 波多野42部无码喷潮在线观看 | 色蜜AV| 另类小说五月天| 激情五月综合网| 国产视频一区二区在线| 91日韩在线| 五月综合久久| 久久做97| 97综合久第一页| 欧美成人精品欧美一级乱黄一区二…| 欧美九九九九九| 国产精品直播在线观看直播| 72av视频| av在线播放国产一区| 欧美人妻精品一区二区| 人妻久久久| 男人干美女| 无码操逼天堂| 亚洲av噜噜噜噜噜噜| 人妻81p| www.婷婷六月天| 91性高| 97免费在线观看| 无码最新| 欧美97日韩| 亚洲天堂电影网99999| 欧美少妇色图| 91站街按摩店老熟女熟女| 粉嫩国产精品久久粉嫩| 国产一| 欧美一级久久久丰满| 日韩av不卡在线看| 操狠狠| 后入人妻无码| 无码高清操逼网址| 蜜臀精品1区2区| 中文字幕一区二区三区人妻不卡 | 国产女上位好爽在线| 国产青青美女玩逼视频| 午夜操一操| 久久久亚洲高清不打码| 97在线欧洲| 久久久久9999精品九九九| 欧洲无码一区二区| 欧美,日韩综合久久| 亚洲中文字幕精品一区| 爱爱啊啊啊| 狠狠色五月亚洲91| 大香蕉一级黄色片久久| 国产一区在线观看无码AV| 精品超碰国产| 91天美传媒在线观看| 天天碰久久入| 岛国免费视频在线| 手机午夜电影神马久久| 人人 操人人 操人人| 亚洲伊人a线观看视频| av天堂精品久久| 手机在线视频国内精品| 色婷婷99| 国产精品乱码久久久久久久久久久久| 都市激情人妻一区二区青青操视频| 青草影院内射高潮| 亚洲精品日韩国产欧美| 中国和日本人色哪个不下载能放| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 免费视频一二三区| 狠狠爱大香蕉| a片自拍直播视频| 久久人妻| 日韩国产成人自拍视频| 无套内射性感少妇视频| 99热在线播放| 久久久久久久久久久久久9999| 日本三级黄页| 黑丝91视频| 国产农村妇女精品| 黄总AV色图| 国产探花日韩援交| 女色综合| 日韩成人精品视频自拍| 99久久e免费热视| wwe 天天干.com| 91av一区二区在线观看| 久久成人东京热人妻| 欧美黑人猛交春色影视大全| 亚洲欧美在线综合| 国产Aα| 久久久久久九九九九-美女久久久久久久-成人AV | 夜夜高潮夜夜爽高清视频一| 麻豆成人影音在线| 久久人妻丝袜一区二区三| 91亚洲欧美综合高清在线| 男人a天堂手机在线版| 欧美激情久久久久| 99re9在线| 香一区二区三区| 在线岛国新天堂8| 日韩美脚一区二区网站| 久久专区| 91天堂色男人的天堂| 亚洲欧美变态| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 一区二区三区免费视频入口| 秋霞 色色| 午夜精品久久久久久久久久久久久| 美女爽到高潮91| 一本大道久| 国产一区二区在线看| 欧洲与亚洲欧美精品中文字幕| 五十路熟女工口| 日日夜夜噜| 国产精品久久久九九九| 欧美黑人日韩少妇色情| 欧美激情 亚洲色图| 丰满人妻-区二区三区免费看 | 日韩熟女无码| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 青春草莓视频在线观看网址| 立川理惠被中出无码| 欧美精品69性爱| 国产日韩精品人妻久久久久色欲网站| 逼逼逼逼操操操操操操操操操午夜剧场 | 日本超碰在线国产一区| 日韩99999色| 自拍二页| 成人片视频| 蜜臀网址在线| 亚洲不卡三级手机播放| 最新三级网址| 99热超碰在线| 一区二区 日韩 欧美 国产 传媒| 视频二区熟女人妻| 欧美精品庄| 国内亚洲高清无码| 日本视频在线观看污污污| 久久性爱免费送| 欧美色图天堂在线| 亚洲97p| 超碰97极品9| 天天日天天干天天操| 日韩免费在线视频观看| 超碰在线99| 国产精品 午夜福利| 9ⅰ久久久天天| 啊啊啊啊好爽好舒服一区二区易域| 97超碰人人模人人拍人人| 日本东京热加勒比久久| 国产日比| 精品国产乱码久久久兰草影视| 久久久精品网| 黄色AAAAAAAAAAA大片| 色色色热| 久久夜精品一区二区三区| 78久久| 国产精品久久久久亚洲av| www.人人cao| 国产农村妇女精品一| 夜夜国自区| 超碰美国| 国产在线视视频有精品| 91久久久视| 校园激情狠狠四射| 欧美日韩*字幕一区| 三级三久久线久久99久目本WW| 蜜桃传媒一区二区亚洲| 欧美在线亚洲| 天天日B夜夜干B时时操B| 99热精品青草在线| 97碰碰色| 无码视频黄色网战| 2026国产精品视频| 日韩簧片免费看| 九九九九久久久| 无码操逼天堂| 国产自产一区视频在线| 宗合情欲网| 一区二区视频在看| 在线a v| 亚州精品丝袜-不卡成人免费| 久久久久女教师免费一区| 国产福利电影| 嗯~啊~快点 死我视频| 伊人网在线点播| 超碰成人最新最好看| 99www.bibizy香蕉资源国产一区二区三区高清 | 操淫穴亚洲五月丁香 | 国产乱伦一二三区| 91AV天美在线视频| 精品人妻一区二区视频| 2019天天操天天爽天天拍| 亚欧无码线免费观看视频| 国产丝袜美女诱惑| 久久久久久久九九九九| 五月丁香综合激情| 欧美精品系列| 91美女丝袜诱惑视频| 91天堂丝袜美腿| 91小视频| 色 亚洲 91| www亚洲免费| AV天堂男人的天堂| 大香蕉视频一二三区| 歐美一級亂黃99在綫精品| 激情文学88| 超碰超碰欧美| 91综合色噜噜| 久久久久精| 国产区在线| 六月丁香啪啪| 97爱亚洲| 伊人久久88国产女| 超碰78| 男人下部插入女人下部 | 97久久久| 国内黄色精品| 五月婷婷六月丁香网址| 欧美香蕉视xxx| 男女猛烈无遮掩视频免费软件| 亚洲自拍欧美国产首页网曝| 亚洲爽图| 精久久久91| 中国一级操逼视频| 亚洲天堂一二| 亚洲熟女av日韩熟女| 九久久九九久视频| 麻豆久久视频在线地址| 岛国福利在线精品播放| 熟女久久| 久久久com| 91色色网站| 91爱欧美| h在线看免费版在线看| 精品免费一区| 欧美伦乱爱| 国产1769在线| 91丝袜美女视频| 75大香蕉| 中国大陆国产高清AⅤ毛片| 精品一区二区久久| 五月天婷婷色色| 神马九九| 青青草好吊| 九九成人| 久久精品久久九九精品| 91模特在线观看| 久99久视频精选| 日本一级婬片试看三分钟| 岛国不卡超碰护士AV在线播放| 无码视频黄色网战| 久久国产成人精品国产成人亚洲| 99热日| 91日本在线观看| 明星性猛交ⅹxxx乱大交| 黄色十八禁| 探花激情视频| 99re免费| 欧美A√综合网 | 国产精品欧美在线观看 | 国产精品久久久午夜夜伦鲁鲁| 亚洲综合小说另类图欧美视频激情小说色五月天 | 9九九九九视频在线观看| 操逼逼一区视频| 人妻激情视频| 欧美天堂超碰97| 五月婷婷色| 午夜视频好爽啊| www亚洲欧美| 欧美在线色| 久久久com| 欧美亚洲日本激情在线| 久久久久久国产成人| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 91麻豆天美传媒HD| 五月丁香影视| 亚洲97久久精品亚洲| 亚洲欧美小说| 色噜噜人妻av中文字幕| 成人热久久精品| 色欧美天天| 国产AV激情无码久久无码 | 人人操人人爽人人操人人| 久肏视频字幕| 97超碰资源网| 麻豆国产原创AV色哟哟| 六月丁香五月婷婷| 精品在线观看视频在线| 亚洲精品乱码线路中文字幕| 亚洲av成人精品一区| 黑丝制服中文字幕| 欧美狠狠弄| 黄页大片在线观看| a网站免费观看| 国产九九九九九九九九| 国产免费操逼| 天天色天天干天天爱| 永久电影三级在线观看| 五十路一区无码| 天天久久久久久| 九九九久久久久| 亚洲男人天堂Av| 97网色| 69久久| 97精品一区| 人澡逼| 色踪合AV| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 久久久性| 久久性爱视频免费看| 凹凸视频在线一区二区| 9久精品| 大香蕉综合网| 蜜臀久久99精品久久久久| 日韩91网站| 亚洲高清综合网| 人妻丝袜一区二区三区在线| 国产99热| 天天看天天日| 成人免费视瓶| 太久视频| 无码少妇精品一区二区60岁老人| 激情久久av一区av二区av| 中国探花熟女| www.狠狠| 老女人日韩美91| 丝袜狠狠草尤物人妻av91| 夫妻四区五区六区| 久久精9| 日本中文字幕熟妇| 久久精品综合| 欧美亚洲特P| 欧美加勒比| 精品人妻少妇| 丁香九月婷婷| 国产v片在线免费观看| 精品欧美不卡在线播放| 2019久久久久久久久福利| 国内精品久久人妻性色av| 操逼大黄片| 亚州AV无码国产精品| 狠狠色婷婷777| 日韩一级二级| 97se综合网| 亚洲欧美在线综合| 夜夜夜爽www精品视频| 精品久久久久久久| 色欲三区| 91|九色|国产熟女| 91丨国产丨白浆| 少妇三P| 亚洲久久天堂| 欧美日韩国产成人高清| 91人妻中文| 婷婷伊人| 亚洲自拍一区夜夜操| 国产成人啪一区二区| 香蕉视频精品亚洲一区二区三区在线播| 婷婷超| 日韩不卡在线一区二区| 色丁香五月婷婷| 少妇人妻精品| 在线情色电影 91大| 精品美女少妇一区二区| 亚洲春色欧美激情自拍| 性爱av网站| julia在线观看久久| 超碰久久网| 亚州综合色| 日本不卡高清视频| 天天91~综合入口| 久热大香蕉网站| 亚洲欧美不卡线| 国产51色综合久久免费| 成年男人的天堂| 亚洲欧美激情小说| 翔田千里Av在线| 亚洲午夜福利在线影院| 江都AV在线| 欧美亚洲韩国视频十五区| 涩亚洲欧洲| 久久久久久亚洲Av无码精| 日韩成人免费电影| 韩国国产欧美情侣视频在线| 精品人妻一区二区三区四区不卡在| 一级aaaaa欧美中文字幕录像片| 欧美1727免费观看视频| 久草久日| 日日插夜夜| 人妻久热在线| 中文字幕乱码在线观看| www黄片免费看com| 日日夜夜国产综合| 久久午夜色播影院免费高清| 婷婷深爱五月| 久草精品一区 | 综合大香蕉美。| 中国少妇XXXX做受| 啊啊啊好湿国产一二| 久久久女人| 欧美视频一区二区在线| 狠狠图片青青草| 亚洲无992tv| 激情五月婷| 成人情色综合网| 欧美久久伊人| 狠狠做深爱婷婷久久二区| 中文AV制服乱伦| 六九九九| 日日做夜狠狠爱欧美黑人| 色色色日本| 91亚洲不卡一区| 亚洲风情在线观看| 国产亚洲99久久精品| 亚欧美色图| 3P乱轮视频| 亚洲无限观看| 神马久久久久久伦理片| A啊啊在线观看| 校园春色综合网| 五月天大香蕉| 天天性射网| 在线观看国产黄色| 欧美激情一| 在线可观看的黄色网址| 亚洲综合 欧美| 国产熟女免费观看久久| 亚洲欧洲无码一区夜| 三级AV入口| 日韩人妻无码精品系列| 乱伦图一区| 久久久久久久久久久999| 免费自拍三级综合| 国产丰满熟夫69mpp| 97资源视频| 欧美78| 国产亚洲精品美女久久久久久2021| oumeisetupian| 午夜福利1区2区3区| 超硑97精品| 91人妻最真实刺激绿帽| 97色色国产视频| 人人操人人摸超碰| 伊人五月天青青草婷婷| 人人操人人爽人人操人人| 亚洲不卡av在线| 国产精品露脸在线观看| 欧美大片天天看| 亚洲一区二区三区AV无码| 婷婷性网| 久久综合18p| 欧美一级美片在线观看免费| 99热 按摩 日韩| 亚洲一欧洲中文字幕在线 | 天天碰久久入| 精品久久久无码| 高清有码一区二区| 欧美日动态视频| 啪啪啪东京| 韩国毛片一区二区三区| 9久久精品| 欧美激情一区| 欧美熟妇亚洲版| 久久欧美性爱视频| 东北老熟女| 国产精品对白内射| 在线v中文字幕一区二区三区| 欧美自拍网| 18精品一区| 亚洲国产奇米影视久久| 国产美女91| 亚洲熟妇丝袜在线观看| 天堂俺去俺来也www久久婷婷| 91模特在线观看| 99青草| 家庭乱伦性爱av| 天天cao在线| 亚洲视频一二区| 操美女高潮抽搐白浆| 亚洲?V高清一区二区三区尤物| 亚州久久9| 亚洲欧美日韩综合在线尤物| 天天日天天操天天射河南省| 97超碰中文字幕| 亚洲av乱伦色图网站| 老熟妇乱轮| 国产免费一区| 欧美日韩色图片| 乱欲一区二区| 国产女大学生AV| nuu12国产麻豆精品| 97se综合网| 亚洲高清在线| 91伊人久| 69天堂| 东北女人| 99视频只有精品| 国产成人无码啪| 中文字幕在线免费观看 | 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 91色综合| 亚洲好色人妻| 99热aaa| 欧美久久九九| 亚洲综合中文字幕有码| 99e久久国产精品| 综合久久2017| 日本国产二线女色| 91性高| 天天综合日韩网| 久久婷婷综合国际产色怕| 久久精品午夜国产亚洲AV无码| 欧美色97| 九九九九一级| 伊人久久久日韩一区| 伊人97超碰| 国产尤物AV尤物在线观看不卡| 囯产精品久久久久久久久久梁医生 | 黑人免费福利视频| 夜夜欧美| 人妻少妇无码| 色偷综合| 伊蕉97蜜桃97狠狠综合干| 麻豆福利视频导航| 丰满人妻一区二区三区四| 激情综合网五月婷婷| 91爆操视频| 超碰色男人操熟女| 午夜精品久久久久久久久久久久久 | 欧美色图综合| 五十路熟女,国产欧美精品区一区二区三区 | 中文字幕免费在线观看| 91国精产品| 熟女AV一区| 日本超碰97日韩精品人妻| 欧美激情视频一区二区三区不卡| 岛国黄色大片网站| 在线啊v一区| 黄色av片三级三级三级免费看| 人人操我人人干| 人妻二区| 一区二区免费电影久久| 亚洲精品久久久久毛片A片拉屎| 躁躁躁日日躁2020| 国产免费小视频| 久久久青青草| 精品人妻少妇| 少妇三p| 99热一区二区三区四区| 亚洲资源一区| 亚洲成成熟女人综合一区二区| 欧美操逼录像国产黄色国产| 色网亚洲人| 久久久九精品| 久久青娱乐| 亚洲第一页综合在线| 欧美后入式| 久偷拍欧美日韩三区| 91欧美性| 妇人噜噜| 亚洲一二三| 中亚黄色三级大片| 人乳av| 日韩99999| 97免费在线观看| 欧美激情性久久久久久| 中文字幕一区二区三区高清| 日韩欧美tv一区二区在线观看| 欧美顶级黄色大片免费| 黄片在线免费在线观看| 久热99| 乱伦熟女区| 久久精品欧美一区蜜桃| 厕所偷拍在线| 亚洲情色在线| 97操综合| 97伊人超碰| julia国产在线| 色姑娘综合网| 久久精品国产99精品亚洲蜜... | 看看小穴| 午夜福利区| 最新精品久久蜜桃 | 亚洲熟女乱熟乱熟妇综合网二区| 无码人妻精品一区二区三区九九 | 国产AV色黄看到爽| 欧美系列在线一区二区| 人妻在线视频| 懂色AV一区二区三区| 成人综合视频久久| 亚洲综合色在线| 大香蕉99999| 搞中出久久| 9l视频自拍9l九色成人| 99自拍B亚洲 | 九九成人精品| 91制服丝袜| 亚洲97成人在线观看| 黄网色一区二区三区四区精品| 色噜噜综合在线| 国厂麻豆77q4| 风韵犹存大大大大香蕉| 亚洲精品白浆高清久久久久久 | 亚洲色图欧美色18直播在线| 秋霞Av理论一级在线| 嗯嗯啊啊啊好舒服| 亚州Av天美传媒| 日韩无码精品综合久久| 免费看黄片现成| 日韩AV一起草| 天天综合亚在线| 天天α片| 在线亚洲精品久久久| 人妻少妇精品久久久久久| 日韩视频中文字幕| 国产精品久久久久中文字幕| 国产成人无码久久精品| 久久超碰亚洲人| 欧美激情片一区二区| 制服丝袜第二页| 97在线播放| 一级黄色性爱A级片| 五月婷婷六月天| 亚洲区限制级| 成人一二三区| 色色色色日本| 内射白嫩美女| 福利一级版子| av网站国产主播在线| 五月婷婷色| 亚州久久9| 亚洲a色| 深夜国产一区二区三区在线看| 一区久久久二区| 国产h小视频在线观看免费| 天天操夜夜操狠很操| 国产欧美一区二区| 男人的天堂三级| 久操网址| 粉嫩久久久久| 午夜电影在线观看无码专区| 91老熟女老女人国产老太| 欧美黄色大片在线观看| 中文字幕大片三级狠狠干| 亚洲人精品午夜不卡| 国产兽交视频在线播放| 91肏屄网| 国产毛片毛片4p懂色| 婷婷色一区| 久草新在线| 色性荡荡荡荡视频| 另类亚洲一区二区三区| 极品色社| 日本操逼视频在线| 97人人射| yiqicaoav| 校园春色 男人天堂 | 宅男午夜在线视频| 曰韩中文人妻视频| 国产怡红院| 18禁在线视频| 91模特在线观看| 五月丁香色婷婷| 男人的天堂一区| 天美麻花大全视频| 亚洲综合91| 青娱乐大香蕉| 综合久久中文字幕综合日韩精品| 日日爱99| 欧美韩国你懂得在线| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 色爱国产| 欧美色图亚洲激情| 骚货人妻偷情自拍在线视频| 黄色AV免费| 96超碰网| 激情人妻另类| 五月天综合在线| 国产在线能看的你懂的| 久九9精品| 澳门人妻久久| 日韩AV无码中文一区二区| 久夜视频| 久久久久久久久国产| 久久,精品一二三| 亚洲精品毛片在线观看| 日韩97| 欧美se综合| 97 超碰 人人做 人人爱| 强奸熟女一区二区三区 | 亚洲诱惑| 久日91在线| 亚洲色图久久精品蜜| 岛国黄| 日比av无码| 一区二区三区一亚洲中文字幕、综合区灬| 人妻天天爽夜夜爽爽| 黑人无码一区二区| 岛国视频免费在线观看| 国产又黄又粗的视频| 97av在线观看| 大香蕉日韩| 日韩少妇无码| 欧美 日韩 亚洲 春色| 精品欧美乱码久| 人妻少妇无码| 观看视频图片一区二区三区| 狠狠狠一区二区三区| 久综合网| 大屁股xxxxx| 久久久久国产一区二| 精品少妇一区二区三区在线视频| 成人乱人伦一区二区| 三级特黄60分钟播放| 国产免a费看黄片在线| 日韩精品碰碰| 精品日韩中文在线| 免费a级毛片av无码久久精品中文字幕| 天天干人人看综合| 久久中文字幕女同性恋一区| 一本大道久| 性色AV蜜色av色欲av| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 欧美五区| 丁香婷婷大香蕉| 精品亚洲国产成人AV制服丝袜 | 久插综合| 91国产美女丝袜足交精品视频| 青青草日本中文字幕| 久久一留热品黄| 舔舔啊| 国内精品嫩模A∨私拍小视频| 成人精品一区二区91毛片不卡| 强被迫伦姧在线观看无码网站| 国产成人拍国产亚洲精品| 韩国一级婬片A片无码天美| 国产区日韩区在线观看| 美女国产一区二区久久| 老女人日韩美91| 后入人妻无码| 日韩兔费看黄片| 中文一区在线视频| 中出789在线视频| 女上位精品在线| 韩国三级一线观看久| 六月婷婷综合| 婷婷五月丁香五月| 亚精品无码毛片一区二区三区| 精品福利| 欧美日韩国产高清在线一二三区 | 天无日色综合| 超碰导航97| 成人久久久| 久久综合婷婷| 国产精品伦理| 国产专区第一页| 97人肏| 成人青青草原伊人| 亚洲中文一区二区三区| 久久精品视频在线观看| 思思久热在线精品66| 伊人五月天| 96一区二区三区| 日韩精品中文字幕二区| 夜精品久无码| 91性高朝久久久久久久久| 日本天天吊| 超碰九7| 好吊色在线观看| 97精品网| 亚洲少妇色| 四虎在线视频| 爱射综合| 亚洲高清欧美总合| 蜜臀少妇一区二区| 啊啊啊啊啊啊好多水| a在线视频免费观看| 搡老熟女国产1000部| 久久激情综合| 91欧美www| 色九区| 丰满人妻一区二区三区四区| 一级啊性爱在线视频| 精品国产乱码久久久影院| h在线看免费版在线看| 神马麻豆福利院| 91九色精品熟女内射| 欧美92| 精品色色| 欧色网址| 久久偷拍人| 强奸国产精品视频| 豆1无夜无码| 少妇xx精品| 大香蕉草草| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 亚洲另类欧美精品| 好屌色综合| aⅴ日韩成人电影av在线免费看av大全| 97久久久久| 中文字幕少妇色| 淫荡熟女乱伦网| 97色欧洲| 久啪| 混色激情av| 狠狠色婷婷| 欧美日韩插逼视频| 欧美午夜熟妇黑人精品91| 欧美在线l亚洲| 十八禁啪啦拍视频无遮挡| 中文字幕天堂在线| 老熟女91视频| 精品二999| 刺激性视频黄页| 亚洲一区日韩精品| 久草精品在线| 噜噜噜亚洲精品| 六月丁丁香| 欧美在线永久天堂| 超碰97护士| 色综合1991| 国产原创自拍| 久久免费精彩视频| 久久精品国产亚洲AV高级北京| 国产精品爆乳懂色蜜乳| 大茄子熟女AV导航| 中文字幕诱惑制服人妻丝袜美丝袜美| 熟女日韩| 超硑97精品| 人人污日韩一区二区| 蜜臀人妻少妇久久在线观看| 欧美极品少妇交| 日本久久精品| 一区二区偷拍拍视频| 99re在线观看| 久久人妻视频网| 成人AV素股で擦久久| 91 刺激在线| 青草视频在线看看看看看看看看看| 中国AAAAAA黄色片| 岛国激情视频在线观看| 激情无码日韩| 无码在线亚洲| 人妻天天夜夜爽一区二区| 亚洲天堂综合AV| 日本熟妇一区二区三区| 夜夜嗨AV蜜臀av| 日韩欧美偷拍美女视频| 日本不卡免费二区| 亚洲国产97在线精品一区| 天天干天天中出av| 国产女人9999| 久久精品成人| 九九热国产| 国产综合在线视频网站| 国产剧情AV不卡在线观看| 欧美性爱精品一区二区| 天天干天天操天天拍| 亚射在线| 蜜桃精品视频一区二区三区| 国产精品成人午夜福利| 91性片| 久久久久亚洲av综合波多野制衣| 岛国激情视频软件| 无码在线亚洲| 中文高清一区二区的| 精品久久在线区一区| 狠综合网| 亚洲性爱成人| 日韩精品99999| 女同在线视频一区| 99精品网站| 亚洲另类色综合网站| 人人操,人人液| 色综合色欲色综合色综合色综合| 观看免费区二区三区二| 97射欧美| 天堂а√在线最新版在线 | 黄色视频特级毛片| 国产精品经典一卡久久久| 超碰人人干天天射| 日韩无码黄色片| 国产精品久久久视频| 国产视频第二页| 激情综合网五月婷婷五月天| 99青草| 夫妻天天操岛国视频| 亚洲丁香花色| 亚洲综合影视| 国语对白露脸XXXXXX| 九九热精品免费视频| 激情欧美97| 大奶啊啊好爽| 欧美图片色五月天| 五月婷婷爱六月丁香色| 日韩丝袜高跟制服在线观看| 久久 精品| 思思99热| 大香蕉视频啪啪啪啪| 亚洲18禁|