色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網運營的一線實戰(zhàn)洞察。

RP2040 MicroPython實現UART DMA零CPU干預實戰(zhàn)

RP2040 MicroPython實現UART DMA零CPU干預實戰(zhàn) 有朋友在群里問RP2040 上跑 MicroPythonUART 能不能做到 DMA 搬運、CPU 徹底撒手我第一反應是能但別指望標準固件會給你現成接口。RP2040 的 DMA 控制器是真的正經外設只是 MicroPython 官方固件默認不暴露 DMA API所以這事得自己動手。這篇內容我會把 RP2040 DMA 的原理、UART 的零 CPU 干預怎么實現、以及我在 MicroPython 固件里加自定義 C 模塊的完整過程都拆開講清楚。適合已經在用 MicroPython 寫 Pico 程序、覺得串口收發(fā)占 CPU、想用 DMA 又不知道從哪下手的開發(fā)者??赐曛辽倌苷罩桨赴炎詈唵蔚?DMA 串口接收跑起來。1. 為什么要把 UART 交給 DMA1.1 RP2040 的 DMA 控制器到底是什么水平很多人一聽“單片機上的 DMA”第一反應是 STM32 那套。實際上 RP2040 的 DMA 配置能力相當完整有 12 個獨立通道每個通道都可以單獨設置源地址、目的地址、傳輸計數和數據寬度。數據寬度支持 8 位、16 位、32 位也就是字節(jié)、半字、字三種粒度。它還能配置地址遞增方式可以固定源地址、遞增目的地址也可以反過來。最關鍵的一點是RP2040 的 DMA 請求可以由外設直接觸發(fā)。UART、SPI、I2C、ADC、PIO 狀態(tài)機這些外設都會產生 DREQ 信號DMA 收到 DREQ 才搬一次數據。這就意味著 DMA 不需要 CPU 干預也不需要 CPU 用定時器去“猜”外設什么時候有數據。只要外設準備好了硬件就會自動完成一次搬運。另外RP2040 DMA 還支持通道鏈式觸發(fā)一個通道完成后可以自動觸發(fā)另一個通道配合雙緩沖、多段數據搬運很方便。它這個鏈式機制不是部分高端芯片那種完整的內存描述符鏈表但已經足夠應付絕大多數嵌入式場景。對 UART 來說我們通常只關心三個東西源地址、目的地址、傳輸計數再配一個 DREQ 觸發(fā)源剩下交給硬件就行。1.2 傳統(tǒng) UART 收發(fā)為什么費 CPU先算一筆賬。串口 115200 波特率、8N1 格式每字節(jié)實際占用 10 bit那么 1 秒最多傳輸 11520 字節(jié)。如果用最簡單的每字節(jié)觸發(fā)一次中斷中斷頻率就是每秒 11520 次。 RP2040 主頻 133MHz處理一次中斷壓棧、進中斷服務函數、讀 FIFO、清標志、再恢復現場時間雖然很短但高負載下還是會影響主循環(huán)。如果同時開兩三個串口或者在一個中斷里去解析數據協議主循環(huán)的實時性就會下降。發(fā)送側也一樣。你要把一個 1KB 的 buffer 發(fā)出去傳統(tǒng)寫法是一個字節(jié)一個字節(jié)往 UART 的 TX FIFO 寫。就算 FIFO 能緩存一部分數據中間也免不了判斷 FIFO 是否滿、是否需要等。這些操作本身不復雜但頻率一高就會碎片化占用 CPU。DMA 的思路是把“搬數據”這件事完全交給硬件。發(fā)送時CPU 只需要設置 DMA 把內存數據搬進 UART 的發(fā)送 FIFO發(fā)完后 DMA 產生一次中斷接收時DMA 自動把 RX FIFO 里的數據搬進內存收到預定長度后產生一次中斷。整個傳輸過程中CPU 不參與逐字節(jié)搬運所以叫“零 CPU 干預”。注意這個零不是絕對意義上的 CPU 完全休眠而是沒有逐字節(jié)參與最后該有的完成中斷還是會有。1.3 MicroPython 在這件事上的特殊尷尬MicroPython 的問題在于官方 RP2040 固件把 DMA 藏得很深。你打開machine.UART的源碼能看到它內部其實用了 Pico SDK 的底層驅動但上層暴露給你的只有read()、write()、any()這些方法。這些方法內部處理了中斷和緩沖區(qū)對用戶看起來確實“好用”但 CPU 并不是零負擔。還有不少人嘗試用machine.mem32直接操作 DMA 寄存器。這個思路很直接RP2040 的寄存器地址都是公開的理論上你可以用 Python 把 DMA 通道配置出來。但實際跑起來會發(fā)現幾個問題一是 Python 解釋執(zhí)行寄存器操作太慢配置十幾個寄存器可能就要幾百微秒二是你沒法在 DMA 中斷服務函數里穩(wěn)定地跑 Python 回調稍不留神就會死機或者漏數據。所以要玩真正的 DMA最靠譜的路線不是硬用純 Python 去操作寄存器而是給 MicroPython 編譯一個自定義 C 擴展模塊把 DMA 能力封裝成幾個 Python 函數。后面我會詳細講這條路。2. 零 CPU 數據傳輸的方案選型與原理拆解2.1 方案一C SDK 直接寫不繞彎如果項目沒有“必須用 MicroPython”這個限制那最正統(tǒng)的方案當然是直接用 C 寫Pico SDK 提供了完整的 DMA API。接收流程大概是這樣的int ch dma_channel_claim_unused(true); dma_channel_config c dma_channel_get_default_config(ch); channel_config_set_transfer_data_size(c, DMA_SIZE_8); channel_config_set_read_increment(c, false); channel_config_set_write_increment(c, true); channel_config_set_dreq(c, DREQ_UART0_RX); uint8_t buf[256]; dma_channel_configure(ch, c, buf, // 目的地址內存 uart_get_hw(uart0)-dr, // 源地址UART 數據寄存器 256, // 傳輸計數 true); // 立即啟動這段 C 代碼做的事非常清晰DMA 通道源地址固定指向 UART0 的 DR 寄存器目的地址遞增指向內存?zhèn)鬏?256 字節(jié)每傳一個字節(jié)就通過DREQ_UART0_RX等待 UART 收到新數據。完成后你可以自己寫一個 DMA 中斷服務函數置一個標志位讓主循環(huán)去處理數據。用 C SDK 寫這個問題不大但很多人就是不想放棄 MicroPython因為業(yè)務邏輯用 Python 寫實在是太快了。所以如果既要 MicroPython又要 DMA那就得走下面的方案二。2.2 方案二給 MicroPython 編譯 dma_uart 擴展模塊MicroPython 允許你在固件里加入 C 擴展模塊然后把模塊里的函數注冊成 Python 的 import 對象。比如我們可以做一個dma_uart模塊提供start()、done()、received()這幾個方法底層直接用 Pico SDK 的 DMA API上層 Python 代碼只管調用。這個方案的原理并不復雜。MicroPython 本質上是一個 C 程序它執(zhí)行 Python 字節(jié)碼同時也能調用編譯進固件的 C 函數。我們寫一個 C 文件把 DMA 初始化和中斷處理封裝好再用 MicroPython 的模塊注冊機制掛到系統(tǒng)里。編譯固件之后Python 里import dma_uart就能找到這個模塊。好處是DMA 的實時性要求由 C 代碼保證Python 側不需要高頻操作寄存器而業(yè)務邏輯、協議解析、UI 交互這些不要求實時的部分還是可以繼續(xù)用 Python。壞處是你需要花點時間搭一套交叉編譯環(huán)境第一次編譯固件會有點折騰。2.3 方案三PIO 狀態(tài)機不是 DMA聊到 RP2040總有人會問“能不能用 PIO 替代 DMA”。PIO 是 RP2040 獨有的一組可編程 IO 狀態(tài)機可以自己編指令模擬 UART、SPI、I2C、WS2812 這類協議。它的靈活性確實很高但它和 DMA 解決的問題不一樣。PIO 狀態(tài)機有自己的 RX/TX FIFO數據會流進狀態(tài)機的 FIFO但把 FIFO 里的數據搬到內存仍然需要 CPU 或者 DMA。也就是說PIO 解決了“如何按協議收發(fā)”的問題DMA 解決了“如何不經過 CPU 搬數據”的問題。 MicroPython 的rp2.PIO類能讓你加載 PIO 程序但不會直接給你一個“讓 PIO FIFO 自動搬到 buffer”的高層接口。大多數情況下你還是要通過 PIO 中斷或輪詢去讀取數據CPU 并沒有真正解放。如果你的目標是 UART 零 CPU 干預那就老老實實用硬件 UART 加 DMA別在 PIO 上繞圈子。2.4 選型結論把三個方案放一起對比一下方案CPU 占用實現難度適合場景C SDK 直接寫極低中純 C 工程需要最高性能MicroPython 自定義 DMA 模塊極低較高想用 Python 寫業(yè)務又需要 DMAMicroPython 純 Python 操作寄存器高高不建議只適合學習寄存器原理我自己的建議是如果只是 9600 波特率收發(fā)幾字節(jié)傳感器數據machine.UART那點 CPU 開銷根本不用在意但如果你要跑 115200 甚至更高波特率還要連續(xù)收發(fā)大塊數據或者主循環(huán)同時要處理顯示、網絡、按鍵那 DMA 模塊就值得折騰。3. 實操過程手寫一個 dma_uart 模塊并跑通3.1 準備編譯環(huán)境第一步是準備編譯 MicroPython 固件的環(huán)境。這里以 Linux 環(huán)境為例Windows 用 WSL 也可以。你需要裝這幾樣sudo apt update sudo apt install gcc-arm-none-eabi cmake ninja-build git python3然后拉取 MicroPython 源碼并編譯交叉編譯器git clone https://github.com/micropython/micropython.git cd micropython make -C mpy-cross make -C ports/rp2 submodules第一次編譯 RP2040 的固件會拉取 Pico SDK 等子模塊時間取決于網絡。全部準備好之后先編譯一次官方固件驗證環(huán)境make -C ports/rp2 BOARDPICO如果能在ports/rp2/build-PICO/firmware.uf2看到輸出說明環(huán)境沒問題。之后我們把自定義模塊加進去重新編譯就行。3.2 把自定義模塊塞進固件MicroPython 的 RP2040 端口支持通過 CMake 把你自己的 C 模塊編譯進固件。我習慣在ports/rp2下新建一個dma_uart目錄里面放dma_uart.c和一個micropython.cmake文件。micropython.cmake的內容很簡單add_library(dma_uart_module INTERFACE) target_sources(dma_uart_module INTERFACE ${CMAKE_CURRENT_LIST_DIR}/dma_uart.c ) target_include_directories(dma_uart_module INTERFACE ${CMAKE_CURRENT_LIST_DIR}) target_link_libraries(usermod INTERFACE dma_uart_module)然后在ports/rp2的micropython.cmake文件里加一行include把你這個子文件引進來。不同 MicroPython 版本引入用戶模塊的方式稍有差異我寫這篇文章對應的是當前比較新的版本用的是MP_REGISTER_MODULE注冊方式。如果你是舊版本可能需要去mpconfigport.h里手動加模塊聲明具體看官方文檔里cmodules.rst的說明。3.3 C 核心代碼下面是我用的核心代碼做了簡化重點是說明 DMA 配置思路。這個模塊目前只支持 UART0 的 RX DMA 接收你完全可以照著擴展成發(fā)送或者雙通道版本。#include py/runtime.h #include hardware/dma.h #include hardware/uart.h #include pico/stdlib.h typedef struct _dma_uart_obj_t { mp_obj_base_t base; mp_obj_t buf_obj; // 保存 Python 端 buffer 引用防止被 GC 回收 uint8_t *buf; size_t len; size_t received; uint channel; bool claimed; volatile bool done; } dma_uart_obj_t; STATIC dma_uart_obj_t dma_uart_obj; static void dma_uart_irq_handler(void) { if (dma_channel_get_irq0_status(dma_uart_obj.channel)) { dma_channel_acknowledge_irq0(dma_uart_obj.channel); dma_uart_obj.received dma_uart_obj.len; dma_uart_obj.done true; } } STATIC mp_obj_t dma_uart_start(mp_obj_t buf_in, mp_obj_t len_in) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, bufinfo, MP_BUFFER_WRITE); size_t len mp_obj_get_int(len_in); if (len bufinfo.len) { len bufinfo.len; } if (!dma_uart_obj.claimed) { dma_uart_obj.channel dma_channel_claim_unused(true); dma_uart_obj.claimed true; } dma_uart_obj.buf_obj buf_in; dma_uart_obj.buf (uint8_t *)bufinfo.buf; dma_uart_obj.len len; dma_uart_obj.received 0; dma_uart_obj.done false; dma_channel_config c dma_channel_get_default_config(dma_uart_obj.channel); channel_config_set_transfer_data_size(c, DMA_SIZE_8); channel_config_set_read_increment(c, false); channel_config_set_write_increment(c, true); channel_config_set_dreq(c, DREQ_UART0_RX); dma_channel_configure(dma_uart_obj.channel, c, dma_uart_obj.buf, uart_get_hw(uart0)-dr, dma_uart_obj.len, true); dma_channel_set_irq0_enabled(dma_uart_obj.channel, true); irq_set_exclusive_handler(DMA_IRQ_0, dma_uart_irq_handler); irq_set_enabled(DMA_IRQ_0, true); return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_2(dma_uart_start_obj, dma_uart_start); STATIC mp_obj_t dma_uart_done(void) { return mp_obj_new_bool(dma_uart_obj.done); } STATIC MP_DEFINE_CONST_FUN_OBJ_0(dma_uart_done_obj, dma_uart_done); STATIC mp_obj_t dma_uart_received(void) { return mp_obj_new_int(dma_uart_obj.received); } STATIC MP_DEFINE_CONST_FUN_OBJ_0(dma_uart_received_obj, dma_uart_received); STATIC const mp_rom_map_elem_t dma_uart_module_globals_table[] { { MP_ROM_QSTR(MP_QSTR_start), MP_ROM_PTR(dma_uart_start_obj) }, { MP_ROM_QSTR(MP_QSTR_done), MP_ROM_PTR(dma_uart_done_obj) }, { MP_ROM_QSTR(MP_QSTR_received), MP_ROM_PTR(dma_uart_received_obj) }, }; STATIC MP_DEFINE_CONST_DICT(dma_uart_module_globals, dma_uart_module_globals_table); const mp_obj_module_t dma_uart_user_cmodule { .base { mp_type_module }, .globals (mp_obj_dict_t *)dma_uart_module_globals, }; MP_REGISTER_MODULE(MP_QSTR_dma_uart, dma_uart_user_cmodule);這里有幾個關鍵點要解釋一下。read_increment必須設置為false因為 UART 的 DR 寄存器地址是固定的DMA 每次讀同一個地址就相當于取走 RX FIFO 里的一個字節(jié)。write_increment必須設置為true因為我們要把數據連續(xù)寫入內存。DREQ_UART0_RX是 UART0 接收觸發(fā)源DMA 只在有數據可讀的時候才搬運不會讀空 FIFO。中斷服務函數里只做三件事確認中斷、記錄接收長度、把done標志置位。我沒有在中斷里直接調用 Python 回調因為 MicroPython 的中斷環(huán)境里直接跑 Python 代碼是不安全的容易觸發(fā)重入或者內存管理問題。用輪詢標志位的方式雖然看起來不那么“高級”但在實際工程里非常穩(wěn)。3.4 MicroPython 腳本里怎么用固件編譯燒錄好之后Python 腳本就非常簡單了。我演示一個 UART0 接收的例子import dma_uart from machine import UART, Pin import time uart UART(0, baudrate115200, txPin(0), rxPin(1)) buf bytearray(256) dma_uart.start(buf, 256) # 等待完成支持 machine.idle() 就優(yōu)先用 idleDMA 中斷會喚醒 CPU while not dma_uart.done(): try: machine.idle() except AttributeError: time.sleep_ms(1) print(received bytes:, dma_uart.received()) print(buf[:dma_uart.received()])如果你的固件支持machine.idle()在等待時 CPU 會進入低功耗模式DMA 完成中斷會把它喚醒這樣等待期間幾乎不耗 CPU。如果確實不支持退而求其次用time.sleep_ms(1)也可以但對實時性要求極高的場景還是建議用 idle。注意一點這個示例默認 PC 會發(fā)滿 256 字節(jié)。如果你的數據是不定長的DMA 傳輸長度設置成 256數據不夠 256 字節(jié)時 DMA 永遠都不會完成你需要自己加超時判斷。這個坑下面會細說。3.5 和普通中斷方式的簡單對比測試驗證是否真的省 CPU可以做一個很樸素的實驗讓 Pico 循環(huán)處理一個等待 DMA 的任務同時在等待期間跑一個純 Python 計數循環(huán)看丟不丟數據。count 0 dma_uart.start(buf, 256) while not dma_uart.done(): count 1 if count % 100000 0: print(still counting, count) print(done, count , count)如果 DMA 配置正常即使主循環(huán)一直在做 100000 次計數的大循環(huán)UART 數據也不會丟。這就是“零 CPU 負擔”最直觀的體現。如果用普通uart.read()或者uart.any()循環(huán)去收數據主循環(huán)根本不可能跑這么重的任務。我做過的實測里115200 波特率下連續(xù)發(fā) 1KB 數據普通中斷模式會出現大量時間碎片主循環(huán)任務被頻繁打斷改用 DMA 后主循環(huán)在 DMA 搬運期間可以連續(xù)執(zhí)行其他邏輯只有最后處理數據時才介入一次。4. 常見問題與排查技巧實錄4.1 數據錯位、丟字節(jié)、DMA 不結束先列幾個最容易踩的坑。第一源地址配錯。DMA 的讀地址一定要指向 UART 的 DR 數據寄存器而不是 UART 的外設基地址。在 C 代碼里我用的是uart_get_hw(uart0)-dr如果你用machine.mem32或者從舊工程復制代碼很可能寫成UART0_BASE這種地址數據就會亂。第二read_increment被誤設成true。這個錯誤特別隱蔽因為看起來 DMA 工作正常但每次讀數據都會從 UART 寄存器地址遞增偏移讀到后續(xù)寄存器里的隨機值。表現就是第一個字節(jié)對后面全亂。第三DMA 傳輸長度大于實際收到的數據量。如果你的協議不是固定幀長比如 PC 只發(fā) 10 個字節(jié)但 DMA 配置成接收 256 字節(jié)DMA 會一直等永遠不完成。這種情況必須在應用層做超時處理。Python 側可以這樣做dma_uart.start(buf, 256) deadline time.ticks_ms() 500 while not dma_uart.done(): if time.ticks_diff(deadline, time.ticks_ms()) 0: break if not dma_uart.done(): print(timeout, stale bytes?, dma_uart.received())超時后 DMA 可能已經收了部分數據進 buffer但是done是 false你要根據received()的值決定是否保留這幀數據。如果確實需要取消 DMA最好在 C 模塊里加一個abort()函數調用dma_channel_abort。4.2 變長數據怎么判斷一幀結束很多從 STM32 轉過來的朋友第一個念頭就是找“接收空閑中斷”。RP2040 的硬件 UART 并沒有和 STM32 完全等價的空閑中斷所以不能直接照搬那套“DMA 空閑中斷接收不定長數據”的代碼。我的做法是DMA 負責把數據搬進一個大緩沖區(qū)同時用一個 MicroPython 定時器或者主循環(huán)里的超時判斷來模擬“線路空閑”。每次 DMA 完成一個接收任務就重置計時器如果超過設定時間沒有新的 DMA 完成就認為當前幀結束了。整體流程大概是啟動 DMA 接收固定最大長度收到數據且 DMA 完成后處理數據并把下一個新 DMA 任務啟動如果在兩個 DMA 完成之間超過了你設定的幀間隔就判定為幀結束。這種方式不用硬件空閑中斷邏輯也直觀。4.3 緩存對象被 GC 回收DMA 還在寫這是自定義 C 模塊最容易翻車的地方。如果你只在 C 模塊里保存uint8_t *buf指針不保存 Python 對象的引用那么當 Python 側的bytearray變量被重新賦值或者跳出作用域之后這塊內存可能被 MicroPython 的垃圾回收器回收掉。DMA 這時候還傻乎乎地往那塊地址寫數據結果就是內存損壞、系統(tǒng)崩潰。所以我上面的 C 代碼里專門加了一行dma_uart_obj.buf_obj buf_in;把 Python 傳來的 buffer 對象保存在全局結構體里保持一個強引用。只要模塊本身不被卸載這個對象就不會被 GC 收走。如果你不想在 C 模塊里保存 Python 對象也可以用 C 模塊內部靜態(tài)數組當作 DMA 緩沖區(qū)再通過memoryview暴露給 Python這樣生命周期完全可控代價是緩沖區(qū)大小固定。4.4 DMA 通道沖突與多串口擴展RP2040 有 12 個 DMA 通道看起來很多但 MicroPython 內部可能已經有其他功能在占用。比如某些固件的 USB 驅動、PIO、ADC 都可能用到 DMA只是沒有被公開文檔寫清楚。所以自定義模塊不要硬編碼通道號應該用dma_channel_claim_unused(true)動態(tài)申請。如果你要同時做 UART0 接收、UART1 發(fā)送、ADC 連續(xù)采樣就需要在模塊里維護多個 DMA 通道。建議每個功能獨占一個通道中斷號也可以分開比如通道 0 到 5 用DMA_IRQ_0通道 6 到 11 用DMA_IRQ_1避免中斷服務函數里判斷太多通道狀態(tài)。通道不用的時候記得釋放否則多次start之后通道就耗盡。4.5 問題速查表現象可能原因解決辦法完全收不到數據UART 發(fā)送端沒接對、波特率不一致、UART RX 引腳錯誤先用uart.read()循環(huán)測試排除 DMA 問題DMA 永遠不完成傳輸計數大于實際數據長度加超時邏輯或者改用固定幀長協議數據錯位read_increment誤設為 trueDREQ 配錯檢查 DMA 配置源地址固定目的地址遞增接收完無法再次啟動DMA 通道完成一次后計數變成 0每次start都重新調用dma_channel_configureimport dma_uart報錯固件沒有正確編譯模塊檢查 CMake 包含路徑和MP_REGISTER_MODULE聲明主循環(huán)頻繁卡死中斷服務函數里執(zhí)行了 Python 回調中斷里只置標志位用輪詢或mp_sched_schedule調度回調5. 進一步優(yōu)化與擴展思路5.1 雙緩沖實現無間斷接收單緩沖區(qū)的問題在于DMA 正在填 buffer 的時候你沒法安全地處理這個 buffer。等 DMA 完成再處理這段時間內新到的數據可能無處可放。解決方法是雙緩沖。準備兩個同樣大小的 bytearray一個當前被 DMA 使用另一個給主循環(huán)處理。DMA 填完 A 后立刻切到 B主循環(huán)同時處理 A 里已經收好的數據。這樣可以做到“邊收邊處理”基本不會因為處理時間過長而丟下一幀數據。邏輯很簡單bufs [bytearray(256), bytearray(256)] cur 0 while True: dma_uart.start(bufs[cur], 256) while not dma_uart.done(): machine.idle() # 切換當前緩沖交給業(yè)務處理另一個緩沖啟動 DMA handle_data(bufs[cur]) cur 1 - cur實際運行中handle_data如果比較快比如只是把數據塞進隊列這個方案非常穩(wěn)。如果handle_data很慢那就要引入第三個緩沖區(qū)或者環(huán)形隊列做緩沖總之別讓業(yè)務處理阻塞 DMA 太久。5.2 把同一套 DMA 邏輯擴展到 ADC 和 PWM知道 UART 怎么用 DMA其他外設基本就是換幾個參數的事。比如要做 ADC 連續(xù)采樣DMA 的源地址改為 ADC 的 FIFO 數據寄存器DREQ 改為DREQ_ADC其他配置不變。要播放一段 PWM 波形DMA 的源地址改成內存里的波形表目的地址改成 PWM 的 CC 寄存器DREQ 用 PWM 的請求信號。RP2040 這套 DMA 設計得很統(tǒng)一核心的理解成本就一次。我在項目里用過 DMA 把預先生成的正弦波表不斷搬到 PWM 模塊實現了不占用 CPU 的音頻信號輸出。本質上和串口發(fā)送沒有區(qū)別都是地址、計數、DREQ 三個核心要素。5.3 MicroPython 固件版本差異最后提醒一句MicroPython 版本更新很快。早期 RP2040 端口的模塊注冊方式和現在差別不小比如 1.19 時代可能需要在mpconfigport.h里手動聲明模塊而新版本更推薦用MP_REGISTER_MODULE。我在文章里的代碼基于當前常見的新版本如果你編譯時報錯優(yōu)先去 MicroPython 官方的docs/develop/cmodules.rst文檔里對照一下。別硬抄CMake 和注冊方式差一個字母都會導致import失敗。踩過幾次編譯坑之后我的經驗是先用最小模塊跑通比如只導出一個hello()函數燒固件驗證import沒問題再逐步往里面加 DMA、加中斷、加雙緩沖。這樣排查問題會容易很多。真正把 DMA 跑起來之后你會覺得“零 CPU 干預”這句話值回票價——主循環(huán)再也不會被一串串的串口數據打斷得雞飛狗跳了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天操天天舔| 精品成人av一区二区三区在线| 久久riav中文精品| 综合av影片| 精品人妻一区二区乱码一区二区| 欧美一区二区三区互相| 国产精品农村妇女精品| 毛片电影一区二区三区| 九色黄站| 色综合加勒比四四季| 四虎午夜影院| 久久久久久少妇| 91九色在线| 成人97人人超碰人人| 四虎免费看黄| 任你艹| 午夜精品久久一区二区| 激情小说亚洲图片| 五月天精品| 中文字幕av亚洲精品| 亚洲精品一区二区免费在线观看| 青青草亚洲一区| 亚州欧美色图| 久久久九| 男人天堂日日夜夜| 蜜桃久久一区二区三区| 再深点灬舒服灬太大了添视频| 2024黄色视频| 精品无码一区二区| 亚洲一卡2卡3卡4卡乱码网站 | 人妻一区二区三区四区视频| 色五月av| 黄色一区三区| 丰满人妻一区| 超碰人人干天天射| 日韩av电影网站| 欧美视频第二页| 夜夜爽妓女| 91在线色综合| 青青草女人天天干| 99在线视频播放| 久久黄黄| 九月丁香婷婷| 91蜜臀在线久久久久| 欧美刺激色黄片免费看| 日韩在线欧美精品一区二区| 老鸭窝成人免费毛片视频| 9久久美女首页| 青青操青娱乐| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 欧洲亚洲人妻无码中字久久三区四区| 久久色一区二区| 韩日巨乳美女免费视频在线观看| 夜夜爽夜夜高潮夜夜爽| 亚洲性爱成人| 欧美中出1| 亚洲精品一区二区三区在线播放| 人妻献身系列第54部| 麻豆成人影音在线| 91精品人| 狼狼色丁香久久婷婷综合五月| 日本影视久久免费| 强奸xx国产| 天天做天天爱| 97色妞| 国产丝袜一区二区三区| 尤物视频视频官网| 成年人一级黄色毛片大全在线观看| 国产精品国产亚洲区艳妇糸列| 亚洲图片激情综合另类| 亚洲欧美国产中文视频| 少妇干B| 日本黄 R色 成 人网站| 日本人妻一区二区| 日韩美女,国产传媒,视频一区| 97久久精品不卡| 少妇丝袜在线观看AV| 9999亚洲电影| 久久伊人影院| 精品人体无圣光凹凸| 97精品综合久久| 国产免费大片| 97操B| 日韩国产精品人妻无码久久久| 亚欧美色图| 一本久道久久综合狠狠爱一密臀精| 欧美呦呦性爱| 六月婷激情福利天堂69| 日韩二三区| 亚洲欧美天| 久久在线观看免费视频 | 久久久久密臀一区二区| 精品一二三区久久AAA片| 10000部十八禁看电影| 亚洲 无码 有码 中文字幕| 久九色| 欧美激情另类一区二区| 国产综合网站在线播放 | 人妻色偷色噜| 狠狠亚洲| 天天干干天天干干| 欧美超碰人妻97| 综合伊人激情| 青青草国产一区二区三区| 呦呦影院| 亚洲熟女乱色| 午夜视频好爽啊| 亚洲情色第一页| 老鸭窝成人| 国产欧美日韩精品中文| 蜜臀一二三| 无码区蜜乳| 熟女人妻av在线资源,黄色的资源| 加勒比五月天| 在线观看av区| 暴力av在线| 极品销魂美女一区二区| 在线人人人人人人精品超| 天天内射| 日韩免费簧片| 日韩精品操少妇| 国产精品人妻一区二区| 亚洲欧美91√| 亚洲色综合| 蜜臀久久99精品久久久久久成人小说 | 一二三四免费视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 欧美日本不卡在线| 久久精品一区二区三区不卡| 好属操| 亚洲精品819| 试看60秒 爽| 日韩精品.久久精品.AV女优.天美传媒| 日日日啊啊啊| 午夜啪啪片| 91艹| 日本一级一级一级一级| 少妇久久久久久| 裸模AV女优| 欧美天天综合在线| 日韩精品三区四区| 国产日韩精品人妻久久久久色欲网站| 怡红院成人视频| 国产视频不卡在线观看| 国产精选视频| 神马久久久久久久久久久久| 成人免费在线网站| 色欧洲| 97色欧州| 成人片在线播放| 人妻少妇精品视频一区二区三区| 亚洲国产综合久久天堂| 亚洲日韩美国人妻| 琪琪精品免费一区二区三区| 日本高清视频在线观看黄已三辽| 天天日天天舔| 国产无码精品无码| 一区二区亚州激情久婷婷欧美| 中文字幕在线日亚州9| 久久久久久久久一区二区三区| 大香蕉AV丝袜| 国产日逼视频| 91久久青青草原精品| 国产性爱欧美性爱在线| 五月天黄色激情视频| 精品黄色电影| 婷婷10月天青娱乐| 久久精品男人的天堂| 女人天堂AV五区在线| 国产精品爽爽v| 久久久96| 午夜后入| 女人妻一区| 亚洲国产一区二区三区四区国产| 亚洲中文字幕在线视频一区二区| 女人18精品一区二区三区| 爆乳免费黄网站| 亚洲黄色a级片| 美女天天干| 嗯嗯啊啊啊好爽| 久久婷婷一区二| 熟女视频久久| 26uuu国产成人综合| 男女无套 免费网站| 97视频在线视频| 中文久久一区| 欧美五区| 国产有码一区| 99热精品青草在线| 天天看天天综合成人网| 欧洲综合视频| 97久久资源| 九月婷婷综合| 欧姜老司机| 天天爽人人综合免费7799| 国产视频一区二区三区在线免费观看| 激情抓乳插进去啪啪啪日韩| 国产日韩精品suv| 亚州综合色| 久久丝袜| www久久国产精品| 久操免费观看| 欧美国产精品久久九九| 人人爱人人乐人人操| 一区二区视频在看| 欧美日韩亚洲天堂| 啊啊啊免费视频| 在线二区不卡| 一区二区影视| 亚洲精品自拍| 俄罗斯一区二区视频在线观看| 国产精品白丝| 国产在线视频二区| 亚洲最大成人a毛毛片| 国产又粗又长视频| 99久久99久久免费精品蜜臀| 国产精品日本无码A片| 91操熟女| 亚洲春色欧美激情自拍| 色综合天天| 人妻熟妇久草在线| 夜夜高潮夜夜爽国产伦精品| 九九热国产| 一起草在线视频| 91久久青青草原精品| 日本影视久久免费| 亚洲自拍天堂| 五月丁香成人网| 久7色| 九九九九九九九九九九九免费国产| 九九热免费在线国产视频伊人五月| 日本天天吊| 天天看高清麻豆| 97国产伦理| 91女色| 97在线视频免费| 丰满美女一级毛片在线播放| 日韩精品黄片免费观看| 国产超碰在线| 最新中文字幕av| 精品中文一区二区| 国产捆绑一区| 中国探花熟女| 亚洲免费97免费| 另类专区加勒比| 美女诱惑久久| 色网在线视频观看免费| 欧洲天天在线| 欧美综合传媒| 黄片www视频免费| 欧美老妇曰批的视频| 天天综合精品| 中文字幕一二三av| 2019天天干| 做爱A级亚欧| 亚洲综合小说另类图欧美视频激情小说色五月天| 日本一区二区三区欧美日韩中文字幕| 欧美日韩亚洲电影| 美女被啪到深处抽搐视频| 国产精品麻豆成人av| www色色色com| 99久久久无码| 91操熟妇| av在线一区二区三区| 青青操青娱乐| 蜜臀99精品国产高清在线观看| 日本黄大片在线观看视频| 精品-91人妻子系列| 久久只有精品一区二区三区| 手机看片91人妻| 丁香六月啪啪| 日本 情色 1区| 乱伦av麻豆| 91夜色chaopeng| 深夜国产福利| 九九性爱网| 久久久穴999| 亚洲欧美人妻| 91黑丝在线播放| 久久中出在线| 99精品国产户外露出| 综合熟女| 国产suv一区二区三区6| 五月综合久久| 91老司机精品| 啪啪综合网| 97chaopenrihan| 97人亚洲综合字幕| 日本一区视频在线观看| 日本欧美色| 日产欧美电影一区二区三区| AV在线资源| 99久国产精品午夜性色福利| 综合网亚洲1| 99久久e免费热视| 午夜毛片高清免费不卡| 操逼www.| 精品一区二区2| 国产亚州精品美女久久久免费| 欧美乱妇狂野欧美在线视频| 人人看人人爰人人操| 午夜天堂精品久久| 亚洲字幕一区二区| 加勒比久久av| 韩国黄色片精品久久久| 久久久青青草| 老熟妇综合| 99re国产精品视频| 亚欧操逼片在线观看 | 插老姨肥穴| 被男人添B超爽视频| www.高清无码诱惑一区.com | 91色人妻| 啊嗯嗯啊好大好爽| 啊啊啊啊一区| 干干干天天| 国产九九九九九九| 无码99| 中文字幕高清精品一区| 婷婷探花久久精品一区| 东京日日夜夜| 自怕偷自怕亚洲精品| 日韩精品人妻中文字有码在线| 午夜福利精品| 久草在线| 啊啊啊啊啊啊啊啊啊在线观看| 手机在线视频国内精品| 天天射日日干| 神马久久69| 大香网伊人久久综合| 精品999999| 国产熟妇一区二区| 久久99网站| 超碰在线人妻中文字幕| 黑丝制服中文字幕| av东京热男人的天堂| 丁香五月天激情| 欧美传媒| 99re视频这里只有精品| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 国产亚洲欧美每日在线| 超碰吊日色| 九九成人精品| 你操综合| 婷婷色婷婷| 日韩人妻有码免费视频| 熟妇综合一区二区三区| 欧美92| 粉嫩小泬久久久一区二区| 色色五月婷婷| 色牛牛AV| 九色精品视频导航1| 国产精品一区二区三| 男人精品天堂一区| 岛国AV一区二区电影| 国产成人精品亚洲日本| 91c色| 日韩在线国产字幕| 美欧色综合| 黄色十八禁| 日本大香蕉| http://qxhbdz.com| 亚洲欧美日韩夜夜| 午夜寂寞欧美| 密乳无码| 92午夜免费福利视频| 久久精品福利影院| 国产午夜精品理论片一二三区区| 国产丝袜啪啪| 久午视频| 亚洲综合网91| 精品免费囯产一区二区三区| 96久久久久久久| 欧美日韩不卡传媒| 亚洲日韩狠狠撸视频| 国产91专区| 天天激色| 蜜臀无码一区二区| 天天情欲宗合网| 久久精品国产久精国产| 日韩av情韩国爱禁区av一区二区| 四虎精品一区| 蜜桃午夜视频一区二区| 99re视频在线播放青草| 天堂亚洲精品| 蜜臀久久99精品久久久久久无删减| aV中文麻| 激情色图| 午夜超爽| 天天天天天天天天天天干美女| 精品无码久久久久久国产浪潮| 精品国模无码| 久久国产热视频97电影| 久久‘黄片视频| 强奸乱伦动态污图免费 | 女同性恋中文字幕| 国产精品伦理| 人妻精品视频一区二区三区| 成人性爱免费播放| 日韩免费在线视频观看| 自拍偷拍 日韩无码| 一级特级aaaa毛片免费观看 | 日日夜夜噜| 东方亚洲在线操逼天堂| 91狠狠狠| 亚州熟女乱伦| 国产精品一区二区 尿失禁| 性爱乱伦网址| 欧美淫穴| 97超碰这里只有精品| 美女天天干| 欧美78P| 一级片视频啪啪| 国产精品视频一区二区三区八戒| 99色在线| 少妇第一页| 婷婷丁香人妻 | 免费在线观看国内色片网站网址 | 欧美小说区视频区| 青青操网| 免费一级欧美片片线观看| 加勒比大香蕉视频在线| 密臀视频一区二区三区| 久久久日本电影| 另类图片欧美激情综合| 亚洲无码?第一页| 亚洲色图久久成人| 91色综合色| 久久亚洲AV无码白度| 亚洲成人福利电影免费| 天天摸夜夜摸| 熟女熟妇一区二区三四区| 青青青国产手线观看视频2| 亚卅熟女乱色| 刺激精品视频| 91亚洲欧洲| 婷婷亚洲五月***久久| 精品99999久久久久久| 成人一级二级| 日韩中文字幕精品一区在线| 99久久com免费视频′| 99re6国产精品99re| 91肉丝| 92人人操人人| 伊人伊人LD| 久久AV无码AV| 99re6久热只有精品6在线直播 | 清纯唯美亚洲| 99色综合| 日本不卡免费二区| 久久高清欧美国产| 色综和网| 啪啪视频亚洲第一| 欧美日韩亚洲五月天婷婷| 久久大| 天天干天天干天天| 婷婷五月天色网| 国产熟女乱论| 国产精品一级二级在线| 操逼大黄片| 亚洲精品一二三四区| 中文久久久| 久久久久久久久久8888| 黄页网站成人免费| 日本黄 R色 成 人网站| 色婷婷日韩精品一区二区三区| 白天啪啪晚上啪啪视频| 欧美在线55555| 综合伊人网12色| 91色女| 婷婷色综合欧美日韩| 久久免费精彩视频| 密臀视频三区免费网站| 狠狠中文字幕| 在线午夜成人无码视频| 操香逼| 丰满人妻一区二区三区性色| 97AV在线免费观看| 日日操丁香五月天| 超碰是碰在线观看| 久久婷婷亚洲| 超碰九区| 在线视频一区二区传媒| 亚洲一区二区 麻豆传媒| 国产Aα| 免费人成在线观看网站品爱网| 蜜臀操逼黄色视频操的好爽| 超碰在97| 亚洲男人天堂2017| 久久91精品国产9丨久久分亭| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 骚货 中文字幕 av| 欲色啪| 粉嫩av在线一区二区| 日本视频一区二区三区| 天天欧美欧美亚洲网| 中文字幕三四五区| 欧美香蕉视xxx| 亚洲最新av无码成人精品区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 顶级丝袜熟女一区二区三区| 久久精品一区一起草| 天天操夜夜操| 无码精品久久久天天影视| 亚洲AV色图一区| 亚洲天堂,男人| 国产亚洲精品激情| 99久久99九九99九九九| 91av天美性媒精品视频| 丁香六月激情综合| 国产av激情无码久久天堂| 青青草久久在线| 五月婷婷综合在线| 青娱乐国产精品| 91久久久久久久久18| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 久久久精品中文字幕爱豆| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 亚洲欧美天| 亚洲美女30b| 熟女人妻一区二区三区免费看 | 日韩欧美tv一区二区在线观看| 国产一二三福利视频网| 狠狠躁天天躁日日躁| 天天流夜夜操| 午夜精品探花| 亚洲精品成人动漫在线| 91天堂| 无卡一区=区| 九九英色视频| 99re这里只有精品3| 国产成人精品日本亚洲语言| 秋霞一级A片黄色视频| 亚洲天堂资源在线| 久久成人精品| 美女黑人91神马| 成人影 天天操 亚洲| 免费啪啪啪网站18岁| 人人做,人人操,人人摸| 亚洲另类春色| 78超碰| 国产精品丝袜在线| 日本亚欧爱爱| 中文字幕免费看| 中国小夫妻勾搭露脸淫荡对白 | 91视频综合网| 日本不卡在线二区三区| 久久久性爱| 成人夜夜| 精品人妻一区二区蜜桃视频 | 精品人妻中文字幕4399| 97超碰磁| 激情五月综合开心五月| 亚洲97成人在线观看| 中文字幕丰满人妻日本| 大香蕉在线视频重口味毛片在线| 91在线超高颜值国产| 国产日韩无码一区二区三区久久区| 亚洲激情视频| 天天干人人看综合| 尹人免费观看视频在线| 国产成人拍国产亚洲精品| 性夜影院爽黄A爽免费动漫| 女人综合网| 1区2区3区视频| 激情小说亚洲| Av手机版天堂网| 国产AV色黄看到爽| 日韩人妻播放| 色99视频| 欧美18禁91| 亚洲人妖网| 中文字幕伊人| 青青草公开在线免费不卡视频| 久草精品在线| 精品视频一区二区| 国产乱色国产精品免费视| 免费观看国产小粉嫩喷水精品午| 日韩探花精品在线视频| 午夜精品视频777| 久久久九97| 日日骚 av| 内射中国少妇高清视频免费视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 丁香五月成人| 东北黄色电影| 久久久久国产| 91亚洲网站| 日韩欧美福利视频看看| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 美国三级日本三级久久99| 久久久偷拍| 欧美真人抽搐一进一出gif| 国产日韩在线播放av| 开心五月婷婷激情| 动漫片子网站3黄| 青青草女人天天干| 日语五十路和六十路亚洲国产精品| www.91人妻.com| 欧美综合区| 欧美无圣光在线| 午夜福利一区二区三区四区五区色婷婷| 青青青在线高清视频在线一二三四区 | 亚洲日本韩国在线| 精彩国产视频播放1区2区| 福利天天都操| 女欧美一区二三区| 毛片电影一区二区三区| 欧美国产有色电影| 上特色A在线| 在线可观看的黄色网址| 艾草av| 九九九久久久W精品| 精品成人无码| 亚洲s在线观看| 激情婷婷黑人91| 九九精品无码专区免费| 欧美有码激情视频一区二区三区| 福利天堂| 青青免费在线视频一区| 99热在线观看| 欧美操逼录像国产黄色国产| 激情综合二| 狠狠搞 亚洲91| 欧美色青| 97色婷婷| 久久久999国产精品| 插穴性爱视频在线观看| 人妻在线臀日韩| 天天网综合| 国产久久久久久久久一区二区 | 无码人妻精品一区二区中文| 国产白领连续中出在线观看| 午夜一区| 狠狠综合| 97碰碰色| 91狠| 97 色综合| 亚洲精品一区中文字幕乱码| 97欧美综合网| 99免费在线视频| 91国产丝袜白虎| 黄aaaaaaaaaaaaaaaaaa色网站| 久久超碰大香蕉| 免费的黄片有限公司| 少妇天堂网络| 中文字幕高清精品一区| 97超碰亚洲| 天堂俺去俺来也www久久婷婷| 熟啊v色欧美热| 免费看片黄| 国产AV人人 夜夜人人澡| 玖玖爱在线视频免费观看| 日本有码影片下载| 超碰97人人cao| 神马久久久久久久久久| 久操凹凸视频| 久久久久久久综合,国产| 国产极品一区二区三区三州| 久久成人东京热人妻| 免费视频a级毛片免费视频| 男生通女生屁股| 婷婷五月丁香五月| 熟妇乱伦一区二区| 啊啊啊不要啊啊受不了了视频在线| 国产无吗在线播放| 人妻熟女一区二区| 性爱综合网| 91在线免费精品视频| 麻豆婷婷成人一二三| 高清国产性猛交xxxx乱大交| 超碰午夜| 青青国产精品在线| 99国产在线 精品 视频| av日韩在线观看电影| 国内外激情在线| 色蜜AV| 日本熟女免费視颖| AV女资源| 97人人中文网| 欧美亚洲中文字幕| 天天综合亚洲综合| 91少妇香蕉久久精品| 色综合色欲色综合色综合色综合| 亚州男人天堂| 人妻少妇精品久久久| 亚洲精品视频在线| 国产美女自拍AV| 久草毛片| 磁力99AV| 亚洲激情网一二三四区| 精品中文字幕一区二区| 狠狠入| 伊人国产视频| 一级A片女人高潮叫床| 麻豆色约约| 欧美精品人妻视频| 大伊香蕉在线视频免费| 欧美一级黄色免费专区| 91久久精品美女高潮喷水| 禁止观看美女黄| 人、人、摸,人、人、草| 久久久性| 天美传媒AV在线| www.男人天堂| 日日夜夜骚| 五月丁香影院| 成人性爱美曰韩| 人人操人人干xxx| 九九九不卡| 中出后入| av情色影音| 五月天激情小说网| 亚洲强奸乱伦影视网| 亚洲人体视频在线观看| 美女久久久| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 伊人黄色视频免费观看| 99久久精品欧美国产| 久久国产精品m码| 国模91| 色色色欧美| 性爱乱伦视频免费| 亚洲成人黄色在线观看| 中文字幕后石码四区五区| 久久精品国产97欧美精品亚洲| 夜草欧美| A啊啊在线观看| 麻豆乱码久久精| 九一屌逼| 91 国产丝袜在线放观看| 又黄又爽在线观看视频| 99热网站| 五月婷婷丁香| 日本免费中文一区二区三区四区| 日韩成人综合网| 我爱大香蕉| 久久激情综合| 亚洲超碰在线| 欧美一级三级| 97超碰69| 三级片大波波| 青草香蕉网| 99国产精品久久久在线播放| 西西美女视频网| 中国小夫妻勾搭露脸淫荡对白| 日韩激情视频| 色超碰综合| 国产诱惑| 欧美激情 亚洲色图| 久久久青青草| 亚欧色图在线激情| 黄色操人| 18禁的网站在线| 午夜黄色免费在线观看| 91五月天| 亚洲天堂色图| 亚洲男人的天堂AV| 欧洲亚洲综合| 天天摸天天操视频| 欧美一区二区三区不卡高清视频| 性久久久| 无遮挡h肉动漫在线观看| 五月综合久久| 97在线欧洲| 99在线啪| 中文久久久| 天天干天天燥| 99热久| 欧亚第一综合网| 亚洲九九视频在线观看| 清纯唯美激情| 日韩操逼性鲍| 日韩成人大片在线观看| 97视频在线免费看| 亚洲精品97中文字幕| 密臀在线视频| 日韩强奸av| 久久鲁干| 色月天AV导航| 婷婷性网| 亚洲伊人a线观看视频| 亚洲另类电影| 欧美熟妇操操视频| 日天天九九天堂666| 国产Av超碰| 丁香激情五月天| 2020中文在线一区二区三区| a在线视频免费观看| 免费人人搞97| 国产成人精品网站| 草草影院最新网址| 红杏大香蕉| 九九九精品色乱九九九| 国产内射爽爽大片| 抽插无码高清一区| 熟妇精品juliaannAV| 国产美女自拍视频| www.91理论| 宅男91视频在线播放| 国产日产欧产美韩系列麻豆免费| 热99这里有精品综合久久| 亚洲精品成人动漫在线| 蜜桃久久综合视频| 亚洲色棕合| 天天日天天搞天天干| 天天干美少妇一区| 亚洲国产福利视频| 岛国大片国产| 黑人中出21连凳花野真衣| 老熟女综合网| 福利色色| 最新9久久久9免费视频| 成人AV超碰免费在线| 久久香蕉国产传媒一区剧情天美| 午夜精品久久久久久久| 天天色黄色影院天天操| 人人污日韩一区二区| 熟女精品日韩一区二区三区| 深夜激情无码| 大干人妻| 日韩激情中文字幕有码| 啊啊啊啊啊啊啊啊啊啊在线观看| 免费岛国一级片| 国产四虎在线| 在线视频亚洲无码| 国产久久一区二区午夜| 啪啪自拍九九综合| 久久人妻精品| 欧美92| 色区久久| 少妇高潮九九九九| 婷婷香蕉欧美在线一区二区三区| 亚洲 欧美 第一页 | 肥臀熟女一区二区三区视频| 91干熟女| 久久亚洲日韩熟女精品| 制服乱伦| BBBBB97COM| 久久国产三区| 炮色五月| 色综合国产在线观看| 亚洲瓯美色图| AV一区观看| 秋霞鲁丝午夜无码一区二区三| 久操网无码在线| 亚州色阁| 久久草大香蕉| 国产精品福利视频| 久久熟妇五十路一区| 国产亚洲精品久久久久小| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 精品无码久久久久久久久果冻糖心| 一区二区三区 丝袜 高跟 美腿| 中文字幕欧美丝袜07资源| 国产视频三区四区| 久久伊人亚洲AV无码网站 | 成人日本视频人妻在线| 青青久草| 日本伦理一区二区| 久久久久久日韩| 亚洲日韩资源| 91大胆欧美| 久久免费99精品久久久久久| 4虎在线视频| 九九久久综合| 尤物av网站免费在线播放| 99热精品国产| 久久欧美性爱视频| 91骚熟女| 亚洲欧美精品久| 九九热九九| a片在线播放| 97se综合| 九九色热| 国产黄色影片在线观看| 精品久久久久成人码免| 久久国色天香香蕉| 综合操逼| 国产老女人久久毛| 国产人妻一区二区三区欧美毛片| 黄色性爱网网| 日本韩高清无砖码22o| 二三四区精品| 国产少妇肉丝在线观看| 大学生口爆吞精| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 美女主播色欲91抠b在线播放| 国产激情av女片自拍| 伊人操| 日韩精品影视| 久久不卡一区二区 | 蜜臀99久久精品久久久久久| 亚洲 图片 综合91| 人妻中文字幕精品无码| 51一区二区三区| 亚洲精品 超碰| 97色碰| 美国三级日本三级久久99| 久久亚洲骚逼综合| 欧美黄色片AAAAA| 人妻丰满熟妇一区二区三| 果冻传媒A片麻豆熟妇人妻| 亚洲少妇激情视频| 翘臀vidoes| 婷婷久久久| 久草网站免费在线观看| 少妇久久久| 日韩精品亚洲一二三| 国产成人精品午夜福利| 男人天堂站| 亚洲黑丝在线| 国产精品亚洲免费| 综合影视国产无码| 国产av强奸美女| 欧美性爱精品七区| 九九AV| 午夜超碰| 人妻精品一区二区| 一本大道青青| 亚洲综合色在线| 亚洲精品1区| 五月天色电影| 青青操在线亚洲视频观看欧美在线| 欧美日韩丝袜| caorenqi shipin| 大香网伊人久久综合| 国产欧美日韩精品中文| 久久夜黄色无码A级大片| 午夜福利一区二区影院| 日本成人在线不卡一区二区三区| 妇女一区二区三区| 97视频免费| 国产精品久久蜜乳av| 春色91| 99热这里都是精品| 欧美色干| 神马久久久久久| 中文字幕97| 日本色色色网站免费看不卡| 91香蕉国产尤物视频| 天天草天天日| 一级性爱视频免费在线| 亚洲国产成人精品久久久国产成人一区二区 | 日韩有码中文字幕女同性恋| 久久日韩肥臀| 97精品一区二区三区免费| 97鸡把在线视频| 欧美性色网| 91色色网站| 亚洲人妻中文在线视频| 999精品国产高清一区二区| 翔田千里无码中出中文字幕| 乱伦a片视频| 无码黑人精品一区二区三区三| 无码WWW免费视频网站| 囯产操逼片| 狠狠狠狠狠狠| 夜夜操av亚洲一区二区| 日本五十路在线| 久久久精品九| 国产99999| 日韩中文字幕国产| 日本一级二级三级网站| 午夜大香蕉| 97爱爱爱综合| 天天综合网AV91| 伊人网在线点播| 亚洲色图欧美色图另类图片| 999精品国产高清一区二区| 美女操逼福利视频| AA丁香综合激情| 欧美一区二区传媒| 情色五月天就去干| 男女无套 免费网站| 亚洲囯产精品女人久久久| 亚洲免费人妻在| 国产粉嫩蜜臀av一区二区三区| 亚洲色图欧美色图日韩色图| 簧片免费看视频| 午夜呻吟欧美| 五月天亚洲网| 啪啪视频免费在线观看| 九月丁香综合网| 综合色图,成人综合网| 成人一区二区三区四区| 亚洲骚逼少妇| 福利操逼| 性色一线| 亚洲极品| 午夜男女爽爽爽影院视频| 欧美性爱十八禁| 中文字幕丝袜美腿| 超碰在线成人电影| 性饥渴少妇av无码毛片| 五月婷婷综合网| 人妻内射一区二区在线视频| 日韩无码一区二区三区| 顶级丝袜熟女一区二区三区 | 亚洲天堂一区| 四色永久成人网站| 国产情色第一第二页在线观看| 91天堂网| 操逼日韩无码 | 亚洲国产成人7777| 人妻少妇精品一区二区三区| 骚人妻少妇视频| 俺去啦俺来也久久综合| 一本道综合色图| 欧美骚少妇| 蜜臀AV秘一区翔田千里| 国产女人高潮视频| 加勒比色99999| 顶级丝袜熟女一区二区三区| 超碰97男人| 午夜操一操| 亚洲男人天堂Av| 狠狠97| 精品在线观看视频在线| 久日91在线| 一级AV性爱| 日韩人妻操B| 青草精品视频日本久久久久网站在线| 在线无码操| 9999九九九久久久| 无码 黑人一区二区三区| 亚洲国产精品久久久久婷婷青年| 夜夜欧美| 99在线精品视频| 中文字幕青青草| 伊人久久艹| 久久有码视频| 色情五月综合婷婷| 蜜桃久久一区| 爱射综合| 日韩欧美中文字幕搭讪巨乳美人妻视频| 青娱乐国产盛宴视频| 夜夜爽爽夜夜精品视频| 一起草日韩| 久久久久久久六六| a天堂视频| 中文精品少妇天堂| www成人啪啪18秘 免费| 白嫩妹子国产骚| 欧美综合区| 日本欧美不卡| 性站| 久久久久久久强迫| 91av天美性媒精品视频| 久久最新视频免费观看| 国产黄色影片在线观看| 久久久久ab| 91成人久久 | 日韩射精| 97激情97激情| 宅男影院久久久,99| 九九九九九精品十六| 夜嗨影院| 巨乳特殊服务按摩| 欧美美女自慰一区二区三区| 亚洲 暴爽 AV人人爽日日碰| 亚洲国产剧情少妇激情| 秋霞一级A片黄色视频| 欧美亚洲国产日本在线,久久精品国产| 欧美极品性爱天天射| 欧美日韩亚洲国产中文永久天天看| 国产亚洲国产超碰| 亚洲在线91| 少妇三P| 中文字幕一区日韩精| 神马久久午夜| 欧美在线55555| 性爱av网站| 国产捆绑一区| 蜜臀一二三| 夂久色| 精品国产一区二区三区香蕉欧美| 一二三四区操操Av| 97干日韩| 色色婷婷五月天| 无码高清国产AV| 中文字幕蜜乳av| 91天天爽| 成人在线午夜视频一区| 91蜜臀熟女| 青青网三级视频| 国产最新AV| 午夜福利一区二区影院| 91九九九小逼| 人妻熟女av国产网站| 狠狠爱大香蕉| 日日橹狠狠爱欧美超碰| 国产高清无码一区二区三区四区皇冠| 另类图片天天影视| 无码人妻精品一区二区三区九九| 日本女人操逼| 无码人妻精品一区二区中文| 91青青在线| 欧美日本天堂| 一本久道久久综合狠狠爱| 黄色操人| 精精品人妻一区二区三区| 欧美大战久久久伊人| 视频二区美腿丝袜制服人妻欧美 | 日本丝袜美腿人妻九九| 国精精品无码一二三区水多多| 日韩15p| 亚洲天堂美臀在线| 亚洲精品蜜桃久久久一区二区三区| 久久久国产亚洲精品系列| 久久六六| 亚洲操操操无码| 大乔未久88一区| 亚洲熟妇乱女区二区三区| 九九无码视频| 国产精品干干干| 国产美女在线精品免费看| 五月天久久人妻| 二级毛片| 亚洲视频二区 | 高清在线不卡一区二区 视频| 黄色工厂这里只有精品| 欧美人人天天网| 亚洲高清视频在线观看| 91原创在线观看| 国产AV线| 精品国产国产AV| 色爱欲亚洲| 色婷婷aV一区二区三区麻豆综合| 国产亚洲国产超碰| 国产精品久久成人免费| 久久精品福利影院| 男女无套 免费网站| 97超碰美女| 九九九九亚洲| 天操天操夜操夜月操月年年操操| 久久香蕉超碰97国产精品| 91 国产丝袜在线放观看 | 在线观看啊啊啊啊啊| 色阁阁AV综合网| 国产情色第一第二页在线观看| 97公开久久| 热久日综合| 日韩精品第3页| 欧美少妇性乱| 大香蕉男人的天堂| 91爱做| 北京美女一区二区| 亚洲天堂情色| 东京热精品97综合网| 曰本91情色| 97在线资源| 蜜臀av中文字幕| 黄页网站成人免费| 亚洲中文丝袜美腿诱惑字幕| 精品人妻久久久| 亚洲人综合19| 天天插网| 一区操逼| 欧美日韩性爱无码|