久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|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
返回資訊列表
超碰在线人妻不卡| 亚洲AV无码AV吞精久久久久| 亚洲高潮少妇| 欧美亚洲尤物久久| 欧美福利视频啊啊啊啊| 婷婷九月丁香| 九色在线熟女国产黑人| 97亚洲欧美| 狠色婷婷久久一区二区三区_| 大色综合网| 2018天天日天天日| 猛猛干| 三级网站超变态精品| 大香蕉宗合网在线| 色综合色欲色综合色综合色综合| 亚洲av影音先锋| 日本不卡五区| 热热色青青草| 欧美另类天堂| 国产精品在线一区二区| 五月天色电影| 日韩精品操少妇| 美女尤物福利视频| 久久98| 国产男女无套视频免费观看| 一二三四视频中文字幕在线看| 精品78| 丝袜美腿操av| 欧美性五月| 人妻久热在线| 欧美激情视频一区二区三区不卡| 99久久久er直播网址| 天天色黄色影院天天操| 日本日逼高清| 少妇厨房愉情理伦片bd在线观看| 乱伦色图网址是多少| aⅴ日韩成人电影av在线免费看av大全| www欧美91| 夜夜骑夜夜操| 中文字幕亚洲热播人妻| 色5月婷婷| 亚洲91在线播放影院| 中文乱码字字幕在线第5页| 天久久久噜噜噜久久国产精品爽爽| 2020天天色综合| 情色五月天就去干| 东北女人高潮视频| 欧美日韩免费性爱| 玖玖爱免费观看视频| 超碰人人操97碰| 成人无码电影在线观看网| 在线播放一级无码视频| 91欧洲国产成人久久精品网站| 99久久99九九99九九九| 久久伊人五月天| 色五月激情综合网| 精品久久久久久亚洲| 亚洲一卡2卡3卡4卡乱码网站| 思思热国产在线视频| 福利伊人玖玖国产| 婷婷五月天福利| 天天做天天爱| 久久视网78| 亚洲欧洲久久天堂| 91福利网在线观看| 艹比视频国产精品| 欧美成人免费在线观看| 无码 黑人一区二区三区| 欧美大香蕉同搞| 亚洲黄色网址视频| 99性视频| 青青国产在线拍揄自揄拍| 激情四射熟女丝袜| 96精品久久| 国产无吗在线播放| 欧亚乱色熟女一区二区| 色色99| 久久久久七视频| 天天热精品| 成人九九| 日韩一区二区高清在线观看的| 99在线观看| 欧美综合在线91| 色欧美在线| 岛国黄片网站| 少妇天堂网络| 成人青青草原伊人| 思思热er精品视频| 国产精品久久久视频| 一区二区视频你懂的| 校园春色美腿丝袜 | 中文字幕人妻色偷偷久久皮| 亚洲色图A| 内射老妇BBWX0C0CK| 91操碰| 亚洲加勒比| 97干在线| 九九色热| 天天干夜夜肏| 盗摄女人妻在线| 亚洲nv男人的天堂网| 91激情网| 天天日天天搞天天干| 天天爽天天| 97欧美久久久久久久| 亚洲欧洲自拍图片专区满春格| 色婷婷在线视频| 日韩欧美成人综合在线| 99热超碰| 999精品久久久久久久| 婷婷久久五月| 亚洲少妇自拍中文字幕懂色| 亚洲 日韩 丝袜 熟女 变态| 茄子社区国产精品| 五月丁香拍拍激情综合三级| 中国小夫妻勾搭露脸淫荡对白 | 午夜福利精品| 人妻夜爽夜夜爽| 无码高清少妇久久| 欧美色图亚州激情| 国产精品人妻免费精品| 九九无码久久精品视频| 97干97色| 干B视频伊人网| 99夜夜操| 国产成人亚洲精品自产在线| 丝袜AV一区二区三区| 五月天丁香网| 精品人妻一区二区三区在| 99精品在线| 久久线上视频免费看| 久久久中文| 欧美性性性| 校园春色之综合网| 亚洲国产成人7777| 97精品97| 亚洲偷拍自拍在线视频| 老司机深夜18禁污污网站| 啊啊啊啊啊操我视频| 无码精品久久久久久亚洲| 五月天黄色av| 国产福利视频精品视频| 久久视频,这里只有精品 | 欧美大波激情xxxx| 一区二区国产视频在线观看| 激情五月天丁香社区| 青青操日韩| 日本 欧美 亚中文字幕| 999精品国产高清一区二区| 色综和网| 91久久99久久91熟女精品| 超碰色老头| 视频在线观看一二三区| 欧美1区二区三区公司| 蜜桃精品视频一区| 超碰在线人妻| 天天干人人干天天日97| 日本阿v天堂在线观看| 97超碰伊人| 黄片在线免费在线观看| 狠狠婷婷亚洲中文综合久久| 91青青在线视频| 丁香五月综合| 久操com| 91麻豆天美国产欧美高潮| 蜜臀久久99精品久久久久久久久| 色操逼网| 97久久超碰| 亚洲污污网站| 美腿色图| 久久久久9999| 超碰色男人操熟女| 日本女人久久久| 老汉网| 亚洲激情色片 | 夜夜嗨老熟女AV一区二区三区| 日韩精品1区2区中文字幕| 欧美桃色网| 久久久九97| 欧美黄片免费在线观看视频| 一本色道人妻久久| 99热18这里只有精品| 国产精品久久久久综合| 久久精品高清AV| 老妇女91| 国产AV人人夜夜澡人人爽麻豆| 久妇网| 无码抄逼网| 色综合加勒比| 麻豆天天躁天天揉揉AV| 久久国产精品熟女人妻| 亚洲一二三四区机械| 一级A片女人高潮叫床| 亚洲美女AV无码| 日韩亚洲97| 啊啊啊啊啊啊好湿好爽视频| 男人天堂站| 久久久久久网址| 9九九国产| 日本A级视频| 啪啪91| 国产操逼逼网| 国产精品一区二区亚洲人成毛片| 色综合加勒比| 97超碰久久| 人人妻人人色一区二区三区| 日韩av色图综合| 极品五月天噜噜| 国产18精品亚洲精品| 狠狠中文字幕| .精品人妻一区二区三| 亚洲色图欧美一区二区不卡| 啊啊啊啊网站| 好爽视频在线观看视频| 上特色A在线| 亚洲狠| 91高清日| 精产品久久| 久久精品区| 久久东京热成人| 日韩欧美三级| 在线亚洲丝袜视频网站| 久/久精品99看9| 天天色综亚洲91污| 国产丝袜视频| 色老汉色| 超碰久久网| 婷婷在线视频| 国产精品自产拍在线观看社区| A级国产欧美激情在线| 最近二区三区视频大全| 蜜桃av色偷偷av老熟女| 日本性感人妻91| 伊人在线大香蕉视频久久| 精品久热| 色婷婷亚洲婷婷| 九九九九久久久| 日韩一区二区熟女| 啊啊啊啊操死我了| 国产亚洲日本| 亚洲玖玖爱| 欧美后入式| 免费精品无码一级毛片牛牛影视| 熟女乱3伦999| 免费簧片在线观看| 亚洲日韩肥臀视频在线观看| 综合久欧洲| 人妻熟妇一区二区三区| 久久东京热久久| 91P0RNY大屁股人妻| 色欲久久久久综合网| 久操凹凸视频| 亚洲熟妇自偷自拍另欧美| 久久精品人体| 三级片大波波| 蜜臀99久久精品久久久久久| 久久97| 久久亚州精品成人Av无| 五月天黄色激情视频| 五月天色图影视| 台湾肥佬网一区二区三区| 人妻少妇精品久久久| 亚洲清纯综合| 成人短视频在线观看| 九九在线视频| 欧美大片天天看| 久九九九九九九九热| 大香蕉久久| 岛国大片在线观看网站入口| 欧美一级三级| 久久后入制服| 深夜国产一区二区三区在线看| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 91激情国产| 久操免费观看| 操逼操网| 四虎884a| 亚洲乱码精品一区二区| 色婷婷丁香五月| 日韩精品9区| 欧美综合亚洲综合| 丁香九月激情啪| 久久草大香蕉| 成人自拍三级在线观看| yellow网站免费观看日韩高清无码| 日韩欧美成人午夜福利| 99色| 久久9精品网站| 中国操逼无码| 99热66| 成年人免费观看网站| 中出20p| 九九碰九九爱97超碰| 好爽视频在线观看视频 | 国产精品福利视频播放| 天天操福利视频综合网站| 午夜啊啊啊| 欧美性爱一区二区三区| 亚洲一区二区三区播放在线| 精品一区二区成人| 亚洲自拍欧美国产首页网曝 | 日韩精品啪啪啪| 久久超碰国产一区二区三区| 亚洲男人的天堂AV| 精品夜夜澡人妻无码| 黄色免费网页无码| 欧美在线视频观看一二三四区高清| 九久久九九久视频| 亚洲一区二区三区久久 亚洲一区二区| 91欧洲入口| www.99热| 丝袜 中出 制服 人妻 美腿 中文字幕| 亚洲二区精品在线观看| 96精品一区| 狠狠色色| A一区片| 亚州中文字幕超碰97| 另类 日韩 熟女| 校园春色综合香蕉| 五月婷婷色| 国产AAAAAABBBBB| 五月天加勒比啪| 自拍鲍鱼一区在线高清观看免费| 少妇色综合| 久久香蕉国产线看观看猫咪av| 蜜臀网址在线| 日本A级视频| 天天躁日日躁XXXXYY| 亚州综合色| 欧美丰满少妇交换91欧美精品| 色综合色色| 999亚洲国产视频| 国产精品自拍欧美在线| 精品久久久亚洲AV成人网站| 天堂男人网| 日日AAvv| 性色综合网| 精品人妻久久久久一区二区三区| 精品无码一区二区人妻久久蜜桃| 3P乱轮视频| 国产精品干干干| 欧美Ⅴ性爱| 日日爱99| 色偷偷人人玩人人舔人人操人人摸人人爽 | 中文字幕视频一区视频二区| 高精欧美色| 啪啪综合网| 亚洲人妻精品一区二区| 欧美人妻二区三区| 伊香蕉综合久久久久久久噜噜噜| 9久久精品| 久久双插| 三及片网站| a人欧美综合天堂麻豆| 老熟妇一区二区三区…| 婷婷爽人人婷婷爽视频| 欧洲亚洲人人爽爽视频| 国产大片精久久久久久| 久久久蜜桃一区二区三区| 大香蕉免费3| 九九九不卡| 久久秀这里有精品| 深夜激情无码| 风流老熟女一区二区三区l| 97超碰久久| 亚洲欧美日韩偷拍色图| 69综合网| 深夜激情 | 自拍偷拍草一草| 大香蕉伊人一区在线观看| 麻豆精品一区二区三区四区免费观看| 东北女人被操| 天天综合网91入口| 婷婷激情五月| 久久麻豆一区二区| 国模精品一区二区三区苹果色戒| 2019精品国产无码成人| 久久受www免费人成| 久久久久久网址| 好涩综合| 亚洲成人久久美女| 一区二区三区日韩欧美| 九九九色| 久9无限国产| 91精品久久久久久77777| 国产黄色 A 片免费看| 欧美变态激情网| 99久久99九九99九九九| 男人天堂一区二区| 男人天堂2019亚洲| 久久久人体| 精品91摸| 久久久久久91香蕉国产| 91国产美女丝袜足交精品视频| 丁香激情网| 亚洲 se图 欧美电影| 人人爱夜夜爱| 91草草草| 丰满人妻一区二区三区四区| 在线日韩精品一区二区三区| a v网站在线播放| 99热亚洲| 夜夜操夜夜高潮夜夜爽国产精品区| 嗯嗯不要视频| 午夜AV人气不卡| 国产成人bd在线观看| 91精品国产91久久久久久久久久久久| 国产精品午夜成人福利| 欧美,亚洲,日韩,v,天堂,手机在线观看| 国产乱码久久久久久| 亚洲一区二区三区麻豆传媒| 成人夜夜| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 亚洲国产一区二区三区在线| 亚洲精品97p| 国产精品久久天天干| 伊人色综合网电影| 欧美亚洲涩涩| 久干9操| 久久最新视频免费观看| 亚洲中文字幕在线视频一区二区| 激情熟女12P| 95人妻爽爽人人做人人澡| 99黄页网站| 一级人妻性爱视频| 97超碰天天爱天天爱| 亚洲网站一区二区在线| 大香蕉伊人网WWWn0n| 99久久99九九99九九九| 激情色色| 精品久久久久久久| 91精品人妻一区二区三区蜜桃臀 | 亚洲淫乱骚妇AV| 超碰这里有精品| 色噜噜人妻丝袜a∨先锋影 | 天天看片天天爽| 国产sv美女内射| 日韩成人电影AV| 色97干| 欧美高清性猛交| 男女激烈网站最新| 免费男人的天堂| 久久久久久久久久久久久久久性生活视频 | 午夜高清成人在线视频| 麻豆天美AV传媒第一页| 亚洲国产精品有声| 亚洲一二三四区| 亚洲精品欧美专业| 亚洲一本大道中文字幕无码在线| 欧美综合网在线| 久久超碰、| 日韩精品在线观看网站| 亚洲 小说 欧美 激情 另类| 日韩中文字幕宗合在线| 久久久蜜桃一区二区三区| 久久精品 六十路 熟女 欧美| 97超碰色屌| 天堂8在线新版官网| 亚洲中文字幕熟女| 天操天操夜操夜月操月年年操操| 熟女中出视频| 天美传媒国产原创中文字幕亚洲欧美另类 | 三级片网站在线播放| 91黄站| 亚洲精品不卡一二三区| 色哟哟-国产专区| 丁香五月婷婷基地| 久操精品网| 亚洲图片激情综合另类| 国产99热| 女性91网站| 人妻欧美| 欧美色图色综合| 91无摭挡| 98福利在线视频| 黄片www.| 久操com| 丝袜亚洲综合| a片在线播放| 91色婷婷综合久久中文字幕二区| 国产97av| 久热伊人| 久久久精选| 在线欧美亚洲| 日韩日本欧美在线观看| 人妻三级在线中文字幕| 亚洲丝袜在线观看| 啊啊啊好多水| 自拍偷拍亚洲熟女妇人精品| 国产尤物AV尤物在线观看不卡| 国产精品欧美日韩久久| 操逼网免费无码视频| 色人久久| 91艹逼精品| 91 国产丝袜在线播放-百度| 精品人妻一二三| 自拍偷拍国产欧美日韩韩| 久久美女国产| 自拍偷拍国产欧美日韩韩| 成人七区| 丰满少妇一区二区三区四区观看| 成人精品视频| 快灬快灬 一下爽蜜桃在线观看 | 中文字幕人妻丝袜乱一区三区| 蜜臀久久久99久久久久 | 五月天丁香| 天欧美在线| 成人久久久精品| 久久岛国| 亚洲精品aa久久伊人| 久操网无码在线| 亚洲第一页色| 日韩精品国模| 欧美人妻精品一区二区| 欧美综合色站| 日韩三级性| 国产免费黄色一级大片| 婷婷伊人綜合中文字幕小说| 日韩中文字幕宗合在线| 婷婷丁香九月| 99色婷婷中文字幕乱色| 手机午夜电影神马久久| 土豪酒店各种姿势玩弄极品幼稚| 99re视频这里只有精品| 色官网在线| 日日夜夜国产综合| 男人的天堂三级| 日本国产欧美高清在线| 青青草久草AV| 欧美成人午夜免费福利785| 99综合免费视频| 日韩欧美麻豆 | 人妻嗯啊啊在线播放| 国产美女91| 啊v视频在线观看| 国产精品一区在线播放| 亚洲图片日本AⅤ欧美在线| 18精品一区| 亚洲欧洲自拍图片专区满春格| 大香蕉免| 国产成人精品必看| 天天综合麻豆视频| 丁香五月天婷婷姐| 乱欲一区二区| 日韩91网站| 国内黄色精品| 国产精品香蕉热久久新品| 中文字幕无码不卡啪啪| 夜夜肏2021| 粉嫩av久久一区二区三区| 91视频女生| 91美女在线视频| 日本肏逼视频在线观看| 亚洲AV无码秘 蜜桃臀国精产品| 中文字幕AV片| 亚洲男人的天堂AV| 麻豆天美国美国产| 精品少妇一区二区三区在线视频| 久久久一区二区三区四区五区| 东京热精品97综合网| 五月天婷婷色色| 欧美日韩黄片精品在线| 97天天插| 色眯眯av| 欧美桃色网| 日韩少妇在线视频| 天天看特黄的免费网站| 精品久久久久,69国产成人精| 欧美性爱伊人| 一级啊性爱在线视频| 在线中文字幕| 亚洲高清视频在线免费观看| 色逼综合| av一区二区三区不卡| 青青在线视频日韩欧美| 欧美黄业| 另类图片综合| 国产视频一区二区三区在线免费观看| 久久久久久久性爱| 少妇久久久久久| 久久这里只精品免费福利| 亚洲阿v天堂在线| 国产亚洲精品一区二区三区| 91久热| 超碰97人人cao| 久久 久久国内精品亚洲| 99re只有精品| 久久视频,这里只有精品| 日本三级小说中文字幕| 99黄页网站| 亚洲综合九| 亚洲精品久久久久久| 人妻精品一区一区三区蜜桃91| 亚洲中文字幕噜噜噜久久久| 欧美色图片91| 亚洲欧美综合网| 中文字幕丰满子伦无码专区在线视频最新 | 丝袜色综合| 天天干人人看综合| 啊啊啊啊,啊啊好多水| 欧美顶级黄色大片免费| 啊啊啊久久久视频| 欧美性爱另类综合| 日韩欧美中文字亚洲慕| a片偷拍视频| 亚洲无码?第一页| 用力操死我| 婷婷午夜| 久久成年片色大黄全免费网站| 五月婷婷六月激情| 精品免费1| 熟女自慰久久久| 大香蕉综合久久| 久日综合网| 日韩欧美中文字| 手机在线大香蕉| 超碰色男人操熟女| 人妻少妇久久久| 天天综合网AV91| 99中文字幕| 日韩中文字幕人妻视频| 欧美激情五月天| 亚洲色图美腿丝袜| 九热中文字幕| 欧美日韩操逼嗦吊| 91撸色网 玖玖网 欧美| 深爱伊人影院| 日韩激情啪啪啪| 日韩AV电影网站| 91色伦| 国产无码久久高清| 五月丁香久久| 超碰在线综合97| 国内毛片无遮挡国产| 婷婷在线视频| 久久久久久久久久久精| 免费观看国产不卡av| 久99久视频精选| 丝袜美腿操av| 无码WWW免费视频网站| 亚洲色图 欧美热图 清纯唯美 另类自拍| 97超碰国产亚洲精品| 国产乱伦搜索结果91P| 黄网在线播放| 无卡一区=区| 国产高清成人免费视频| 成人AV在线电影| 国产精品视频精品一二| 成功精品影院| 69精品| 一级二级三级黑人无码| 91美女小视频| 性做久久久久久免费观看软件| 欧美72网页| 日韩无码一级黄色av片| 97干com| 啊啊啊啊好多水| 任你艹| 久久三区四区| 婷婷丁香六月| 日韩欧美女求操每天更新| 亚洲精品aa久久伊人| 亚洲性综合| 99精品久久久久久久婷婷| 亚州高清色综合| 日韩人妻制服丝袜av| 日本淫穴在线| 在线观看AV片| 神马久久免费电影观看| 五月激情视频| 成人性生活高清视频在线播放| 久热9| 高清不卡 中文 人妻| 殴美大黄片| 另类图片五月天| 国产精品一区二区黄片| 1二区9| 欧洲一级性爱视频在线观看| 大香交| 女优免费一区二区永久| 啊啊啊啊操死我| 少妇无码太爽| 97在线视频观看网站| 免费97视频| 成视频在线观看免费看| 日韩精品啪啪啪| 操死我干死我| 把腿张开老子CAO烂你| 亚洲蜜臀精品视频久久| 亚洲国男人的天堂| 超清福利精品视频在线| 久久久91福利姬| 99久热| 亚洲中文字幕精品一区| 欧美日韩亚洲高清不卡一区二区三区| 无码高清国产AV| 欧美九九九| 丰满搜索结果 -第18页- 久久高清无码| w w w.久久精品| 97国产高清视频在线观看| 少妇滛荡视频| 欧美姓爱综合网| 五月婷婷性爱| 久久欲| 欧美人妻一区二区| 97爱免费插| 国产日韩在线播放| 五月婷亚洲精品天堂| 中 文字幕一区二区三四 五 区日 日 骚| 91人妻中文| 美国三级日本三级久久99| 国产成人免费观看在线视频| 青青草色AV| 久热热| 丝袜美腿av女优在线| 岛国不卡超碰护士AV在线播放| a在线观看| 在线观看无码三级少妇| 九九九九精品视频| 青青草成人视频在线观看二区| 在线人成亚洲视频免费观看| 黑人综合色| 无码伊人久久大杳蕉中文无码| 人人操人人干xxx| 中日韩久久久免费看| 亚洲AV资源| 啪啪一区| av日韩在线观看电影| 偷拍 欧美 日韩| 蜜桃传媒视频第一区入口在线看| 欧州激情视频在线一区二区| 亚洲欧美色图小说| 国产 日韩 欧美高清| 女优视频第10页| 91看黄片| 色五月AV| 呦女网站| 人人喜人人妻| 99无码精品| 国产女性无套 免费观看| 国产精品午夜福利亚洲综合网| 狠综合网| 成人五月天色网| 天天日日本| 北条麻妃99精品青青久久| 五月天社区| 717影院理论午夜伦八戒| 男人a天堂手机在线版| 色婷婷日韩精品一区二区三区| 欧美精品1区2区3区| 成人蜜乳小视频网站| 97色婷| 精品人妻1区| 亚洲成av人片色午夜乱码| 花野真衣| 男人久久精品| 大香蕉99re| 成人夜夜爽| 高清有码一区二区| 性欧美999| 国产无码一二三区| 人妻乱仑一区二区三区| 一本大道不卡一二三区| 肉动漫无遮挡h在线观看| 欧美综合自拍| 欧美日韩国产成人高清| 成人a v在线播放免费| 国产精品婬乱一级毛片彝族| 久久熟女人| 日本中文字幕在线视频| 日本肏逼视频在线观看| 久久人妻视频网| 久久综合av| 日本色日夜干| 无码视频一区二区| 殴美牲| 国产粉嫩出水在线播放| 天天爽夜夜操| 91九色首页| 日本三级人妻a人妻一在线| 欧美性爱另类综合| 97资源超碰| 91老熟女| 欧美18老人禁| 老司机深夜18禁污污网站| WWW啪啪的com| 美女自卫慰黄网站免费| 蜜桃无码AV一区二区| 91爆操视频| 久久精品国产亚洲AV片多多| 九九成人| 欧美999999| 亚洲双插| 少妇熟女1区2区3区| 欧美一区二区三区互相| 亚欧高清在线| 91操人| 韩国手机不卡无码三级视频| 欧美熟妇色| 99这里只有精品| 淫荡网址| 国产免费一区二区三区最新不卡 | 这里只有97精品| 北京专精特新企业招聘信息| 欧美性区| 日韩av女优在线免费一区| 色综合久久久久| 性欧美另类高清| 久久亚洲天天做| 久久大香蕉97| 一类av片在线看| 欧美日韩性感| 欧美日韩一干二干| 唯美清纯 妖精视频| 日韩三级在线观看网站| 狠狠爱综合| 日日噜噜夜夜久久亚洲一区二区| 欧美丝袜中文字幕07在线| 日韩熟女乱伦中出| 日本午夜久久电影| 我中文字幕6区| 久久精品区| 国产精品4p在线观看| JULIA一区二区三区在线播放| 无码免费一区二区三区啪啪| 亚洲性猛| 无码最新| 黄色污污污污污污网站| 是还免费视频1727我| 97色欧洲| 欧美久久伊人| 超碰97在线中文| 涩涩这里只有精品视频| 肥臀熟女福利视频一区二区| 91热色| 成人97人人超碰人人| 国产情侣自拍在线播放| 欧美日韩天堂| 五十路三级片| 色综合超碰超| 噜噜噜在线视频| 超硑97精品| 亚洲,日韩,欧美,成人播放| 9精品在线| 亚洲av无码成人精品国产| 九九九九久久久久| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产精品三级视频网站 | 久久久新亚洲AV| 欧美性爱系列| 呻吟 欧美 日本 中出| 淫荡熟女乱伦网| 久久免费中文字幕在线观看| 疯操AV| 簧片免费看视频| 亚洲综人网| 五月丁香综合啪啪| 大香久久| 天堂种子在线www网资源| 蜜桃臀久久| 无码自拍SM| 亚洲女人91| 亚洲色图在线视频| 色哟哟 日韩精品| 亚洲天堂无码| 国产精品在线免费| 中文字幕精品一区欧美| 超碰 另类 欧美 | 亚洲av在线免费观看| 青娱乐手机日韩在线视频| 久久成人午夜精品影院| 97免费视频网| 成人免费福利网站国产| 女人18精品一区二区三区| 最新中文字幕在线亚洲| 国产又粗又长又大的视频| 91午夜无码| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 白丝被操91| 91精品国久久久久久无码| 国产欧美在线观看免费观看| 国产美女激情| 国产一级内射无挡观看| 国产精品电| 久久久久久亚洲精品不卡人乳| 97超碰护士| 91夜夜蜜桃臀1区2区3区| 国产高清MV操逼视频| 欧美se综合| 亚洲天堂第一页| 欧美劲爆视频一区二区| 四虎精品亚洲| www.操| 亚洲无码久久久久久久| 亚洲第一视频 欧美风情 日韩| 六九九九| 中文字幕一区二区在线日韩精品| 丁香婷婷激情五月天无毒不卡 | 人人操人人爽人人操人人| 日韩钢筋无码高清啾啾啾| 日韩中文字幕在线视频观看| 中文字幕在线观| av亚洲天堂资源网站| 欧美午夜视频免费观看| 怡红院怡春院| 五月天色色网站| 1级黄色夫妻对换性交免费看| 91AV天美在线视频| 亚洲另类综合欧美| 色欧洲| 少妇蹲下买菜露大唇0| 亚洲四虎熟女精品| 一级岛国大片| 亚洲97超碰| 亚洲欧美91√| 啊啊啊啊啊啊啊国| 精品黑人一区二区| 91熟女视频网| 亚洲男人天堂视频| 欧美一区二区日韩三区| 大香蕉伊人75| 欧美日韩97在线| 9l视频自拍9l九色成人| 日韩中文字幕人妻视频| 色欧美在线| 精品久久久久瑟瑟| 国内自拍 日韩激情 99| 看大黄色大片原件| 国产91福利小视频在线观看| 乱人乱色一区二区三区免费| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 激情啪啪拍91| 嗯嗯啊啊用力视频免费| 综合网亚洲在线| 亚洲精品熟妇1区2区3区。| 中文字幕88av在线| 亚洲无码 国产无码| 婷婷尹人大香蕉免费| 少妇一区二区三区高速| 女人久久久| 亚码人妻| 青青草精玖玖69精品| 天天躁狠狠躁av| 天天天天天天天天综合| 偷拍网站久久男女男| 在线可观看的黄色网址| 逼操网站| 岛国网址国产 | 99这里只有精品| 欧美 日韩 国产传媒| 五月天激情婷婷| A V视频日本| 亚州免费啪啪视频| 伊人久久大香线蕉无码| 乱伦图一区| 亚洲天堂中文字| 免费看片黄| 69av一区二区三区| 亚洲情欲| 蜜臀99久| 九九热AV| 国产9熟妇视频网站| 日本一卡二区在线| 久久9精品| 国产蜜臀在线| 日日骚一区二区三区| 激情欧美97| 亚洲成a人v欧美综合天堂下载| 看日韩黄片| jazzjazz国产精品麻豆| 日韩人妻一区二区| 60秒不遮不挡| 白丝被操91| 成年女人黄网站| 国产高清在线观看欧美| 波多野结衣被操50分钟免费视频 | 国产欧美美女免费观看视频| 国产亚洲 中文欧美久久| 久久色激情一区二区三区| 久久九七| 深爱五月婷婷| 国产人伦精品一区二区三区| 九九久久99| 五月天久久婷婷亚洲 | 亚洲国产欧美中文永久| 超碰碰碰碰| 东京太热久久久| 午夜福利久久久噜久噜久久综合 | 后入精品| 欧美成年人性爱视频免费观看| 久久黄色视频一区二区三区| 91亚洲图片| 久久午夜伦| 国产无码成人无码| 久久免费99精品久久久久久| 约操熟妇| 欧美熟爽综合| 精品无码一区二区人妻久久蜜桃| 天美av在线| 又大又长又粗又爽又黄| 综合国产影视三级| 91久久婷婷| 超碰久在线天天做| 乱伦图一区| 国产精品视频电影| 青娱乐手机日韩在线视频| 大香蕉中文201| 日韩成人大片一区二区| 天天摸天天碰天天添青青| 亚洲美女黄色| 国产在线观看91精品一区| 久热超碰| 中国黑人三级片网站上区| 天天综合-91入口| 五月婷丁香| 麻豆国产成人精品| 亚洲97| 日日夜夜干| 久久精品无码一区二区三区| 国产超碰人人爽人人做| 青青三级视频| 强奸乱伦中文字幕AV| 国产福利夜| 人妻一二三区| 久久久久久91香蕉国产| 黄片免费日韩| 午夜.DJ高清在线观看免费7| 97视频7| 国产传媒操逼视频| 熟妇高潮一区二| 天天操夜夜嗨| 久久久久久无码人妻中文字幕| 综合夜夜| 91性感网站| 一区二区娱乐网站| 国产 热久久久久国产精品| 91麻豆一二三区| 92人人操人人| 亚洲天天操| 9九九国产| 六六久久日韩不卡| 精品国产无码中文| 色综九九九一区| 婷婷综合网| 国模无码一区二区三区在线| 九九九九九九九九九九九蜜桃| 97碰在线视频| 国产精品 久久久精品一牛| 97情超碰色| 色五月婷婷麻豆在| 日韩黄色成人性爱| 精品黑人一区二区| www.久久最新地址| 亚洲无码视频免费在线观看网址!| 亚洲一区制服诱惑| 少妇500双飞99| 色五月首页| 超碰人妻在线| 夜夜操青青草| 93人人操人人| 久久黄片国产一区二区| 免费看污网址| 久久久国产精品人妻丝袜| 爽爽淫人网| 狠狠色综合网| 最近的最新的中文字幕视频| 国产91精品福利在线| 强奸乱伦亚洲第一页| 国产女人视频三四五区| 日本道人妻久久久在线不卡色视频| 国产视频小说| 亚洲97p| 亚洲丝袜二区在线| 91欧美情色| 日韩干B| 久久线上视频免费看| 精品国模无码| 超碰97护士| 中文字幕中文字幕一区二区| 色色色天美视频| 国产精品免费1区2区视频| 视频在线观看免费一区二区三区| 国产精品视频麻豆入口| 亚洲图片欧洲图片aⅴ| 日本操BAV| 午夜成人福利影视| 欧美日韩国产中文超碰| 91国内外在线| 99re久久| 张柏芝国产一区在线观看| 日韩熟女乱伦中出| 国产欧美日韩精品中文| 色情综合网| 麻豆人妻精品一区二区| 亚洲熟久久| 久久九操在线观看| 91色综合| 99久热| 五月天人妻综合| 乱伦一二三| 草草影院在线视频| 亚洲 欧美 另类 日韩 人妻一区| 亚洲精品色| 日韩无限资源| 亚洲Av无码成人精品国产| 久久久久9999妇女| 91人妻在线视频| 国产亚州高清国产拍精| 久久一区,青青青青草视频在线播放| 91精品操美女| 自拍偷拍亚洲熟女妇人精品| 亚洲精品亚洲人成人网| 精品国产一区二区久久| 天天干天天日天天射黄色片| 亚洲清纯综合| 91成人久久 | 97av在线视频| 亚洲无限观看| 亚洲国产成人精品无码专区| 日本不卡二三区| 搡老熟女免费视频 | 毛片17S| 人人操 欧美| 女一区二区| 日韩在线欧美精品一区二区| 有码色中文字幕在线观看| 国产精品成人AV片免费看网站| 成人七区| 久久视频,这里只有精品 | 91美女国产在线| 五月激情啪啪| 精品福利| 日日干男人的天堂| 无码99| www.天天干| 78超碰| 国产传媒一区日韩| 美女尤物人人操| 韩国嫰模上门援交视频| 亚洲五月婷婷| 成人免费性爱视视| 欧美日日人人天天| 四虎 精品 WWW| 欧美性爱1080p| 美女上床网站| 激情文学欧美| 国产高清MV操逼视频| 少妇无码999| 久久国产999| 久久欧洲| 丁香六月天| 日韩激情无码影院| 国产精品一区在线播放| 欧美大香蕉97| 激情综合五月天| 日韩欧美亚洲一区二区三区影院| 中文字幕在线免费观看2| 国产精品伦理| 久久婷婷五月天| 很很热性爱视频|