亚洲有码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
返回資訊列表
欧美夜色| 欧美色图私拍91| 久久熟女人| 天天干夜夜操一区二区| 黄色欧美性爱视频| 婷婷伊人一区| ai欧美亚洲小说| 大香蕉伊人75| 天堂精品小草| 亚洲天堂7777| 五月婷婷综合网| 一区二区国产视频在线观看| 欧美精品成人一区二区在线观看 | 亚洲色 国产 欧美 日韩| 超碰调教97| a片在线播放| 东京热av男人的天堂| 日韩少妇无码| 花野真衣| 国产浮力影院第1页| 天堂亚洲精品久久老牛| 免费精品中文字幕| 蜜桃传媒视频第一区入口在线看| 无码人妻丰满热妇又大又粗| 91AV天美在线视频| 噜噜噜无码AV一级一级久久影院| 好爽要喷了| 巨爆乳肉感一区二区三区竹菊影视 | xxx0国产在线播放| 人人操人人爽人人操人人| 欧美青青视频| 骚乳在线| 丁香五月电影| 91亚洲综合| 久操高青| 一区二区视频在线播放| 美女网站91| 神马久久69| 九色精品视频导航1| 国产中文字幕在线| 亚洲色悠悠久久88| 超碰中文字幕人妻草一区| 久久亚洲AV无码专区国产精品| 婷婷激情四射| 懂色影视久久| 传媒免费一区二区三区| 亚洲 欧美日韩 另类| 色臀AV| 打av高清| 三级三级三级日本99| 能在线播放的国产三级| 99婷婷一区二区| 国内一区二区三区| 曰韩欧美国产传媒麻豆第一区| 金莲网址| 久久久久久久国产视频| 亚洲国产精品9999在线观看| 亚洲欧美一区二区三区一猛片| 亚洲天堂精品日韩电影| 日韩综合第八区国产精品| 亚洲色图久久精品蜜| 欧美特大AA级黄片| 试看日韩黄片| 日韩AV噜噜噜一区二区三区四区| 992这里有精品| 久操视频资源站公开| 久久亚洲AV无码专区首页| 试看60秒 爽| 蜜臀网址在线| 久久婷婷一区| 国产精品色约约| 日韩AV电影网站| 欧美日不卡| 91麻豆天美传媒HD| 国产蜜臀在线| 国产精品片| 插穴性爱视频在线观看| 国产av白丝| 91nbbbbbb| 国产日韩中文字幕欧美| 激情综合 婷婷五月 红杏| 91麻豆天美国产欧美高潮| 九色97| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 尤物黄色在线观看网站| 久久久久亚洲Av无码专区老牛影视| 欧亚日本情色| 日韩精品-原创伙伴| 欧美五十路熟| 久久熟女人| 伦在线97| 试看日韩黄片| 人人澡综合涩| 密乳视频在线| 后入人妻一区| 超碰欧美97| 国产亚洲日本精品在线| 久久国产精品熟女人妻| 亚洲在线欧美| 五月婷婷激情网| 久久精品99| 手机在线中文字幕国产 | 操我无码| 中文字幕伊人| 婷婷久久久| 亚洲青青草| 午夜福利av电影在线| AV天天在线观看| 97天天综合| 精品国产乱码久久久久A| 午夜福利在线合集| 激情网色| 亚洲女人91| 国产亚洲美日韩Aⅴ中文字幕无码成人| 丝袜美腿制服人妻二区中文字幕| 亚洲情色 无码专区| 黑人无码一区二区| 任你干在线视频| 国产伦精品一区二区三区在线观 | 亚洲欧美日韩电影网站一区 | 中文子幕一二三| 乱伦熟女区| 欧美色爱综合| 久久手机视直播| 国产欧美在线观看免费观看| 欧美另类自拍| 粉嫩国产精品久久粉嫩| 日韩精品一区二区高清| …中文字幕亚洲乱,97人妻无码费视… | 色综合天天| 美国日韩黄片| 91精品免费| 免费视频无码| 无码少妇精品一区二区60岁老人| 国产深夜福利| 亚州图片第一页| 大香蕉免费乱伦视频| 测评在线观看AV| 老司机午夜精品福利视频一区二区 | 人人艹亚洲| 久久久97| 亚洲女优有码无码高清| 四虎精品一区| 日韩精品黄片免费观看| 日本久久999| 天天干天天插| 日韩性爱视频免费在线 | 五月天婷婷久久| 欧美色图亚洲色| 男人成人黄色视频在线观看免费下载| 青青草中文-久久青草精品一区二区三| 99久久精品无码一区二区毛片免费| 亚洲国产日韩精品久久久| 伊人伊人LD| 欧美亚洲日韩16色| 亚洲综合性网址| 欧美操逼视频二区| 一本色道久久综合亚洲二区三区| 国产女人9999| 国产精品一二三| 亚洲揄拍网| 黄色大香焦1级‘′‘| 亚洲一区中文精品| 亚洲美女高潮喷水视频| 亚州熟妇精品| 精品大全99999| 午夜福利在线合集| 青青草日韩免费观看高清在线| AV一二区| 色色97爱| 国产91会所女技师在线观看| 天天干人妇| 家庭乱伦性爱av| 日韩精品人妻一| 五月丁香六月婷| 偷窥自拍亚洲色图| 四虎精品亚洲| 免费AV中文网在线观看| 国产精品无码成人精品| 日韩成人精品中文字幕| 五十路熟女在线不卡观看一区二区| 国产2.3.4区| 天堂性色| 密乳AV免费观看| 亚洲黄网在哪免费看| 色色99| 内射黑人| 欧美性夜| 久久五月视频| 中文字幕文字幕无码一区二区三区电影99| 网友自拍第1页| 中文字幕 国产 精品| 日韩丝袜高跟制服在线观看| 欧美日韩啪啪电影| 一区二区首页| 麻豆久久精品亚洲精品88| 国产亚洲日本精品在线| 嗯嗯啊好大| 天天做天天爱夜夜爽毛片试看| 婷婷丁香成人| asc国产精品| 中文字幕亚洲永久精品| 久久久久久久久国产| 日产操逼| 久久久久久9999| 日本一区二区三区免费观看| 一色网男人的天堂| …中文字幕亚洲乱,97人妻无码费视… | 鸥美极品| A片 AV一级在线播放观看免费| av线电影| 91爆操视频| 丰满少妇高潮无码| 国产精品久久久久久久AV大片 | 亚洲精品国产精品乱码不卡| 国产精品毛片?v一区二区三区| 久久精品老司| 久久老子无码午夜伦不卡| 四虎在线视频| 欧美日韩中文字幕不卡| 91一区二匹| 日本一区二区成人在线| 亚洲欧美九九九| 欧美一级特黄淫片在线观看| 爱欲AV| 国产婷婷综合在线观看| 青青草狠狠撸| 性爱久久| 91人妻视频| 日本精品人妻少妇一区二区| 91人人臊| 激情五月婷婷| av在线资源| 国产无套粉嫩白浆在| 国产精品毛片?v一区二区三区 | 亚洲天天操| 久久久久久中文| 久久亚码| 亚州欧美在线| 免费试看60秒| 成人免费性爱视视| 国产一区二区免费福利片| 欲色综合| 91综合色噜噜| 午夜寂寞欧美| 日本三级韩三级99久久| 精品免费一区二区三区在线亚洲人成| 偷拍欧美综合| 中文字幕AV片| 91精品国产91久久久久久久久久久久| 黄色一区三区| 精品人妻一区二区三区在| 九九碰九九爱97超| 亚洲中文一区二区三区| 亚洲五月婷| 蜜桃色色网站视频三区| 91九九九吃| 992视频一区| 1000部熟女视频在线观看| 国产精品 久久久精品一牛| 尤物网址| 特级大荫道BBwBBwBBW| 精品亚州18| 97中文综合| 亚洲天堂精品日韩电影| 99久久婷婷国产综合精品草原| 欧美三级一级| 亚洲欧美电影| 亚洲一区二区三区欧美日韩| 桃色六月天| 中文字幕乱亚洲美女精品一区| 亚洲好看强奸乱伦| 熟女在线视频| 91色综合| 91亚州欧美| 欧美美女视频| 国产成人+综合亚洲+天堂| 青青青青草av在线观看| 成 人 A V免费视频在线观看| 蜜乳AV一区二区三区四| 色阁阁AV综合网| 免费综合亚洲中文| 一牛一区二区三区久久| 国产无码精品高清| 午夜精品久久久99| 日韩精品色呦呦| 久久精品天美| 亚洲图片色图欧美另类| 久久最新视频免费观看| 在线免费观看日韩一区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 欧美在线播放| 午夜成人福利影视| 岛国色情视频在线观看| 亚州综合AⅤ| 乱伦AVxx| 超碰69| 国产精品自在线发布| 神马久久久久久久久久| 少妇一区二区三区| 免费中文在线| 清纯唯美亚洲综合| 99re3这里只有精品| 91亚洲欧洲| 极品丝袜无码| 国产熟女完整版中字| 国产一区二区精品久久久不卡蜜臀| 免费在线观看AV无码网站| 六月丁香啪啪| 欧洲自拍第一页| 天天综合91| 97视频免费在线观看| 蜜臀无码视频在线观看| 2025年A片视频精品| PMv在线观看| 视频黄色国产一级| 操逼网站视频漫画国产| 亚洲人妻AV| 91成人国产综合久久精品蜜月| 色色色色综合网| 天天操天天干一区二区 | 6080YYY午夜理论片在线观看| 精品国产无码中文| 97久操| 国产亚洲国产超碰| 屌妞视频久久久久久久久久久久| 无套内射人妻在线播放| 亚洲综合另类小说色区亚洲成av人片在www | 96精品久久久久久久久久| 26uuu性| 久久国产999| 亚洲欧美高清无码| 97网址www| 人妻夜爽夜夜爽| 啊啊啊啊啊好大好舒服想要| 97天天搞在线| 人妻嗯啊啊在线播放| 日本免费专区| 欧美色视频在线| 99re国产精品视频| 两女互慰AV高潮喷水在线观看| 91久热| 粉嫩久久久极品| 亚洲欧洲无码97久久精品| 久久精品亚洲婷婷| 丁香五月色| 色区久久| 国产精品青青草| 日韩乱码Av| 男人的天堂成人的社区| 暖暖精品二区三区观看| 99热97| 人妻精品4K4K4K4K4| 热天堂一区二区| 少妇天堂网络| 成人网欧美风情| 97这里都是精品| 欧美丝袜激情| 在线视频97| 伊人嫩草| 日韩AV电影网站| 欧美瑟综合| 激情黄色五月天| 日本 成 人 小说 电影 一区二区| 天天综合-91入口| 欧中日成人免费影视| 精品人妻一二三| 综合 青草 伊久久 影院 综合 | 日韩大香蕉AV影片| 操国产高清| 中国少妇啪啪视频| 亚洲玖玖爱| 999熟女精品| 人妻在线大香蕉| 久久鲁夜| 五月天精品| 亚洲综合有码| 人人妻人人澡人人爽久久av| 亚洲精品国产熟女久久久| 97精品中文字幕| 久久偷偷色综合蜜桃| 麻豆人妻偷人精品无码视频| 无码国产精品96久久久久孕妇| 99999re| 欧美男人的天堂| 啪啪自拍九九综合| 免费观看网黄| 久久人人妻| 精品国产精品一区二区| 天天天乱色综合全| 中文熟女五十乱码在线| 啊啊啊慢点| 日韩簧片免费看| 一块操欧美| 日本天堂网| 韩国毛片一区二区三区| 亚洲色阁| 久久无码电影| 天天爱综合网| 亚洲超碰AV| 五月婷婷色| 热热色色综合| 午夜操逼不卡| 一牛影视久久久一区二区三区| 激情综合av| 欧美色图91| 少妇人妻好深太紧了vr91| 白嫩嫩一区| 99爱爱| 精品视频一区二区| 激情五月婷婷综合| 色偷偷男人的天堂麻豆| 老司机天天操| 久插综合| 国产中文字幕在线点播| 日本人妻一区二区| 夜夜欧美| 9久久9综合| 亚洲天天操| 欧美黄色大香蕉一区二区| 国产久久一区二区| 日本三级一区二区 在线| 亚洲图片欧美91N| 蜜臀AV午夜精品久| 91女神在线视频| a片自拍直播视频| 91丝袜在线观看视频在线观看| 超碰美女97| 午夜天堂网| 日韩免费av片高清无码| 色老久久| 五月丁香六月激情综合| 夜夜欧美| 国产精品高潮久久AV| 尤物视频一区| 暴力av在线| 天美国产精品| 亚欧高清在线| 超碰精品国产无码| 亚洲午夜蜜臀| 欧美精品四区| 大香蕉一区二区在线观看.| 大香蕉青青9| 久久超碰爱| 伊人激情五月天一区二区| 97色欧州| 天天日少妇逼AV| av一区二区三区不卡| 亚洲综合射| 国产精品91一样| 伊人黄色视频免费观看| 国产成人91一区二区三区| 国模不卡一本二本三电影| 久久精品国产亚洲AV片多多| 亚洲97| 9997se| 在线97在线| 情色日播放AV| 久久久久久久78| 成人性爱视频在线看| 国产精品人妻免费精品| 欧美美女视频| 亚洲欧美综合图片| 欧美日韩精品久久久久东北老熟妇| 欧美在线官网| 狼人久草| 亚洲久热| 天天综合日韩网| 亚洲欧洲第二视频在线观看色图| 中文字幕视频在线观看| 日韩福利综合一区| 91搡老女人老妇女老熟女歌词翻译| 嗯嗯啊啊的视频| 亚洲 欧美 另类 日韩 人妻一区| 熟妇高潮一区二| 美女91在线观看| 大香蕉一人在线| 国产精品suv一区| 欧美精品91| 少妇天堂网络| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 综合伊人激情| 91快色色色色色| 可以免费观看的日韩av毛片| 九月AV| 97欧美性爱| 国产AV无码AV| 丁香六月婷婷久久综合| 欧美亚州手机在线| 国产免费久久精品99re韩国| 外国91| 欧美黄色片在线播放| 狠狠色伊人亚洲综合网站色| 亚洲精品一二牛牛| 91 亚洲 欧美 日韩 国产 综合| 人妻 丝袜美腿 中文字幕| 亚洲Av无码成人精品国产| 2020中文字幕| 蜜臀精品1区2区| 青青草中出视频| 日韩操啪| 欧美日韩夜夜| 亚洲,欧美,综合网| 日本狂喷奶水在线播放212| 亚洲国产精品久久久久久久久久| 亚洲AV不卡在线观看尤物| 亚洲性综合11| 久久鲁干| 天天日骚逼熟女| 激情小说日韩无码| 蜜臀亚洲中文| 白丝一区| 中文字暮97| 国产精品乱码久久久久久久久| 91搞逼视频| 中文字幕视频2区| 中国黑人三级片网站上区| 亚洲天天更新| 国产农村妇女一区二区| 99热精品在线观看| 天天做日日爱夜夜爽| 人妻插插人妻人| 国产suv一区二区三区6| 日本99热| 中欧人妻丝袜中文字幕| 久久久久精| 久久精品一区二区一8| 99爱视频| 国产午夜精品在线观看| 欧美曰韩国产精品| 亚洲国产奇米影视久久| 蜜桃AV天堂| 黄页网站免费高清在线观看| 中文字幕AV片| 久久激情亚洲精品无码?V| 九九国产| 尹人免费观看视频在线| 你草精品在线视频| 一类无码操逼视频| 97免费在线观看| 91夜色chaopeng| 午夜福利免费福利视频| 久久大香蕉97| 人妻酒店出差被中出免费在线播放| 一个国产在线综合网站| 情色图区| 色超碰综合| 玖玖综合.com| 1禁看欧美黄片免费看| 在线午夜成人无码视频| 国产精品在线一区二区| 91蜜桃婷婷狠狠久久综合9色| 97视频免费播放| 992这里有精品| 黑人狂躁日本妞一区二区三区| 一区二区三区高清 | 激情五月天婷婷| 视频不卡中文字幕| 91中出在线| 色阁阁AV综合网| 偷拍 精品 另类 四区| 26uuu国产| 天天色播亚洲综合网站| 岛国黄| 富女玩鸭子一级毛片| 丰满人妻-区二区三区免费看| 性性久久| 日韩BBN| 91中出在线| 97视频免费播放| 中文字幕制服诱惑| 亚洲91色| 亚洲成人精品在线一区| 五月丁香久久| 嫩呦国产一区二区三区AV| 亚洲同性aV综合| 伊人午夜福利视频| 人妻美腿丝袜日韩| 理论久久婷婷网8| 欧美性性性| 无码人妻一区二区三区免费九色| 大香蕉懂9| 东北女人性交| 少妇综合网| 无码久久国产| 国产精品亚洲一区二区三区四区| 一区三区啪啪| 91精品电影18| 超碰伊人在线| 青青草中文字幕| av无线看| 国产极品一区二区三区三州| 九九黄色网| 爽爽爽免费视频| 欧美成人精品一区二区男人蜜臀| 亚洲中文字幕熟女少妇一区二区| 99亚洲精品| 日韩999| 超碰97最新人妻| 97日视频| 激情五月天网站| 久久免费看高潮毛片韩国| 蜜桃狠狠色伊人亚洲综合网站| 欧美日韩亚洲少妇寂寞影院正在播放 | 丰满欧美少妇| 久9综合在线| 69av一区二区三区| 久久女人视频| 加勒比av中文| 一起草欧美| 欧美大香蕉卡久久| 久久久111| 欧美传媒| www.久久最新地址| 久久婷婷色综合一区二区三区| 五月香婷婷| 日本好吊色视频| 人妻天天爽天天爽三区| 五月天玖玖资源站| 欧美性爱一区| 国产精品成久久久久午夜午夜| 密乳AV免费观看| 亚洲AV免费在线观看| 91男同| 欧美性爱无码一区二区三区| 激情综合五月| 天天影视之亚洲综合网| 99久久久久久亚洲精品不卡| 久操婷婷| 亚洲天堂一二| a级成人毛片免费视频高清| 啊啊啊快操我视频| 思思久热在线精品66| 亚洲成人性爱在线观看| www.91欧美| 国产精品视频自拍在线| 一区久久久二区| 男女啪啪网站免费视频| 综合自拍| 蜜臀久久99精品久久久久久成人小说 | 大茄子熟女AV导航| 国产日本久久免费精品| AV99热18这里只有精品| 国产精品视频麻豆入口| 91nbbbbbb| 手机在线中文字幕国产| 亚拍在线| 久久AV无码网址| 欧美亚州综合网图片| 欧美日韩丝袜| www.yeyecao| 美女丝袜激情小说| 青青草日韩无码| 2024年最新色情网站在线观看| 欧美精品成人亚洲| 人人贴人人摸| 东北女人高潮视频| 夜夜狼人妻| 亚洲美女自拍偷拍视频| 美女啊啊啊啊啊| 欧美激情色婷婷花野真衣一区二区| 亚洲国产一区二区入口| 欧美日韩小说| 99xav| 亚洲AV永久无码一区仙野| 亚洲影视综合| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 五月丁香激情综合网| 久久神马| 欧美第五页| 久久、1234| 色五月婷婷在线| 欧美色视频在线| 中文字幕精品久久久久人妻红杏ⅰ| 69精品久久久久中文字幕| 九九精品99| 欧美高清18A片| 91亚洲欧美| 怡红院成人视频| 欧美超碰人妻97| 蜜桃视频一区二区三区在线观看| 婷婷五月天成人网| 特级毛片特黄久久免费看| 天天影视之亚洲综合网| 欧美日韩高潮喷水91| 91一区二区| 国产精品蜜乳AV| 2017天天拍大香蕉| 欧美伊人电影| 亚洲九九爱| 日本女厕偷拍| 精品久久久久,69国产成人精| 国产成人无码久久精品| 精品v日韩欧美国产| 极品综合| 国产精品久久久久久久AV大片| 国产久久久| 伊人九九九| 99无码狠狠久久| 久久久久9999妇女| 亚洲中文字幕乱码无码一区二区 | 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲情欲| 欧美丝袜中文字幕07在线| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美区亚洲区偷拍区| 日韩无码一级黄色av片| 亚洲AV麻豆Aⅴ无码电影一| 91欧洲国产成人久久精品网站| 欧美色另类| 97超碰站| 91大神精品长腿在线观看网站| 97天堂| 综合色久欲| 无码人妻一区二区三区四区老鸭窝| 中文字幕在线免费观看 | 超碰97久| 性色综合网| 国产精品免费日韩| 亚洲第一无码播放立川理惠| 亚卅熟女乱色| 超碰免费在线| 久久久久骚| 欧美中文字幕日韩在线| 97 国产一区| 五月天精品| 99re国产精品视频| 99re这里只有精品3| 热热色综合网| 金莲网址| 国产传媒日本欧美专区| 亚洲97综| 涩五月婷婷| 久久久精精精| 大屁股熟女一区二区三区| 99色色| 激情四射五月天| 国内毛片欧美香蕉精品| 色五月亚洲| 大香蕉懂9| 激情综合五月婷婷| 九t超碰| 亚洲精品三| 中文熟女五十乱码在线| 久久久久久日韩| 久久国语| 欧美人妻精品一区二区| 日日黄色三级网站| 免费黄色片。| 国产诱惑| www.丁香五月| 亚洲se91| 色眯眯射| 丁香六月东京热| 91青青草| 久操视频资源站公开| 九九九精品美女| 亚洲色图亚洲无码强奸乱伦| 久9久9久9久9久9久9| dy888午夜老子影视达达兔| 日本国产欧美高清在线| 精品久久久一本一道| 欧洲一级性爱视频在线观看| 亚洲 欧美 另类 综合 偷拍| 黑人娇小av在线播放| 人妻在线中出视频| AV乱伦专区| 久久久久久久伊人精品| 亚洲综合网电影91| 日韩成人私密一级精品av| 欧美一二三区四五区| 亚洲字幕一区二区| 亚春色色| 北京美女一区二区| 久久久久亚洲av综合波多野制衣| 蜜臀va69| 久久久久久91香蕉国产| 自拍偷拍 日韩无码| 97爱爱爱| 狠综合网| 久久久精品国产亚洲伊人| 十八禁的黄污污免费网站| 久久久精品| 色老大| 日日夜夜骚| 91人妻超碰| 久99| 五月香婷婷| 伊人女女资源在线观看| 97精品熟女少妇一区| 久久精品国产亚洲5555| 91狠狠综合久久| 91激情国产| 亚州欧美综合| 超碰激情808| 欧美不卡在线美女| 五月婷在线| 清纯唯美综合亚洲| 97在线免费看| 欧美成人性爱视频大全| 久久精品国产亚洲AV片多多 | 亚洲成人网站在线观看| 无码精品久久久天天影视| 99啪啪视频| 色色色色日本| 综合自拍| 久久伦理视频久久大香蕉视频| 中文字幕在线24| 性一交一乱一交A片久久四色| 亚欧性爱ab| 黄片视频,下载| 日韩欧美传媒一区国产| 91亚洲欧洲| 啪啪视频免费在线观看| 百度百度日本操逼| 色哟哟综合| 噜噜噜在线视频| 日韩乱中文| 九月婷婷久久| 25国产精品免费观看| 日韩有码一区三区| 人人扣人人操| 亚洲欧美精品一区天堂久久| 欧美制服网站美腿丝袜| 欧美黄色图片| 超碰欧美在线欧美| 超碰97 线线 在现| 激情啪啪拍91| 中文字幕第9页萱萱影音先锋| 亚洲色图尤物视频| 婷婷久热| 久久久久久久久久黄色网 | 中文字幕jul-617人妻熟女| 色色色色色色色色色色色色色色综合| 欧美九9 9 9| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 欧美 亚洲 第一页| 一级性爱网| 亚洲综合婷婷| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 人人色人人射人人妻| www四虎| 天天狂操夜夜狂日| 国产探花精品在线| 区一在线观看| 大香蕉久久| 噜噜吧,噜噜色,噜噜| 久久性生大片免费观看性| 四虎影视永久在线免费| 中文字幕精品丝袜| 97在线观看| 首页亚洲国产高跟丝袜诱惑视频 | 91性高潮久久久久久久久| 亚洲 欧美 另类 日韩 人妻一区| 夜夜爽夜夜| AV天天在线观看| 91综合网在线| 一本一道人妻久久一区二区三区| 国产又长又大又粗的视频| 成人美女av| 极品出轨视频网站| 超碰人人超在线观看| 91中文字幕在线观看| 日本精品第一视频在'| 国产熟女完整版中字| 亚洲风情综合网| 欧美熟妇色| 精品视频一二三中文| 亚洲在线综合| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 国产999精品久久久久久| 欧美色图自拍| 日本三级A片网站com| 欧美日韩m| 亚洲欧美国产中文视频| 亚洲吊色| 日韩熟女乱伦中出| 日本不卡在线二区三区| 无码操逼视频一下| 麻豆人妻精品一区二区| 福利色色| 天天爽天天| 91成人18| 欧美综色欧| 日产狠狠干| 亚洲怡春院| 精品欧美А∨无码黑人大荫蒂 | 另类小色呦| 日本性一区| 思思热久久成人| 天天看人人操屄犊摸阴| 国产精品久久久久久久久久梁医生| 美女干逼2| 麻豆国产免费影片| 啊啊在线| 天堂资源欧美| av绯色| 欧美天天在线| 97av在线视频| 国产精品美女| 97超视频在线观看| 日本www操操操| 国产精品久久久777| 91精品人| 经典丝袜一区| 黑丝少妇| 人干人人人操人人摸| 欧美 亚洲 综合 制服 另类| 国产综合网站在线播放 | 亚洲天天操| 色色色欧美| 美女AV一区二区| 性欧美另类高清| yiqicaoav| 91在线视频免费中出| 性生活性生大爱77AV国产| 三级色综合| 丰满高潮18xxxx| 精…码一二三区| 男人的天堂2018东京热啪啪啪| 亚洲人妻精品一区二区| 一区二区三区色综合| 男人的天堂欧美| 久久国产三区| 黄片www.| 一二三四视频中文字幕在线看| 亚洲精品国产熟女久久久| 婷婷久草一区二区三区| 超碰在线香蕉| 91天天看| 欧美日本天堂| 99色骚| 亚洲情色婷婷五月天| 亚洲欧洲小说图片视频 | 亚洲无码精品AV久久久| 91欧美另类| 殴美大黄片| 国产夫妻性生活视频| 99国产精品免费| 五月婷婷丁香| 国产精品久久久久久久久久久久久久| 人妻娇喘 激情视频| 久久6热精品99视频| 国产风韵犹存熟妇三区| 干B网| 国产精品一级毛片不卡视| 人妻熟女av国产网站| 性爱av网站| 看看日B真人视频| 久久爽爽精品| 啊啊啊啊视频免费| 亚洲人妻一区二区三区| 少妇滛荡视频| 欧美综合站| 亚洲一区中文精品| 我要色综合网站| 亚洲第一页综合在线| 熟女在线视频| 婷婷丁香久久| 亚洲导航深夜福利| 岛国网址国产| 嗯嗯嗯好爽| 精品国产人成在线| 青青草十区九区爱夜| 啊啊啊啊二区好大| 一牛影视久久久一区二区三区| 亚洲天堂五月天国产| 高凊专区人人操| 国产日韩区| 精品国产a∨一区天美传媒| 欧美日本天堂| 91jk色拍| 精品久热| 免费综合亚洲中文| 亚洲国产综合图区中文字幕 | 亚洲一区二区三区春色| 久96热在线观看视频| 极品综合| 日本三级日本三级99| 约操熟妇| 丁香六月激情| 精品国产污一区二区三区| 绑缚麻绳人妻寝取完整版| 久久亚洲色图中文字幕| 99999久久精| 午夜福利1区2区3区| 国产高潮AA片免费看| 亚洲精品97在线| 二级毛片| 久久久久人妻二区精品叶可怜| 中日韩熟女| 久热久一区二区三区| 成人情色综合网| 天美传媒麻豆一区二区三区国产精| 肏逼视频日本| 日韩AV片| 97国产综合欧美| 日韩成人在线性爱视频| 五月天激情小说| 亚洲高清在线se| 一线黄色免费性爱片| 大香蕉伊人网WWWn0n| 免费精品AB| 操屄不卡视频| 黄久在线| 亚洲乱码国产乱码精网站| 欧美亚洲综合色| 四虎精品永久在线观看| 黄片在线免费在线观看| 国产精品一二三区福利| 亚洲色图8| 欧美日韩中文亚洲v在线综合| 久久综合女优| 一级黄色性爱裸体视频| 人人乐大香蕉| 精品人妻一区二区三区四区不卡在| 澳门特级毛片免费观看| 人妻少妇精品无码专区二区密桃| 免费看A片毛毛片在线播| 视频黄站| 综合网欧美在线| 国产成年女黄特黄| 久久成年精品| 日韩一级免费性爱| 久草线上视频免费看| 日本午夜久久电影| 青青草大香蕉视频| 黑丝91视频| gogogo免费高清看中国国语| 青青草在线视频播放器| 91久久99久久91熟女精品| 无码二级三级| 天天懆天天日| 久久黄色视频一区二区三区 | 91性网| 久操99| 欧美一二三级精品在线| 四虎884a| 色色色欧美| 无码 黑人一区二区三区| 后入福利视频| 91九色网| 性色生活片久久毛片婬片免费放女人一级毛片 | 天天综合欧美| 97伊人超碰| 91老熟女视频| 国产日韩手机视频在线| a片久久久久久久久久久久| 欧美一级黄色免费专区| 日日噜噜夜夜狠狠视频无| 中文字幕精品一区二区精| 青草av在线| 成人av福利在线观看| 国产欧美日韩精品中文| 日韩AV片| 熟妇最新先锋一二三区| 99色热国产视频精品| 亚洲国产福利视频| 97干综合网| 伊人国产av| 97人人中文网| 国产欧美一区二区| 天天日夜夜爽| www鬼畜国产男人的天堂| 伊人久久婷婷| 久久婷婷影院| 色色色综合网| 99色热国产视频精品| 欧美人人操人人插| 超碰是碰在线观看| 北约熟女超碰| 74成人在线| 精品人妻1区| 中文字幕亚韩| 操99| 99精品视频在线观看免费| 超碰在线91| 五十路人妻在线| 五月天黄色av| 五月丁香影院| 五月天综合网| 亚洲 欧美 中文 日韩超碰| 亚洲s在线观看| 国产亚洲日本| 精品免费囯产一区二区三区| 亚洲男人的天堂一区二区| 九九激情网| 欧美亚洲日本激情在线| 久久九九网| 99无码| 91无码中出人妻视频| 日韩人妻免费精品| 3028国产精品| 国产成人+综合亚洲+天堂| 国产亚洲色停停久久99精品91| 91精品国久久久久久无码| 操逼内射干逼白丝91| 天天弄欧美| 欧美后入视频| 少妇色综合| 后入合集| 97超碰欧美手机| 久超超碰| 久久仑合| 日日骚精品视频| 日本二三四区| 五月天日日操夜夜操| 亚洲天堂男人的天堂| 精品久久无码午夜福利| 国产综合日韩伦理| 天天色天天干天天爱| 久久春色| 香蕉视频欧美一卡二卡| 任你干在线视频| 歐美性天天| 色天堂综合| 黑人与人妻| 欧美91久久久久| 亚洲一区二区在线观看91| 亚洲欧美大香蕉| 亚洲天堂中文字| 成人小电影网站tex| 欧美日韩大陆黑人少妇99| 久久综合五月天| 免费精品人妻一区二区三| 国产97av| 欧美激情 一区| 天堂射| 久超超碰| 国产伦精品免编号公布| 国产精品亚洲一级av第二区| 日韩内| 综合网亚洲在线| 中文字幕欧洲有码| 久久一二三四不卡 | 亚洲天天影视色综合| 嗯嗯嗯啊啊啊操的我好爽| 18禁超污无遮挡无码免费网| 国产一区免费午夜视频| 日韩成人高清一区二区| 久久啊啊啊| 日韩人妻丝袜中文字幕| 国产日韩美女小穴视频网站不卡| 试看60秒| 亚洲日韩欧美一区二区| 久久久久久久久久久久久9999| 亚洲系列第一页| 色区97| 本道综合精品| 97精品免费| 午夜福利1区2区3区| 日韩性爱1级片视频| 1769国内精品视频| Av手机版天堂网| 影音先锋乱| 九九AV| 天天天肏屄欧美| 激情小说亚洲视频| 97国产中文| 操东北女人|