日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
自拍六区| 久久九九综合| 日韩电影天堂视频二区三区| 亚洲一曲日韩精品| 99久久综合| 91亚洲欧洲| 婷婷色播婷婷| 骚女天天综合网| 国内自拍 日韩激情 99| 亚洲麻豆18发?| 日韩偷拍一区二区三区| 91 亚洲 欧洲| 日本一二区不卡| 99视频内射三四| 久久久精品网| 又大又白奶子| 国产在线观看一区二区三区| 久久久久久性爱视频| 啊啊啊网站| 麻豆久久久久久久久丝袜 | 亚洲 日韩 欧美 国产综合体| 九七超碰| 夜夜夜爽www精品视频| 超清福利精品视频在线| 91视频观看网站| 国产精品久久| 色哟哟av网址| 亚洲午夜AV| 就去色综合| 乱色视频中文字幕| 久久亚洲AV无码白度| 嗯嗯嗯,草死我| 日韩中文字幕人妻视频| 91路www| 日韩人妻 中文字幕| 日韩电影免费网站麻豆视频| 青青草视频这里只有精品| 亚洲熟女人妻中文字幕一区二区| 99综合| 日韩熟女操逼| 少妇久久久免费| 97摸视频| 国产老女人久久毛| 久草电影网| 91在线美女| 午夜一级免费毛片| 97中文字幕一区| 婷婷五月天色| 强奸国产在线| 亚洲欧美97| 青青草吊丝| 少妇xx精品| 亚洲男人的天堂va亚洲男人社| 超碰国产情侣自拍网| 三级AV入口| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 美女网站黄页| 九九毛片这里只有精品| 精品欧美А∨无码黑人大荫蒂 | 美女刺激久久国产欧美| 免费一级性爱久久| 欧美性性性| 天天热精品| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 精品人妻一区二区三区-国产| 成 人 A V免费视频在线观看| 白丝少妇一区二区| 天天欧美欧美亚洲网| 超碰在线欧美性爱激情| 熟女高潮精品一区二区| 后入人妻一区| 久久免费精彩视频| 秋霞蝌科网日本一区| 加勒比海色香蕉婷婷| 久久美国毛片| 欧美情色男人的天堂| 婷婷九月| 夜嗨影院| 岛国片国产成人亚洲播放| 亲子敌伦对白在线播放| 国产91影院| 97se亚洲| 久久久三区二区一区| 97色色色综合网站| 欧美久久九九| 精品一区二区三区蜜桃臀赵总| 国产日韩欧美操逼视频| 亚洲美女av无码| 亚洲男人天堂视频| 日韩欧美~中文字| 日韩二三区| 91人妻丝袜无码| 亚洲欧美经典一区二区| 成人aⅴ一区二区三区| 东京热一区二区中文字幕| 精品一区二区2| 色www精品视频在线观看| 亚洲婷婷五月天| 亚洲国产精品成人无码久久久| 岛国片在线视频网站| 亚洲性天堂| 97国产|免费| 四虎影视国产精品| 91免费看中出视频| 男人的天堂Va| 91久| 97色在线视频| 天天躁日日躁AAAAXXXX国产 | 黑人性暴力毛片| 久久大香蕉97| 久久国产精品m码| 日逼97| 亚洲天在线| 中文字幕丝袜| 国语对白露脸XXXXXX | 亚洲综合贴图91| 综合视频91| 久久久久9999妇女| 嗯嗯啊啊啊啊轻点视频| 蜜桃狠狠色伊人亚洲综合 | 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 久久99深爱久久99精品| 97网站在线观看| 欧美视频一区二区三区| 亚洲av青草久久一区二区| 在线视频97| 欧美黄色手机在线观看| 不卡av在线中文字幕| 久久久久久久亚洲Av无码| 夜夜影视四色| 国产怡红院| 亚洲精品1区| 黄色片G G G| 黑人粗大V S日韩女优视频| 精品9999| 黄片qw| 色久桃花影院在线观看| 亚州操逼网| 五月天成人综合| 国语人妻精彩刺激| 国产视频大全| 97视频网站| 日韩中文字幕精品一区在线| 美女被艹尤物视频| 亚洲日本韩国极品一区二区| 亚洲欧美日产国产91毛片| 91高潮喷水美女| 大香交| 欧美色图电影| 影音先锋日本一区二区| 成人片在线播放| 91超碰人人| 亚洲成人精品久久久| 中文字幕伊人| 成年无码动漫av片无尽在线| 久久精视频美日韩在线视频| http://qxhbdz.com| 九九热超碰97亚洲最新香蕉| 97在线日韩中文字幕| 超碰97人妻| 人人看欧美性爱| 99久热| 欧美日动态视频| 97干在线| 91爱欧美| 精品一二三区久久AAA片| 大香蕉草草| 亚洲 图片 欧美 色图| 手机在线中文字幕国产| a片在线播放| 任你干在线视频| 五月黑AⅤ| 人妻 丝袜美腿 中文字幕| 91热热色| 欧美少妇色综合| 97人人射| 91GD.COM| 青草青草久热| 中文字幕精品免费一区二区| 超碰在线91| 国产成人主播| 日本色婷婷| 91色图片| 中文字幕AV乱伦| 伊人影院中文字幕| 色香欲综合| 色色色色电影网| 综合91网| 国色天香av| ji熟女.com| 超碰色综合| 91精品国| 91日日夜夜| 日韩国产十八禁| 老女人爆菊| 色情成人五月天| 天天干夜夜操网| 男人女人18禁片免费看网站| 91久久青青草原精品| 亚洲图片小说欧洲| 大香蕉淫人| 玖玖97综合 | 亚洲97P| yw尤物av无码点击进入麻豆| 日本不卡高清免v欧美日韩在线观看| 亚洲干B| 99热9| 一区二区激情国产熟女 | 亚洲码和欧洲精品激情系列| 精品少妇一区二区三区免费观看| 人妻AV在线| 人人扣人人操| 性色avv| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 日韩 欧美 校园一区| 欧美精品人妻视频| 日本人妻一区二区| 91狠狠色丁香婷婷综合久久精品| 国产精品伦理| 99国产精品人妻人伦| 日韩一级二级三级免费看完整版| 91色爽欧美| 中文人妻av高清一区| 97热视频在线观看| AND人妻系列| 久久五月视频| 激情图片亚洲色图| 欧美大片天天看| 色香综合天天影视综合| 一区二区三区一亚洲中文字幕、综合区灬 | 极品久久久久久久久久久久久久| 91久久久久久久| 懂色av中文字幕| 亚洲熟女精品| 人、人、摸,人、人、草| 爱我干综合| 欧美爆操91| 久久久久久久久久久久久久久久9| 久久人爽| 我想要 啊 啊 啊| 国产成人无码a| 可以在线观看AV的网站| 亚洲少妇色| 99青青草国产视频| 91美女精品| 亚洲一区二区在线观看91| 国产精品人妻免费精品| 久久毛卡| 欧美熟妇视频| 麻豆一区二区AV天美| 久久午夜色播影院免费高清| 综合操逼| 欧美色图私拍91| 超碰久在线天天做| 日韩三级伊人| 亚洲天堂无码| 黄日韩| 欧美久久九九| 欧美色图亚洲色,麻豆| 亚洲资源站| 99热99在线播放激情| 欧美一区91大爱| 欧美综合网1| 国产内射爽爽大片| AV九九| 97精品国产精品免费观看| 一二三区精品视频| 国产亚洲精品农村妇女| 夜夜操夜夜爽夜夜高潮| 91日韩国产欧美亚洲另类精盘州至城都| 色婷婷六月丁香七月婷婷| 99热这里是精品| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 熟女少妇视频| 97任你吞精| 又黄又粗又硬又长又大| a亚洲欧美色欲| 日本久久精品| 91 亚欧| 综合操逼| 999熟女精品| 国产欧美日韩一区二区三区| 色婷婷在线视频精品导航| 亚洲高清欧美总合| 操人妻少妇中文 | 国产欧美岛国精品一区| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲久久久久| 91九九九馒头| av无线看| daxiangjiao你懂的| 天堂69亚洲精品中文字| 江都AV在线| 九九九色| 日日日啊啊啊| 伊人一区二区在线播放| 天天舔九色婷婷| 伊人热综合| 禁十八久久| 91被操| 99热精品青草在线| 国产精品久久久久久久久久梁医生| 日本特黄f c2| 久久久96| 物尤视频一区二区| 精品一区二区综合熟妇| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 乱伦a片视频| 欧美少妇色综合| 一本久道在线综合视频| 亚洲AV不卡在线观看| 一区在线观看中文字幕| 亚洲综合色图欧美| 91 手机在线播放 绯色| 探花视频免费观看国产专区| 69精品人人人人| 欧美黄色大片在线观看| 亚洲精品黑丝| 人妻碰碰碰碰碰碰| 日韩人妻 中文字幕| 精品一区二区三区蜜桃臀www| 丁香五月天激情网站| 疯操AV| 大香蕉宗合网在线| 一级久久久久久久久久久| 91精品少妇搡搡搡| 台湾佬激情综合| a片偷拍视频| 日本一久是| 看一级黄色视频| 久久久96| 色一区二区三区综合| 99精品久久| 操b在线观看| 中出在线视频| 青青草五月天| 色婷网| 日韩操逼性鲍| 午夜啊啊| 午夜毛片高清免费不卡| 伊人成人中文字幕久久网| 午夜男女爽爽爽影院视频| 97超碰中文| 国产高清1234区| 国人欧美精品一区二区| 婷婷超| 9九九国产| 91亚州日韩高清| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 色99在线| 在线观看中文av字幕| 91精片| 9997se| 亚洲97P| 国产欧美成人第一页在线观看| 日韩成人精品| 日韩AV片| 精品人妻久久久久一区二区三区| 密乳AV免费观看| 老女人爆菊| 久久久天美| 久久久久久久久久久久久久久性生活视频| 飘花国产午夜精品不卡| 日本操逼视频免费| 人妻丝袜一区二区三区在线| 97在线观看视频| 久久久111| 色哟哟-国产专区| 精品人妻伦一二三区久久| 亚洲成人美女无吗| 亚洲,日韩,欧美,成人播放| 97精品视频| 91亚洲黄色网| 亚欧美综合网| 91久久青青草原精品| 欧美日韩人妻精品一区二区三区| 人妻天天爽夜夜爽2| 啊啊啊啊啊啊好湿好爽视频| 蜜臀在线免费观看在线免费观看| 麻豆亚洲Av成人无码一区精品| 99色色网| avav青青草久久夜| 久久久久久免费电影| 家庭乱伦网站国产| 男人 天堂 日 亚洲| 亚洲国产综合久久天堂| 中文字幕jul-617人妻熟女| 天天干夜夜操一区二区| 桑老女人九区| 天天狠操| 大香蕉黄色一级片免费看| 日欧操屄视频| 免费一级毛片在线视频观看| 日本一区二区成人在线| 国产精品99999| 任你干在线视频| 美女AV一区二区| 欧美日日操| 亚洲中文sv| 亚洲大色堂| 五月天婷婷欧美三区| 色欲无码人妻日韩欧美精品| 亚洲国产综合图区中文字幕 | 亚州综合| 91精品在线播放| 久久97资源 网| 五月激情综合网| 日本一区二区三区免费观看| 亚洲A色| 91精品啪在线观看国产城中村| 亚洲se电影| 五十路三区在线| 青青草好吊色| 亚洲男人天堂网站| 国色综合天| 狠狠爱夜夜| 97人人色| 中文字幕激情小说| 日本精品加勒比海一区| 热热色AV| 淫淫综合网| 欧美天堂在线| 久久人妻一区二区三区高清| 日韩激情毛片一级久久久| 欧美最婬乱婬爆婬性视频| 久久久久深夜无码| 色综合一区二区三区| 99热精品在线观看| 一起草日韩| 激情av| 操人妻视频| 超碰天天操你比| 六月丁丁香| 插穴性爱视频在线观看| 97超碰色色| 蜜桃臀一区二区三区久久| 殴美性色a级欧美| 在线有码中文字幕| 偷拍精品一区二区三区| 超碰久久草| julia在线观看久久| 三级激情网站| 影视综合无码少妇| 欧美午夜视频免费观看| 美女操逼A A| 中国人高清www色视频免费| 99热国产精品| 欧美大片一区二区三区 | 日韩在线观看AV| 51一区二区三区| 东京热,男人的天堂| 综合色欧美| 后入人妻无码| 少妇天堂| 超碰97中文| 91春色| 91综合熟女| 日韩精品字幕| 先锋色眉乱伦资源| 亚洲国产成人7777| 亚洲精品aa久久伊人| 啊视频在线| renqi久久久久久久久久久久| 久久理论字幕视频| 少妇久久久免费| 亚洲婷婷丁香在线| 色黄色美女大长腿午夜视频| 十八禁啪啦拍视频无遮挡| 无遮挡h肉动漫在线观看| 熟女人妇一区二区三区| 大香网伊人久久综合| 天天色播| 亚州中文字幕超碰97| 强奸熟女一区二区三区| 操熟女91| 日韩不卡在线一区二区| 国产小视频91| 久久久久久久久久久久久久久久9| 精品999一区二区| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 蜜臀AV成人精品蜜臀AV久久| 啪啪视频mP4| 亚洲不雅视频1区二区| 一区二区三区免费视频入口 | 欧美大波激情xxxx| 91欧美高清| 三级色影综合网| 立川理惠无码一区二区| 欧美男人亚洲天堂| 日韩激情毛片一级久久久| AV 少妇 人妻 偷拍| 大学生美女口爆| 操逼1区| 成人AV在线网站| 久99视频| 亚洲97在线观看| 久久9 9 9精品| 2017大香蕉| 精品人妻一区二区免费蜜桃| 2025年A片视频精品| 青青草日本中文字幕| 欧美一级久久久久久久大片动画| 欧美色图私拍91| 欧美 亚洲| 欧美日韩222| 成人国产精品三级A片| 东京热一区二区中文字幕| 国产美女口爆吞精| 亚洲中文制服诱惑| 国产精品久久久鸭无码的功能| 思思热在线视频在线| 夜夜做夜夜爽精品视频| 青青操在线亚洲视频观看欧美在线| 亚洲激情在线| 国产精品自在线发布| AA级电影三区| 亚洲男人久久综合天堂| 亚洲97| 亚洲成a人v欧美综合天堂下载| 亚洲国产蜜臀系列在线观看| 裸体1区| 日日黄色三级网站| 91高跟美女在线播放| 色狠狠综合噜一二三区| 亚洲欧美九九| 色一射色一射| 欧美熟妇精品黑人巨大一二三区| 99亚洲天堂| 亚洲一区深夜| 91亚洲青青草原精品1区| 亚洲美女精品| 青青草大香蕉在线视频| 欧美综合 站| 国产精品69人妻无码久久久| 少妇一区二区三区高速| 亚洲黄色a级片| 久日91在线| 视频不卡中文字幕| 中文字幕一区av| 婷婷六月色| 99久久久无码| 中文字幕视频免费| 国产丁香精品露脸视频| 蜜桃午夜视频一区二区| 久久国产精品m码| 色欲三区| 乱色视频中文字幕| 欧洲乱码一区二区| 9997se| 青青草国产欧美非洲黑人| 香港澳门日本三级网站| 青娱乐国产盛宴视频| 呻吟 欧美 日本 中出| 超碰97人妻在线| av无码精品久久久久| 亚洲无套久久嗯嗯| 夜色97| 日韩性爱一级片| 黄色毛片A片| 加勒比日本在线| 91欧美经典| AV综合中文字幕干| 欧美日韩亚洲电影| 久久av无码| 97日本超碰综合| 国产视频97| 久久‘黄片视频| 偷拍综合亚洲| 免费作爱一级视频| 久久成人午夜精品影院| 新91视频.cmp| 99精品国产户外露出| 国产视频大全| 婷婷五月天av| 亚洲欧洲av影音| 亚洲免费在线探花| 人妻中文字幕日韩电影| 国内一级精品| 岛国在线国产| 野狼激情网| 国产精品久久久久久久久久久久久久| 淫荡熟女乱伦网| 欧美青青视频| 中文字幕奈奈美被公侵犯| 校园春色之综合网| AV中亚| 亚洲欧洲偷拍一区| 天天干人人乐| 91久久久久久久久久久| 久久久久99999| 啊啊啊 在线观看| 国产福利合集| 欧美激情片一区二区| www.色吧5.com| 国产乱弄免费在线视频。| 亚洲综合欧美| 午夜福利在线视频1000| 少妇人妻好深太紧了vr91| 欧美亚州色的图| 色伊人91| 欧美人妻少妇| 成人日本精品九区| 亚洲色系另类精品国产| 超碰97首页| 国产伦精品一区二区三区在线观| 啊啊啊好大好深| 狠狠综合网| 95自拍视频在线观看| 激情文学小说一区二区| 中文字幕三四五区| 中文字幕丰满人妻日本| 国产精品香蕉热久久新品| 国产又色又爽又舒服的三级视频| 欧美日韩日产免费网站看| 黑人粗大V S日韩女优视频| 性爱视频啪啪啪啪| 精品久久久中文字幕不| 2024人人操人人摸| 9999亚洲精品| 五月丁香久久| 91高清无码下载| 精品一区二区三区丰满熟女-亚洲欧美一区| 中文字幕啊啊啊在线观看视频| 岛国1区2区3区在线观看| 97视频新免费| 久久精品72| av九九| 日本视频在线观看污污污| 人人操人人色网| 久久免费9| 变态另类专区| 欧美桃色网| 乱码人妻一区二区三区| 草久久久| 日韩超碰精品综合| 亚洲精品色| 欧色综合| 中文字幕亚洲欧美在线不卡| 玖玖人人爱| 婷婷五月影院| 天天插天天插| 天天日夜夜爽| 日韩pv中文| 偷拍欧美激情| 伊人97色天使| 九九夜精品九九在线| 男人天堂站| 99精品网站| 天天日美女的B| 后入式视频国产自| 一本大道久| 久久久久9999妇女| 夜夜性| 天天操天天射青青草| 国产成人五月天丁香花| 大香蕉乱级| 乱操乱伦AV| 日韩激情无码影院| 国产精品毛片?v一区二区三区| 97大色网| 大鸡巴久久| 中文字幕黄片在线| 91爽啪| 欧美不卡二区| 玖玖久久久| 国产原创自拍| 狠狠躁天天躁日日躁| 无码聚合| 91精品操美女| 97精品在线| 青青草日本中文字幕| 蜜奶av| 欧美成人综合| 伊人午夜福利视频| 日夜精品| 久久久久久电影| 精品一区二区成人| 午夜精品久久久久久久99蜜桃一| 97国产高清视频在线观看| 欧美视频一区二区在线| 入口操逼网站| 欧美亚洲玖玖玖| 国产精品亚洲四五区在线观看| 美女的肌被草喷水视频| 蜜乳av一区二区三区四区不卡| 99re综合伊人| 国产在线播放成人免费| 国产精品久久久久亚洲av| 999久久久精品国产| 中文字幕丝袜美腿| 日韩97超碰| 欧美不卡五十路| 久久一区二区三区入口| 9超碰免费| AV中亚| 97在线精品| 大香蕉久久| 99精品无码| 欧美91久久久久| 大香蕉青青9| 久久久111| 欧美aⅴ99久久黑人专区| 欧美亚洲系列| AV免费在线播放一区| 久草综合京东| 男人的天堂 在线一区| 日韩av在线播放不卡| 一区二区三区成人| 欧美真人抽搐一进一出gif| 亚洲成人网站在线观看| 久久九九一区二区三区成人| 亚洲国产综合久久久性感熟妇| 国内毛片免费h片在线| 久久肏大逼| 亚洲黄色a级片| 一线黄色免费性爱片| 黑人无码一区二区| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 密乳无码| 校园春色综合色| 日韩欧无码一区二区三区免费不卡| 亚洲国产无码精品首页久久久| 东方亚洲在线操逼天堂| 日本在线不卡一二区| 欧美激情黑人| 中文字幕高清20页视频| 国产精品第一页国产大屁股视频免费区 | 色综合加勒比| 天堂av2019| 极品销魂美女一区二区 | 久久久精品,3| 日欧美色| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 熟女精品va中文字幕| 亚州精品人妻一二三区| 亚洲nv男人的天堂网| 伊人五月天婷婷| 99在线精品观看视频中文| 国产成人亚洲精品自产在线| www.99中文字幕| 97超碰欧美中文字幕| 日韩伦理久 久久 清纯| 久久久亚洲欧美综合| 久操网视频| a片 xxxx受爽视频| 亚洲国产综合图区中文字幕| 欧美,日韩,中文,另类| 久久草草欧美精品| 精品久久久av无码免费| 日韩电影免费网站麻豆视频| 91free福利| 两女互慰AV高潮喷水在线观看| 人人妻人人澡人人爽久久av| 久久青娱乐| 亚洲男人天堂2013| 成人老鸭窝人人在线视频| 人夜夜精品网站香蕉嫩草| 国产成人无码久久精品| 欧美少妇性爱网站| 国产网站在线播放| 福利视频一区二区微拍| 激情视屏国产乱伦强奸| 亚洲AV无码AV吞精久久久久| 熟妇xxxxx性春色| 亚洲国产美女久久久久| 91精品人| 国产亚洲福利第一页丝袜| 国产三级中文字幕粉嫩| 久操| 久久青青草在线视频| 日本在线999| JuliaAnn丝袜熟女系列| 高清孕妇孕交 交| 日韩大香蕉AV影片| 男人综合网| 东北少妇高潮zzzz| 无遮挡一级毛片视频免费的| 国产不卡免费在线视频| 乱伦3P视频| 99国产精品在线观看| 久久大线蕉一区| 久久禁| 夜草网站| 欧美性爱www免费版| 综合欧美激情网| 丁香六月婷婷| 美日韩一二三区| 91丨人妻丨国产丨丝袜| 国产日本一区二区三区蜜臀在线观看| 99re这里| 国产后入清纯| 亚洲综合嫩| 另类图片欧美激情综合| 日本三级一区二区 在线| 婷婷色综合| 综合久欧洲| 国内一级精品| 鸡巴插逼视频| 熟妇一区二区三区| 97爱综合| 日本高清电影欧美色图| 一区二区三区麻豆| 国产乱色国产精品免费视| 欧洲一级性爱视频在线观看| 加勒比av中文| www被窝色com| 日韩av不卡在线看| 色女综合| 日韩精品一区二区日韩 | 26UUU欧美激情一区二区| 久久香蕉影院| 99在线精品观看视频中文 | 91美女视频| 91欧美高清| 亚洲素人综合| 日本熟女中文| 人人操人人操人妻人| 久久草大香蕉| 久九9精品| 亚洲天堂电影精品一区| 欧美激情高清性猛交| 综合色久| 午夜福利国产欧美日韩夜夜| AV丝袜少妇| 波多野42部无码喷潮在线观看| 91强在线播放| 中文字幕人妻资源在线| 97人妻碰碰中文无码久热丝袜| 欧美精品,四区。五区| 婷婷久久大香蕉| 中文久久久| 欧美性爱一内片一区二区三区| 亚洲欧美国产中文视频| 都市激情人妻一区二区青青操视频| 强奸乱伦免费网站| 99精品无码| 香蕉99秘 精品一区丁香| 丰满岳乱妇一区二区三区| 美女上床网站| 国产有码一区| www99热| 久久一区二区蜜桃| 视频二区熟女人妻| 91精品电影18| 国产亚洲综合欧美一区| 玖玖爱影院| 成人一级二级| 夜夜高潮夜夜爽| 91干熟女| 国产日韩在线播放av| 风间由美日韩欧美久久| 热久日综合| 久久天天性久久伊人| 欧美黑人精品一区二区| 日韩 国产 欧美自拍| 在线观看午夜婷婷久久久久清性观看| 欧州色图区| 久久九九99| 97精品熟女少妇一区| 欧美日韩不卡a片| 中文字幕精品一区欧美| 一个国产在线综合网站| 天天日天天干少妇日| 久久精品电影在线| 91少妇高潮| 国产免费小视频| 99久草| 试看60秒 爽| 无码外流操逼视频| 国内毛片婷婷六月色| 一线黄色免费性爱片| 久久夜夜夜夜| 综合色拍| 天天综合,91入口| 欧美97超碰| 亚洲一区中文精品| 97在线观看播放视频| 四虎影视永久在线免费| 国产一区二区三区精品观看啪| 人妻人人操| 97色在线观看| 91精品免费| 香蕉综合网| 18禁中文字幕| 婷婷五月天社区| 精品一久久久| 五月天伊人网| 91av一区二区在线观看| 最新国产精品久久精品| 欧美美女啪啪视频| 99热这里只有是精品10| 欧美大的香蕉有线电视视频| 精品78| 久久精品区| 91色人妻| 99热免费| 夜夜操夜夜高潮夜夜爽国产精品区| 伊人久久大香蕉线AV五月天| 操久久久久| 7777奇米影视久久| 婷婷月色| 色九九九九九九| 欧美性生活免费网| 91男女啊啊啊| 日本媚薬中文字幕在线| 日本理论在线| 中文乱码99| 天天澡天天爽日日AV| 中文字幕91页| 夜夜操一区二区| 久久综合资源一区二区| 国产噜噜噜噜噜久久久久久久久| 囯产精品久久久久久久久久梁医生| 97色干| 人人妻人人澡人人爽久久av| 99精品在线观看| 91精品老女人| 老熟女区| 久久东京伊人一本到鬼色| 亚洲少妇在线影音| 93人人操人人| 国产丝袜高跟美女av免费观看| 综合激情二| 欧亚日韩综合精品国产| 中文字幕一区二区日韩网| 国产吹潮女在线观看| 五月婷婷久久综合| 日韩欧美大片免费高清啪啪| 另类 综合 日韩 欧美 亚洲| 精品三级在线专区| 天天综合网AV91| 五月丁香激情啪啪| 少妇厨房愉情理伦片bd在线观看| 久久人妻一区二区三区高清| 色激情五月天| 噜噜噜在线视频| 97视频在线看| 久久九操在线观看| 9/A片 | 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 色在线视频导航| 色婷婷淫色网| 亚州色交| 日本日逼视频网| 国产最火爆久久国产网站网站| 女人香蕉久久毛毛片精品| 九九热免费国产视频婷婷伊人五月 | 成年人三级黄色片视频| 欧美色五月| 熟妇人妻一二三区免费| 色妹子A V| 操久久久久久| 日韩AC| 96久久精品一二三区色欲| 欧美特大AA级黄片| 狠狠91| 东北女人无套内谢视频| 久夜操| 少妇无码999| 2017天天插| 伊人操| 青娱乐休闲视频在线观看| 欧亚日韩中文在线| 超碰色综合| 91肉片| 韩国一级AAA| 日本在线播放不卡一区| 日韩不卡在线一区二区| 国产欧美一区激情交| 五月丁香综合| 欧美性色综合网| 东京热不卡视频| 干美女人妻| 偷拍 亚洲 欧美| se01国产在线视频| 久久男女激情视频网站| 激情婷婷五月天| 香港日本韩国人妇99www.wccm20| 99精品伊人| 三及片网站| 超碰国产精品无码| 五月天婷婷基地| 白丝jkav| 88在线一区二区三区| 超碰社区97| 国产精品麻豆成人av| 中文字幕av乱伦| 九九国产热| 欧美一级在线观看成人| 秋霞蝌科网日本一区| 夜夜爽妓女| 国产精品午夜成人福利| 亚洲自拍青操视频| 天天草天天日| 免费看一级a性色生活片久久无| 色噜噜人妻av 中文字幕| 青青在线视频免费| 国产精品免费视频人成| 亚洲超碰在线| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 一区二区三区色综合| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | se01国产在线视频| 亚洲无码超碰免费| 玖玖综合网| 首页中文字幕中文字幕免费| 99中出在线| 情色五月天网| 亚洲色图超碰在线| 亚洲成人一二三区| 999综合网| 国产家庭乱伦性爱视频| 伊人网综合在线视频| 欧美熟妇成人一区二区| 色色色天美视频| 97超碰无码网| 久久久555| 成人日韩欧美| 精品二区久久| 啊啊啊啊好疼| 亚洲国产亚洲天堂| 伊人激情| 亚洲黄色a级片| 欧美色宗合| 青青爽| 91人妻做a观看视频| 夜夜精品视频一区二区| 欧美天天射| 操碰97| 欧美亚洲手机在线| 91精品久久久| 亚洲成人美女无吗| 色男人色天堂东京热| а√天堂资源官网在线资源| 五月天综合网| 天天欧美97| 精品国产乱码久久久久久影片| 欧美精品另类人妖xxxx| 亚洲四虎熟女精品| 乱伦av国产| 日本成a人v网站在线观看| 欧美色色人| 欧美猛交黑寡妇中文字幕| 思思热在线| 91精品久久久久久77777| 久久久久国产精品久久久| 九久9热| 国产精品 久久久精品一牛| 91在线美女| 美国aaaaa一级黄片| 家庭乱伦国产| 18禁在线视频| 日本韩高清无砖码22o| 东北熟女91| 久久久久久97| 2024黄色视频| 色噜噜精品一区二区三| 久久五月视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | WWW操逼| 亚洲欧美国产va在线播放频| 2025年A片视频精品| 国产精品视频91久久| 久久亚洲AV成人精品无码| 99久久99久久综合| 自拍盗摄一区| www.97在线| 亚洲成人AB| 人人操人人插 - 百度 - 百度| 911av网站免费观看| 一本一道人妻久久一区二区三区 | 白丝jkav| 久久精品国产亚洲5555| 超碰成人免费| 97色涩| 1人人看人人摸人人操| 欧美激情综合| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 久久riav中文精品| 色墦五月丁香| 国产性爱欧美性爱在线| 国产精品人妻无码久久久老鸭窝| 日韩精品中文字幕二区| 韩国国产欧美情侣视频在线| 久久男人天堂| 婷婷久久网| 啊啊啊好大好深| 激情四射五月天| 国产视频小说| 亚洲成人福利电影免费| 人妻少妇色综合| 秋霞一集毛片观看| 英伦大奶子熟妇吊带| 激情黄色片在线观看| 久热久一区二区三区| 亚洲av国产av综合av卡| 天美传媒av在线| 18禁美女裸体无遮挡啪啪| 色欲人妻一区二区在线| 18禁免费视频| 人妻美腿丝袜日韩| 在线无码操| 二对二中文字幕。| 天天做日日爱夜夜爽| 欧美淫乱视频| 另类图片五月| 亚洲AV无码AV吞精久久久久| 日韩精品国模| 亚洲 国产 精品一区| av橘色网站| 熟女丰满人妻一区| 国产无码精品高清| 欧美女同在线| 91色黑人少妇| 国产又操| 黄色AAAAA欧美| 天天欲望网| 老熟妇一区二区三区啪啪| 国产在线精品偷| 色波多| 狠狠入| 久湿久久| 超碰97爽| 久久综合国产精品国产| 青青草国产盗摄一二三区| 黄色一级视| 国产熟女精品一区二区| 亚洲夜色在线| 色小视频蜜乳| 脫衣舞一区二区三区| 国产无码精品成人| 亚洲青青草| 最新日韩黄片| 美国aaaaa一级黄片| 日韩免费高清大片在线| 亚洲自拍小说| 国产日韩中文字幕欧美| 青女在线| 精品91摸| 欧美日韩国第一区| 99久热| 精品四五区| 亚洲欧美精品91| 午夜男女爽爽爽在线视频 | 777AV电影| 囯戸精品高潮呻吟旡码| 国产丝袜美女在线一区| 澳门黄片一香蕉视频| 思思视频免费看网站| 午夜亚洲国产理论秋霞| 国产亚洲精品美女久久久久久2021| 日本影视久久免费| 久久受www免费人成| av网页一区二区三区| 国产一区二区二区按摩精品啪视频| 婷婷丁香人妻 | 四虎免费视频| 凌辱美少妇久久aV| 欧美夜夜草视频| 自拍偷拍 日韩欧美|