亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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麻豆Aⅴ无码电影一| 天天综合网~91| 91在线视频免费播放| 日韩成人色图| 黄久在线| 五月天丁香网| 91黑丝操| 亚洲精品一区二区三区在线播放| 精品无码人妻一区二区免费蜜桃| 13小男生GAY自慰脱裤子| 国产一区二区啪啪视频| 国产成人精品一区| 思思热久久成人| 日韩av女优在线免费一区| 四虎免费在线播放| 91足交| 九九久久久久久爱| 园内精品自拍视频在线播放| 91/欧美| 18禁无码永久免费无限制| 天天综合91在线| 99色在线| 北条麻妃99精品青青久久| 亚洲同性aV综合| 爱我干综合| 国产成人精品一区| 韩日性爱av| av麻豆啪啪| 操b在线观看| 99999精品成人| 天天躁日日躁成人字幕aⅴ| 中文字幕日韩精品一区二区三区| A级毛片在线看免费| 欧美天堂日韩三级国产传媒| 久艾草在线精品视频在线观看| 欧洲射精91| 黄片qw| 国产精品乱人伊人网| 免费精品无码一级毛片牛牛影视 | 久久香蕉国产线看观看亚洲女人 | 激情五月天综合网| 88xx成人精品视频| 国产精彩女在线观看视频| 自怕偷自怕亚洲精品| 欧美亚洲AN| 少妇xx精品| 久久久91福利姬| 丁香五月激情综合国产| 成人性爱av| 毛片麻豆91糖心精品毛情片| 免费一级视频特黄色大片| 青青草一区二区高清无码视频| 女人高潮大叫一级毛片| 99无码狠狠久久| 操操操操操操| 在线观看黄色电话| 思思热一热婷婷热一热| 欧美韩国你懂得在线 | 97超碰久久色| 亚洲夜夜欢无码一区二区 | 精品亚洲俞拍视频一区| 国内精品伊人久久久久影院会| 熟妇人妻丰满久久久久久久无码| 五月天色图影视| 88xx成人精品视频| 国产午夜精品一区二区三区牛牛| 欧美曰韩国产精品| 人人操av| 亚洲AV无码翔田千里网站| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 精品一区96| 人人操人人爽人人操人人| 欧美天堂亚洲电影院一区在线播放| 日韩亚洲Av人人夜夜澡人人爽| 国产综合久| 四虎视频在线观看| 久久黄黄| 天天综合网国产| 能在线播放的国产三级| 26UUU欧美激情一区二区| 久久精品老司| 久久亚洲影院一区二区| 美中日韩无码| 亚洲 小说 欧美 激情 另类| 99re这里只有精品2| 狠狠操一区二区| 九九无码视频| 香蕉久久AⅤ...| 欧美人妻另类在线| 日韩钢筋无码高清啾啾啾| 丁香婷婷大香蕉| 强奸国产在线| 国产精品探花在线| 午夜操逼不卡| 少妇一区二区三区精选| 国产中出内射一区二区| 91夜色| 人妻激情视频| 国产深喉| 中出20p| 亚洲欧美一区二区不卡视频播放 | 中文字幕激情小说| 国产97在线播放| 粉嫩AV一区夜夜嗨| 一及黄久一点| 嗯啊啊啊轻点视频| 欧美天天谢综合网| 91国产精品熟女| 欧美在线视频99| 男人的天堂一区三区| 久久久久久一日韩字幕无码| 凌辱美少妇久久aV| 97天天插| 亚洲日韩少妇一道本视频| caopeng97| 操一区| 久久欧美性爱视频| av凤凰久久久| 丁香久久| 嗯~啊~快点 死我视频| 伊人天堂在线| 婷婷爱五月| 婷婷啪啪| 操一区| 日日操天天操| 国产精品久久9| 国产精品熟女乱伦| 久久久久久午夜男人的天堂| 男人的天堂不卡一区二区| 五月天婷婷基地| 啪啪91| 日韩精品区二区三区不卡| 五月丁香久久| 91原创在线观看| 96爱综合| 操淫穴亚洲五月丁香| 欧美亚洲涩涩| 熟女熟妇一区二区三区视频| 清纯唯美综合亚洲| 亚洲色婷婷久久91| 国产最新小视频在线播放下载| 国产一级特黄大片处女| 蜜乳AV一区二区三区四| 五月综合久久| 五月天伊人| 九九热视频这里只有精品| 歐美性天天| 久久精品99| 国产丝袜啪啪| 天天射天天操天天干天天吃2018| 人人插人人摸人人| 色色激情五月天| 亚洲综合色男人网| 99精品久久久久久| 色欲天天综合久久久无码网中文| 蜜乳AV一区| 国产亚洲禁久一区二区| 天天干天天日天天射黄色| 九九热免费在线国产视频伊人五月| 欧美日韩一干二干| 夜夜嗨一区二区三区直播内容| 啪啪啪精品| 久久天堂婷婷网| 五月综合久久| 青春草A| 欧美日韩不卡传媒| 亚州一区二区成人片免费| 极品尤物在线观看| 国精综合一二三区影视| 日曰骚久久精品| 一区二区乱码福利| 亚洲精品人妻吞精av| 96AV精品| 青青操日韩| 国产探花日韩援交| 国产激情久久久| 丰满搜索结果 -第18页- 久久高清无码 | 午夜小电影在线插入淫高潮| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 91偷拍欧美亚洲| 2020中文字幕在线| 精品久久久久av影院| 毛片中心9视频99| 91久久精品美女高潮喷水| 综合网 欧美| 国产精品视频一区二区三区八戒| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 亚洲鸥美色图| 中文字幕国产| 欧美激情综合| 亚洲影视第一页| 色综合V| 国产欧美日韩在线观看麻豆传媒公司| 日韩国产九九精品一区二区三区毛片| 日韩字幕一区| 久无码| 亚洲不雅视频1区二区| 日韩一级片在线看| 综合情欲网| 粉嫩粉嫩一区性色AV片| 制服中出中文人人精品| 国内亚洲精彩视频在线| a人欧美综合天堂麻豆| 男人女人18禁片免费看网站| 久久久久9久久久久| 91M一社| 97人妻免费中文字幕| 欧美色图亚州激情| 国产老太乱伦一区| 亚洲伊人久久精品狠狠在线| 天天躁日日躁成人字幕aⅴ| 97视频在线观看高清资源| 一起草在线视频| 色墦五月丁香| 60秒不遮不挡| 日韩三级久久久| 2017大香蕉| 麻豆天美久久91| 熟女探花啪啪| 人妻精品综合中文字幕在线 | 99色在线| 蜜臀99久久精品久久久久久| 人妻 中文 日韩| 超碰97久久国| 亚洲 自拍偷拍 欧美| 欧美成人综合| 精品少妇人妻av久久免费| 亚洲人妻中文高清| 黑丝制服中文字幕 | 久久久亚洲| 天综合网| 99热这里只有精品18| 午夜福利免费精品视频| 深夜视频| 久久国产对白激情浪潮| 天天色天天干天天射| 中出在线视频| 一二三啪啪专区| 国产精品嫩草影院午夜两性| 国产免费久久精品99re韩国| 强奸乱伦大香蕉网| 明星性猛交ⅹxxx乱大交| 农村妇女一级二级三级视频| 欧美黄页| 91熟女综合| 日韩欧美亚洲一区二区三区影院| 天堂亚洲欧美| 免费视频在线观看啊啊啊啊啊| 五码视频在线观看| 国产女主播视频在线观看| 五月丁香综合| 午夜精品久久久久久久99蜜桃一| sewuyueav| 国产农村妇女精品1区二区| 女人被男人桶爽视频网站| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日本中文字幕一区| 亚洲中文字幕97久久精品少妇| 人人搞人人插人人操| 超碰到97情色| 国产天天骚| 欧洲综合无码| 骚鸭AV| 岛国片在线观看视频亚洲| 国产乱伦视频污| 日韩专区久久久| 欧美v亚洲v日韩v最新在线二区| 校园春色五月天| 色97综合中文字幕| 日韩精品熟妇| 性欧美另类高清| 亚洲色图欧美视频| av网站在线观看了| 亚洲精品人妻在线| 视频不卡中文字幕| 999综合色| 日韩成人精品中文字幕| 久草视频观看视频在线| 四月丁香婷婷| 伊人99热| 欧美很很操视频| 大香蕉日韩| 日韩中文9| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 97亚洲一区| 一级A片女人高潮叫床| 国产成人91一区二区三区| 婷婷20月天青娱乐| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲 无码 有码 中文字幕| 一区二区三区男女操逼黄色小电影| WWW黄片COM| 国产一区在线观看无码AV| 超碰97人妻| 91N综合网在线| 美女高潮视频91| 久久久999日本大片| www.99视频| 熟女字幕| 新版天堂中文资源8在线| 久久国产逼| 玖色av| 亚洲一本色码中文字幕| 青青草视频在线观看一区二区| 日本大片日本一区二区免费高清| 久久精视频美日韩在线视频| 国产又大又硬又长又粗| 激情综合网五月婷婷| 中日韩欧美精品无码AⅤ一区二区| 日韩肏逼视频| 思思热在线视频免费| 青青草一区二区高清无码视频| 91熟女视频网| 美欧色综合| 啊啊啊好舒服视频| 色哟哟 日韩精品| 思思久热在线精品66| 69国产对白刺激| A级片日韩欧美国产欧美视频精选观看| 欧美v日韩v亚洲v最新在线| 欧美的精品的视频| 99999亚洲另类| 中文字幕欧洲有码| 美女啊啊啊啊啊| 亚洲欧美另类激情小说| 三级日本一区二区三区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 囯戸精品高潮呻吟旡码| 亚洲1区2区三区高清中文字幕| 久久精品高清AV| ?亚洲伊人伊成久久人综合网| 懂色AV蜜臀无码精品APP| 亚洲AV成人无码一区二区三区在线观看 | 欧亚久久偷拍视频| 人人摸人人舔一区二区| 99热国产精品| 97操综合| 精品午夜福利| av天堂天堂av日韩| 婷婷五月天色| av亚洲天堂资源网站| a片亚洲一本通视频| 麻豆一区二区三区在线看 | 约操熟妇| 人妻AV 中文字幕的| 后入 亚洲 美女 射| 东京热av男人的天堂| 男人天堂 天天射| 91老司机精品| 91人妻素女| 91 亚洲 欧洲| 中文字幕乱偷人妻久久艾草网| 亚洲天堂久久| 日韩精品碰碰| 91人人看| 超碰9 7女人| 中文?日韩?免费?精品| 亚洲密乳AV| 亚洲国产一区二区三区四区国产| 中文字幕av久久爽Av| 九九超碰综合网| 国产 日韩,欧美 自拍| 国产 热久久久久国产精品| 亚洲宅男天堂| 亚洲综合伊人| 欧美少妇色图| 99色综合| 国产精品一区在线播放| 少妇人妻好深太紧了vr91| 91操操| 超碰 另类 欧美| 91bbbbbb| 五月婷婷爱六月丁香色| 9999九九九久久久| 国产无码久久高清| 亚洲午夜免费狠狠干| 夜夜爽爽夜夜精品视频| 亚洲男人天堂手机版| 久干9操| 少妇诱惑视频| 中文一区二区三区影院| 黄色片大香蕉| 久久人妻一区二区三区高清| 国产精品探花色| 亚洲日产专区| 美女91色黄18| 精品亚洲黄色片 国产精品导航一区二区 | 蜜臀99久久精品久久久久久| 美国人人操人人操| AV一二区| 女人天堂av在线播放| 久久久国产三级黄色片| 乱色老一区二区三区的观看方式| 免费亚洲黄色视频在线观看| 亚洲成人精品久久久| aa片毛片| 亚洲国产欧美日韩人妻日中文| 精品人妻一区二区蜜桃视频| 国模精品娜娜一二三区| 五月天九九日国产精品一区二区三区| 九九探花视频在线观看| 蜜桃色院一区久久 | 97超碰色中文字幕| 亚洲日韩成人性爱视频| 美女网站黄页| 5月婷婷6月六月丁香| 亚洲诱惑天堂 | 99热精品免费| 色香天天| www.狠狠干.coom| 97色97干| 国产精品视频播放| 国模不卡| 亚洲色图欧美色图在线播放| 亚洲精品成人| 夜夜爽夜夜操| 搡老女人老妇女老妇老熟女怎么读| 九九热九九| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 69少妇一区二区| 操逼日韩无码| 尤物视频偷拍免费| 一区二区三区探花在线观看| 伊人久久亚洲色欲综合网站| 日韩成人大片在线观看| 国内毛片四区| 91色艳| 久久丝袜| 中文字幕少妇色| 一级性爱视频免费观看 | 国产欧美精选激情视频| 桑老女人九区| 99性视频| 国产AAAAAABBBBB| 97欧美色综合| 人妻少妇精品一区二区三区| 国产兽交视频在线播放| 欧亚日韩三区| 国产精品熟女丝袜一区二区| 97日韩| 欧美精品丝袜久久久中文字幕| 超碰97中文| 久久久工口| 亚洲囯产精品女人久久久| 久久熟女久| 色色五月婷婷| 亚洲精品国产专区在线观看| 97日视频| 丝袜AV一二三区| 人人看欧美性爱| 欧美亚洲首页| 欧美亚洲宗合色性图| 免费观看欧美日韩操逼视频| aaa亚无码专区| 神马久久久久久久久久久久| 国产AV毛片| 蜜臀久久99精品久久久久久无删减 | 久久9精品网站| 欧美亚洲激情小说| 久久首页| 色香网| 精品然女一区二区| 一本久道久久综合狠狠爱| 黄片www视频免费| 亚熟hd视频在线| 玖玖97综合| 日本护士高潮| 成人无遮挡毛片免费看| 人妻少妇精品久久久久久久| 色九九九综合| 97玖玖人妻| 欧美日综合| 国产精品一区在线播放| 精吧天堂| 青青国产精品在线| 日韩一区二区精品视频| 日韩性爱电影一区| 免费一级特黄特色大片在线观看看| 999综合网| 青草地一本线一区二区三区| 天天综合网入口~91| 天天综合AV| 五月天婷婷色色| 熟女五十路一区二区三| 最新日日夜夜天天干干| 九九综合九九综合| 不卡在线观看视频| 噜噜噜久久亚洲精品色情| 91色黑人少妇| 久草视频制服诱惑| 大香蕉AV丝袜| 色噜噜人妻av 中文字幕| 国产精品交换一区二区| 亚洲操操| 大香蕉免费中文| 97五月天| 天天操av懂色| 日本精品人妻少妇一区二区| 青青草亚洲一区| 爱做久久久久久| 免费看久久久性性| 丁香九月激情| 国产丝袜视频| 嗯嗯啊在线视频| 丁香五月婷婷基地| 男人的天堂2010| 国产成人资源| 天堂麻豆天美| 九九九九欧美| 久久老熟女| 99中文字幕| 热99这里有精品综合久久| 天天综合-91入口| av中亚| 99精品国产户外露出| 无码动漫av中文字幕| 91av熟女人妻| 四虎国产精品永久在线囯在线| A级国产欧美激情在线| 欧美AB在线| 色欧洲| 中日韩免费看男女操逼大全| 久久超碰国产一区二区三区| 国产一级不卡在线观看| 黑人精品成人一区二区三区| 亚洲综合色网| 国产不卡中文字幕免费avi| 久久伊人青青草| 欧美高清在线| 亚洲在线| 高清一区AV无码| 少妇滛荡视频| 久久久999网站| 久久伦理视频久久大香蕉视频| 国内成人圈中文字幕无码视频| 美女啊啊啊啊啊啊| 二男一女成人A片| 韩国三级一线观看久| 午夜寂寞欧美| 亚洲色图大香| 欧洲精品欧洲精品| 日本视频在线中文字幕| 亚洲一区二区AV| 国产高清自拍视频| 蜜桃无码AV一区二区| 大香蕉伊利av| 国产精品69久久久久孕妇欧美| 日韩精品人妻| 一区二区三区精品视频| 啪啪综合网| 亚洲AV成人在线| 色综合网1| 超碰人人妻| 亚洲综合图色在线| 天天爱天天操| 国产av又色又爽又黄| 爱做久久久久久| 日日黄色三级网站| 亚洲另类春色| 大香蕉综合| 美女黑人91神马| 久久区| 囯产操逼片| 久久综合精品一区二区三区| 欧美日本视频一区| 久久黄色视频一区二区三区 | 人妻丝袜一区二区三区在线| 97人人操人人摸人人爱| 日韩精品高清资源在线| 性91| 亚洲操操| a人片中文字幕一区二区| 17c嫩草51久久91嫩草| 丁香五月影院| 97日韩欧美亚洲| 亚洲AV性爱电影| 97精品第3页| 日本成a人v网站在线观看| 99色在线视频| 91操熟女视频| 亚洲精品精品一区二区| 超碰碰小说97| 成全动漫视频观看免费下载| 久久久啊啊| 91人人操| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 六月激情婷婷| 婷婷色婷婷| 鲁鲁色综合网| 96AV久久久| 夜夜国产一区| 91美女看B| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | av一区二区三区 中文| 久久婷婷精品| 天天日日舔舔| 偷拍超碰| 公司1区2区3区精产精| 色欧美色交综合| 嗯嗯不要视频| 日本性感人妻91| 天天操天天干一区二区| 国产 日韩 欧美高清| 国产精品视频精品一二| 亚洲不卡AV在线| 中文字幕片| 97频视在线| 亚州高清色综合| 校园春色美腿丝袜| 亚洲网站一区二区在线| 91艹B视频| 五月婷婷六月色| 中文字幕亚洲欧美在线不卡| 亚洲天堂自拍| 青青草五月份天| 91亚洲网站| 人人看人人插| 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲啪啪视频一区二区| 9999久久久久| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 久久午夜神马| 伦激情人妻另类人妻| 囯产乱伦一区二区三女 | 国产精品网站免费| 亚洲欧美激情小说| 国产91av在线播放| 九九亚洲视频| 91性高| 午夜福利合集| 中文字幕乱码人妻二区三区| 日本三级日本三级99| 九九久久99| 久久精品区| 久久91精品国产9丨久久分亭| 激情文学网伊人| 欧美成人一区二区| 国产操逼网站亚洲一级黄色| 中文字幕亚洲在线一区| 伊人久久大香线综合无码| 91操熟女视频 | 18一区二区三区| 97精品一区| 国产精品网址| 99国内精品| AV中文字幕三四五| 福利伊人玖玖国产| 欧美视频第二页| 后入式免费视频| 日韩色| 国产久久一区二区午夜| 久久久久久免费电影| 久久久精品电影| AV九九| 久久精品人妻一区二区三区| 国内偷自视频区视频综合| 天天日B狠狠操| 欧美激情 亚洲色图| 中文字幕交换人妻| 亚洲情色在线| 午夜亚洲WWW湿好大| 熟女精品一区二区三区| www.成人无码| 日韩av一级黄片| 操一区| 最近2018中文字幕在线高清第一页| 欧美激情综合色综合啪啪五月| 中文字幕在线第二页| 亚洲AV无码翔田千里网站| 亚洲欧美国产日本一区二区三区| 射丝袜大香蕉| 日本一级婬片试看三分钟| AND人妻系列| av影片在线观看不卡| 麻豆人妻精品一区二区| 97亚洲中文| 99爱在线视频| 91亚洲图片| 99热99在线| 丝袜美腿操av| 欧美99热| 性色综合网| 久久高清欧美国产| 欧美综合777| 新婚人妻扶着粗大强行坐下| 精品一二三区女同| 人妻少妇被猛烈进入中| 欧美国产有色电影| 久久久久亚洲AV无码专区少妇| 超碰在线人妻不卡| 国产精品视频自拍在线| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 99蜜桃臀亚洲成人在线观看| 91人精品妻入口| 久久国产对白激情浪潮 | 亚洲色图第四色| 午夜寂寞欧美| 亚洲资源网| 久久久久国产精品喷潮免费观看臀| 97视频900| 鸡巴插逼视频| 91超碰在线观看| 大香蕉九九| 美女久久久久久久久久久| 色综合美国| 亚洲黄片免费在线播放| 亚洲精品蜜桃久久久久久久| 亚洲无码?第一页| 久久99深爱久久99精品| 欧美做爰无码A片视频| 嗯嗯不要 视频| 丁香六月婷| 无码不卡亚洲成?人片| 2019AV天堂| 欧美成人性爱视频免费观看| 四虎av在线| 密桃99999| 精品人妻一区二区三区四区石在线| 欧美精品偷拍| 久久艹逼视频| 欧美组图日韩亚洲中文字幕| 欧美韩国你懂得在线| 最近的最新的中文字幕视频| 人妻一区二区三区熟女| 黑人中出21连凳花野真衣| 上海一级黄片| 久久中文字幕在线观看| 久久av网| 无码国产精品午夜不卡(| 久草午夜| 午夜无码熟妇丰满人妻| 人妻少妇色综合| 免费久久一级毛片大黄| www.久久超碰| 春色校园综合网| 男女真人网18| 水多多映视AV| 久久久精品一区二区| 天综合网| 日本高清_区二区三区| 黑人精品欧美一区二区蜜桃| 欧亚乱色熟一区二区三四区| 国产99久久99热这里只有精品15| 欧美宗合色| 91麻豆一二三区| 色噜噜综合在线| 亚洲精品影视老司机| 久夜视频| 人妻少妇久久中文| 四虎AV无码| 日韩AV熟女乱伦| 被男人吃奶很爽的毛片| 香蕉精品二区二区| 一区=区三区视频| 曰韩无码777| 精品国产一区二区三区四区在线看| 夜色97| 宅男午夜在线视频| 在线无码操| 国产美女在线精品免费看| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 亚洲精品一二牛牛| 国产精品伦理| 九九九九九九视频| 91人妻超碰| 色婷婷色99国产综合精品| 伊人黄色片| 成人精品无码| 78m啪啪啪| 免费看国产大AB| 诱惑人妻欧美一区在线播放| 欧美综合站| 99久久综合网| 欧美十八禁网站| 国产极品精品美女视频| 热99这里有精品综合久久| 国产精品久久久久综合| 97色碰| 91欧美www| 十八禁电影伊人网| 亚av顶级裸体一区二区三区四区五区| 久久这里都是精品| 日韩在线观看中文字幕视频| 亚州操逼图| 国产成人无码a| 国产精品久久aV| 色区97| 中文字幕一二三av| 久久久9 9 9精品| 嗯,啊。舔我逼| 国产精品一区人妻精品阁在线| 国产精品国产拍高清AV| 91精品国产日韩欧美综合| 欧美综合国产精品久久丁香| 一二三区操逼国产91| 加勒比综合| 大香蕉久久| 日日操夜夜操天天操免费观看麻豆| 另类老少妇| 天天综合站| 97国产精品久久久久 | 91精品国久久久久久无码| 国产视频一区二区在线观看| 涩五月婷婷| 九月婷婷综合| 长长久久88视频| 久9九综合在线| 欧美的精品的视频| 伊人九九九| 日夜精品| 亚洲成人在线乱码色午夜| 亚洲丝袜二区在线| 欧美天天综合在线| 欧美色图第一页| 爱爱啊啊啊| 国产强奸AV在线| 亚洲国产美女久久久久| 日本不卡在线二区三区| 91爱剪切久久| 美女性91| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 欧美一级国产一级| 思思热在线视频免费| 成人无码在线视频网站| 欧美日韩亚洲一区二区在线观看| 十八禁的黄污污免费网站| 粉嫩不卡一区二区性爱| 亚洲AV无码乱码在线观看性色| 大香蕉久操| 久久精品亚洲成a人天堂| 再深点灬舒服灬太大了好硬好爽| 精品色色| 黄色成品网站| a人片中文字幕一区二区| 亚洲亚洲亚洲天堂天堂 | 伊人网高清| a片在线播放| 日韩久久.一级黄色片| 日韩AC| 日韩另类色图| 99青青草国产视频| 精品人妻视频一区二区在线播放| 三级色影综合网| 久久国产AⅤ| 乱伦Av网| 91 手机在线播放 绯色| 精品然女一区二区| www.成人无码| 2017av无码免费无线播| 亚洲高清无码在线桃色| 开心激情站| 蜜臀99999| 超碰九九| 亚洲高清无毛一区二区| 超碰是碰在线观看| 91啪啪| 色噜噜精品一区二区三| 97久久精品亚洲| 老司机午夜福利视频一区二区| 伊人九九| 国内亚洲精彩视频在线| 日韩AV一区二区三区四四| 国产精品一二三区福利| 亚洲欧美一区二区不卡视频播放| q2午夜理论片夜色av| 欧美,日韩,中文,另类| 国产肏逼网站| 久久曰曰| 裸体1区| 久久久久国色αv免费观看| 无码高清少妇久久| 97色婷婷| 我中文字幕6区 | 欧美双插| 国产亲戚伦亲在线| 午夜久久一区二区无码中出| 偷拍新久久| 超碰在线欧美性爱激情| 99热91| 啊啊啊不要嗯嗯在线观看| 好色综合| 久久精品色欧美aⅴ一区二区| 91jk色拍| 97超碰中文在线| 91午夜无码| 青青草日逼视频| BBBBB97COM| 国产一区二区在线播放量| 久久香蕉网| 啊啊啊啊啊啊啊网址在线观看| 亚洲无992tv| 色五月激情网| 一区二区三区在线日韩影院观看| 四虎午夜影院| 麻豆天美久久91| 久久久久熟女| 99热在线观看| 精品二999| 内射小黄片| 人妻夜夜爽天天爽麻豆三区网站| 中国和日本人色哪个不下载能放| 国产福利在线视频网站| 三上制服丝AV| 伊人天天久久动态图| 婷婷丁香六月天| 91麻豆天美国产欧美高潮| 一牛影视成人片免费| 97色视频在线| 国内毛片热久久思思热| 少妇免费视频| 欧美日韩中文视频播放| 日日干日日| 伊人嫩草| 日韩AV熟女乱伦| 99色日| 色在线综合| 粉嫩国产精品久久粉嫩| 蜜臀久久久99久久久久| 亚洲精品日韩国产欧美| 欧洲小说色图视频另类| 百度百度日本操逼| av优播| 91熟女视频| 蜜臀少妇一区二区| 日韩色香| 亚洲国产精品久久久久婷婷青年| 国产精品96| 台欧久久精品视频| 香蕉视频欧美一卡二卡| 9/A片| 熟女探花啪啪| 欧美久久毛片基地| 日本操逼视频不卡直接放| 欧美中字二区| 日韩免费av片高清无码| 97人肏| 天天日天天操天天射河南省| 亚洲日韩AV视色| 久久精品一区二区三区四区五区| 99丝袜福利在线播放| 久久久97| 久久亚洲不卡一区二区三区| 日本精品一级二级三级| 成人日韩中文字幕| 青青操网| 精品人妻一区二区三区视频| 成人无遮挡毛片免费看| 欧洲与亚洲欧美精品中文字幕| 亚洲国产欧美另类自拍| 欧美综合网1| 尤物国产一区在线观看| 国产精品另类一区大香蕉| 欧美网站免费| 91少妇人妻| 亚洲 欧美 中文 日韩超碰 | 婷婷色五月激情| 99re在线| 欧美色图成人网一区二区| 国产精品久久久无码AV网站| 日本高清熟女久久一区| 日本视频一区二区三区| 亚洲清纯唯美| 色99视频| 亚洲色图欧美激情| 久操高青| 久久东京伊人一本到鬼色| 精品一区二区2| 97超碰美国| 亚洲国产ⅴ高清在线观看| 国产妇女精品视频青青草| 欧美啪啪女女| 亚洲本色精品一区二区久久| 综合欧美日韩在线| 日本色色网| 懂色av一区二区三区天美传媒| 亚洲人妻熟妇三十三区| 人妻精品一区二区在线| 久久精品黄色| 欲射影视| 日韩AV片| 亚洲天堂中文字| 精品国产乱子伦一区二区三区,精品一 | 静品嫩模一区二区| 一区二区三区美女超清| 夜夜騷av、一區二區| 成人av动漫在线观看| 94色色电影网| 久久天天躁日日躁狠狠躁 | 天天干人人看综合| 91碰碰| 亚洲中文人妻色| 日韩不卡av一二三| se吧提供国产乱老熟视频胖女人| 久久婷婷一区| 天天影视射综合网| 亚洲不卡AV在线| 97资源视频| 精品久久97观看在线视频| 欧美日韩亚洲天堂网| 一二三区在线| 亚洲1区2区三区高清中文字幕| 尤物视频偷拍免费| 青青色综合| 99热啪啪| 中文字幕日韩电影人妻| 97日韩超碰超碰中文字幕| 加勒比海成人视频网| 免费看毛片操穴| 福利在线黄片| 国内偷自视频区视频综合| 97 色综合| 久久9免费视频| 国内精品不卡无毒99999| 免费精品福利在线观看| 国内精品a| 97操| 欧美欧美少妇| 91精品婷婷国产综合久久| 在线黄色污污网站| 日韩AV色图| 蜜臀久久99精品久久久老,,| 熟妇的味道HD中文字幕| 国产精品999aaa| 91bbbbbb| 玖玖资源视频一区二区三区| 日韩人妻精品中文字幕| 大香蕉 222| 欧美制服网站美腿丝袜| 97人人草| 婷婷亚洲五月***久久| 精品人体无圣光凹凸| 98人妻精品一区二区色欲| 91亚洲电影| 97视频播放| 大香蕉92| 国外91| 日本九九久久99| 大香蕉在线视频重口味毛片在线| 天天干一干| 婷婷在线精品| 乱欲一区二区| 亚洲国产精品V?在线播放| 日韩一级欧美一级国产一级台湾| 91综合熟女| 色图综合| 97资源久久| 97亚洲在线| 国产精品9999| 欧美日日人人天天| 色天使AV天堂| 啊啊啊啊,啊啊好多水| 亚洲在钱| 国产女主播视频在线观看| 91视频综合在线| 校园春色宗合网| 好舒服视频| AV天堂电影网| www.97在线| 国产av白丝| 日韩国语字幕| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲免费在线探花| 翔田千里无码中出中文字幕| 精品国产av一区二区三区四区入口| 蜜臀视频网站| 亚洲第一视频 欧美风情 日韩| 国产少妇内射| 东北老熟女| 天美传媒婬乱在| 国产精品69久久久久久久| 久久影视二区三区行押| 密臀成人视频久久久| 精产品久久| 欧美中文字幕精品人妻| 好吊色青靑草| 亚洲精品人体| 亚洲啪啪综合?v一区综合精品区| 91精品久久久久五月天精品| 久久在肏| 99热国产精品| 欧美中字不卡| 欧美色图自拍| 96麻豆精品一区二区三区| 性一级黄色录像片网站导航| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 婷婷午夜成人色中色| 曰韩成人免费视频| 日本大片日本一区二区免费高清| 999日韩中文精品观看视频。| 亚州成人a∨| 亚洲的天堂网| 91情色在线| 中文乱码字字幕在线第5页| 黄色电影在线播放综合网站| 日韩欧美字幕亚洲一区二区| 99视频内射三四| 日本三级小说中文字幕| 亚州高清色综合| 高潮9999外国| 熟女精品日韩一区二区三区| 欧美色图第一页| 亚洲精品一区二区精品| 久久香蕉综合一本到3atv| 亚洲色偷偷色噜噜狠狠99网| 欧美性爱一内片一区二区三区| 国产第11页| 青娱乐91| 久久久久免费看少妇A片特黄| 高潮的A片激情扒开一区| 欧美性爱在线无码| 亚洲 中文 女同| 青操影院| 亚洲欧美综合| 欧美亚洲另类在线蜜桃| 国产精品老熟女一区二区| 热久日综合| 97精| 黄色小视频日本txt| 日韩av女优在线免费一区| 亚洲第一色页夜| 五十路三区在线| 一级黄色性爱A级片| 亚洲有码 欧美精品| 99九九久久| 国产精品诱惑| 户外裸露刺激视频第一区| 嗯嗯嗯啊啊啊在线免费观看| 久久精品99久久久久久| 久艹日日日| 新婚人妻扶着粗大强行坐下| 在线观看十八禁| 亚洲脚交| 国产精品蜜臀久久久久无码AV| 操久久久久久| 91少妇香蕉久久精品| 97色碰| 最新国产精品久久精品| 色呦呦、国产精品| 熟妇国产免费一区| 国产福利一区二| 日本天天色| 日韩电影天堂视频一区二区| 97亚洲色图| 久久久久久国产无码精品| 刺激性视频黄页| rivers-china.com| 日韩欧美性吧婷婷乱伦大香蕉| 69精品久久久久中文字幕| 大香蕉十区| 91无码人妻| 欧美亚洲综合高清在线| 免费一级特黄特色大片在线观看看 | 人人摸人人添人人操 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 天天操天天看| 色综91| 丁香五月激情五月| 五十路成人在线视频二区三区| 日韩美女啪啪一区|