色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
www久久久| 伊欧美综合视频| 人妻在线视频| 蜜臀久久一区二区| 91丨人妻丨国产丨丝袜| 丁香六月婷婷| 四虎在线视频| 十八禁视频网站| 亚洲国产综合久久久性感熟妇| www.高清无码诱惑一区.com | 人人摸人人干| CCYY草草影院地址入口| 久久伊人在线五区| 中文字幕三四区| 黄片免费看黄片免费看| nuu12国产麻豆精品| 日韩偷拍一区二区三区| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 黄色大片免费在线| 久久久久久久久久久久久久久乱码| 无码人妻丰满熟妇区毛片| 欧美黄色大片在线观看| 日韩精品系列| 久久鲁干| 日日夜夜模| A 在线网址| 97精品视频免费| 天美精品原创av片国产| 在线啊啊啊啊| 操婢日韩| 亚洲国产丝袜在线观看| 色色色色日本| 亚洲熟女一区| 国产精品夜夜夜| 日韩无码黄色片| 美日韩在线不卡人妻| 欧美视频一| 色色五月天婷婷| 久九九九九九九九热| 亚洲天堂中文字| 欧美性暴力猛交XXXX | 欧美激情色婷婷花野真衣一区二区| 亚洲天堂一区| 午夜后入| 人人人人人人少妇| 久草午夜| 亚洲18禁| 乱伦AVxx| 91天堂丝袜美腿| 超碰AV在线| 亚洲欧美91√| 少妇色| 日韩成人电影AV| 天天拍夜夜| 东北老女人的激情视频| 四虎午夜影院| 香蕉大久久久| 一本久道久久综合狠狠爱| 中文乱码字幕观看| 777奇米影视777四色| 久久性爱精品一区| 九九九久久久W精品| 亚洲日韩AV视色| av毛片aaaaa免费看| 激情亚洲天堂| 99热日本| 一区二区三区成人高清视频| 中日韓欧美高清| 日韩人妻精品久久久久| 在线一区| 91蜜臀熟女| 成人av在线播放| 97爱啪| 九九久久99| 视频一区二区三区精品| 高颜值美女口爆高潮浪叫| 殴美,日韩国产伦精品| 少妇一区二区三区精选| 91社区伊人| 韩日精品福利视频一区不卡在线免| 精品-91人妻子系列| 九九久久久| 久久久久久波多野吉衣高潮| 天天舔天天 | www色色com| 在线αⅴ| 黑人精品欧美一区二区蜜桃| 亚洲欧美日韩中文久久自慰| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 神马久久久久久久久久| 天堂av2019| 国产操偷| 日小BB小视频| 97日韩欧美| 日本黄色天堂| 嗯嗯啊啊亚欧精品| 91色图片| 极品丝袜无码| 丁香五月影院| 亚洲激情av| 欧美国产欧美在线观看| 试看日韩黄片| 国产99999| 中文字幕丝袜| 加勒比海人人操超碰在线| 国产av热热色| 思思性爱| 国产三级中文有码在线视频| av天堂天堂av日韩| 园内精品自拍视频在线播放| 国产精品网址| 色臀av| 欧美九九九| 啊啊啊啊啊舒服| 啊啊啊啊操死我了| 丝袜色综合| 91女优在线观看 | 精品人妻av区天天看片| 青青草好吊色| 精品人妻一区二区三区在| 日韩无码第3页| 久久999久| 麻豆黄四叶草网站| 清清草影| 欧美日韩97在线| 久久久噜噜噜久久人妻| av影院十区| 超碰4A| 欧美肥臀在线| 欧美日韩小说| 久久久精选| 97极品无码| 亚洲熟妇乱女区二区三区| 中文字幕 人妻不满 在线视频| 99视频自拍| 婷婷丁香久久| 9热9热综合网| 亚洲 91 在线| 天天透伊人| 影音综合网| 操操操操网黑人| 欧美午夜视频| 91社区伊人| 国产精品日本无码A片| 免费国产电影一区二区| 97天天摸天天爽| 高颜值美女口爆高潮浪叫| 国产白丝网站| 精品一区二区三区国产 | 五月天色电影| 九九九九一区| 欧美精品系列| 亚洲本色精品一区二区久久| 久久久久久亚洲Av无码| 狠狠色综合网| 中文字幕视频2区| 91高跟美女在线播放| 九九英色视频| 激情五月婷婷| 亚洲91网站| wuyechaopeng| 国产精品人妻无码久久久互動交流| 天天日天天搞天天干| 久久久无码av精| 97精品综合久久| 天天看少妇| 99只有精品| 天堂亚洲精品| 天天综合网91| 亚洲午夜福利视频| 伊人影院在线理论播放| 欧美大干日韩| 中文字幕第2页| 欧美性爱无码一区二区三区| 亚洲AV无码天美传媒一区| 先锋音影AV| 超碰97久久观看| 中文AV制服乱伦| 偷窥自拍亚洲| 天天操天天射天天日| 人妻aa| 欧美拳交在线播放| 青青操日韩| 欧美探花网| 免费国产视频| 九九热免费视频| 久久亚洲色图中文字幕| 亚洲在线| 精品国产一区二区三区av在线资源| 国产美女激情| 一级乱伦网站| 26uuu偷拍亚洲欧洲综合| 久碰视频| 超碰人妻久久人妻中文97| 怡红院成人视频| 久操| 四虎国产精品永久地址入口| 狠狠图片青青草| 天天综合欧美| 国产精品久久久视频| 亚洲人人夜夜澡人人爽| 日韩欧美一级特黄大片| 婷婷香网站| 欧美色综合| 国内91熟女人妻丝袜天天精品视频在线 | 青娱乐av在线| 日本最新1区2区3区| A一区片| 婷婷久月| 伊人欧美大香蕉视频| 国产强奸超碰AV| 青青草国产盗摄一二三区| 18禁看网站一区| 超碰日本97美女人妻人人玩人人爱| 国产丸一视频| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 91草草草| 国产黄片精品在线| 天堂涩涩| 免费毛片在线播放| 日韩欧美传媒一区国产| 欧美,日韩综合久久| 久久亚洲欧美中文字幕国语 | 欧美欧美啪啪视频| 欧美美女啪啪视频| 唯美清纯 妖精视频| 激情五月综合网| 東南亚性呦成人伦理资源在线视频| 日韩乱伦影音先锋| 色九九久九九| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲人在线| 精品人妻免费观看| 亚洲少妇在线影音| 3d成人精品一区二区| 任你干在线视频| 日韩欧美午夜视频在线| 午夜操一视频一区| 69精品少妇一区二区三区蜜桃| 91视频综合在线| 干婷婷综合网| 天天干人人看综合| 久久久熟妇熟女国产| 国产最新小视频在线播放下载 | 操逼999| wwwxxx日本爽| 五月天婷婷小说| 丰满熟女一区二区三区在线播放| 中文幕97| 日韩无码成人电影| 亚洲日韩国产精品| 国产美女91| 午夜大香蕉| www.av家庭乱伦| 学生妹天天看| 天天影视综合网欧美精品| 18禁无码永久免费无限制| 免费看国产大AB| 影音先锋国产精品| 无码久久亚洲高清,| 午夜后入| 久久久人体| 欧 美 自 拍 偷 拍| 91操熟女视频 | 精品欧美日韩在线观看| 久久综合18p| 日韩精品1区2区中文字幕| 花花AV导航| 婷婷日韩一区二区三区中文字幕在线| 91久久青青草原精品| 亚洲综合图片在线| 欧美一二三区四五区| 久久性爱网站| 后入日本1234| 欧美 青青草| 久久性爱城| 亚洲精品一区二区精品| 久午视频| 操死我了嗯嗯嗯| 婷婷亚洲五月***久久| 97精品网| 久久婷婷电影网| 欧美春色| 操一对老熟妇爽上天视频| 91jk色拍| 久久久久久性爱视频| 99综合| 无码在线亚洲| 日韩黄色一区二区三区| 天天插夜夜操| 日本操逼无码| 偷拍盗拍亚洲色图图片| 97视频在线免费| 日韩精品9999| 色五月第四色| 97精品综合久久网| 日韩精品9999| 香港成人一级视频在线青青草| 久久麻豆一区二区| 啊啊啊操一区| 91丝袜美腿网站| 欧洲色| 亚洲啪啪性视频| 九九九久| 日本幼女18+| 屁股久久久久久久久| 97这里只精品| 夜夜爽爽夜夜精品视频| 加勒比少妇AV婷婷六月天超碰超碰| 日少妇亚洲版| 玖玖资源中文字幕制服丝袜| 天天看高清麻豆| 亚洲在高跟鞋自慰久久在色线| 操香逼| 中文字幕亚洲欧美在线不卡| 嗯嗯,好大,好爽,好骚| 亚洲国成人情色好看电影| 啊嗯好大视频在线观看| 婷婷激情一区二区三区俺也去| 好爽,再快点啊哈嗯嗯嗯嗯| 欧美丝袜激情| 天天操天天日天天干| 97超碰这里只有精品| 蜜臀久久99'精品久久久| 激情文学小说一区二区| 99在线精品视频| 国产91 丝袜在线播放00-百度| 日韩97在线| 97在线免费视频| 久久精品国产Aⅴ| 国产精品一区二区久久精品| JIZZJIZZ国产精品喷水| 中亚av| 嗯嗯嗯啊啊啊操的我好爽| 26uuu性| 亚洲精品中文字幕一区在线视频| 五月婷婷综合网| 日韩草久视频| 午夜毛片高清免费不卡| 日韩精品人妻中文字幕不卡乱码| 久操91视频| 7777奇米影视久久| 国产精品久久久久中文字幕| 长长久久曰曰夜夜成人网| 激情五月综合网| 桃色六月天| 水澄无码AV| 91在线色| 国产一线二线三线av| 日韩av性爱在线播放| 丰满高潮18xxxx| 国产精点久久久成人| 99热99色| 青青伊人加勒比海| 亚洲人成网站7777| 激情五月天社区| 嗯啊啊啊轻点视频 | 国产精品成人无码av| 日本一区二区不卡精品| 嗯啊不要啊啊在线观看视频| 中文字幕精品亚洲熟女| 91欧洲国产成人久久精品网站| 日本视频在线观看污污污| 日韩人妻大香蕉| 高清肉丝中文无码| 男人的天堂色偷偷青青草视频婷婷网| 97久操| 老熟妇一区二区三区…| 午夜呻吟欧美| 9久久久久久| 青青久久手机线视频| 免费一级毛片在线视频观看| 国产精品密臀网在线观看| 欧美色图 色综合图| 免费伦费视频在线观看| 人妻精品4K4K4K4K4| 亚洲中文sv| 波多野结衣之双飞调教在线播放| 久久久久久久人妻| 偷窥自拍亚洲| 小情侣高清国产在线视频| 夜夜狼人妻| 色色九区| 2024人人操人人摸| 久啪视频| 在线观看黄色电话| 天海翼久久| 超碰九7免费| 日韩九区| 国产人妻久久精品一区二区三区| 日本一本道A级黄色毛片试看60分钟| 国产欧美一区二区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 久久成人东京热人妻| 国产精品久久久久中文字幕| 欧美日韩国产电影| 91精品女厕偷拍视频| 蜜臀精品1区2区| 伊人骚琪琪亚洲天堂网站| 五月天婷婷基地| 成人综合视频久久| www.91人妻.com| 麻豆AV96熟妇人妻| 三级特黄60分钟播放| 熟女乱伦二区| 久久精品操| 亚洲精品人妻吞精av| 99re在线视频| 五月天婷婷小说| 精品在线78| 亚洲中文字幕噜噜噜久久久| 一本久久久精品| av一区二区三区 中文| 久久久久深夜无码| 中文字幕狠狠玩| 亚洲人人夜夜澡人人爽| 两女互慰AV高潮喷水在线观看| 欧美激情视频一区二区三区不卡| 精品国模无码| 亚洲天堂情色| 国产AV久久久蜜爱影集| 天天伊人| 嗯嗯嗯,草死我| 久久亚洲欧美中文字幕国语| 丝袜狂射91| 黄片www.| 99热这里只有精品18| 人妻在线中出视频| 日本三级A片网站com| 日本东京热大香蕉a片| 欧美十八禁导航成人| 色噜噜狠狠色综无码久久| 五月激情综合网| 囯产精品久久久久久久久久梁医生| 九月AV| 国产亲戚伦亲在线| 97Ai亚洲| 北京美女一区二区| 凹凸视频特色日本特黄| 一级片视频啪啪| 偷拍五区| 自偷自拍的亚洲视频| 91亚洲欧美| 国产天美传媒精品| 人妻啊啊人妻啊啊| 熟女精品va中文字幕| 久久大香蕉97| 日日做夜狠狠爱欧美黑人| 日本三级韩三级99久久| 天天看精品动漫视频一区| 国产吹潮女在线观看| 无码99| 国产乱伦亚洲色图高清无码| 東南亚性呦成人伦理资源在线视频| 九九久久久九九| 香蕉人人操tv| 日本韩国国产精品一区| 偷拍亚洲高清图片| 激情婷婷五月天| 国产欧美成人第一页在线观看| 97精品人妻一二三四| 9 7超碰在线免费观看| 欧美啪啪女女| 欧美日韩免费性爱| julia ann久久| 91在线限制级| 人妻少妇精品一区二区三区| 国产一区二区av综合| 亚洲一区中文精品| 久久 精品| 中文字幕免费看| 大香蕉色十月| 久久综合九九| 成人网站 免费观看| 亚洲九九九| 天天操福利视频综合网站| 欧美天堂超碰97| 红桃视频高潮| 色综合91| 嗯嗯嗯啊啊啊在线免费观看| 婷婷丁香久久| 一区二区三区精品久久| 午夜αv| 久久毛卡| 无码视频一区二区| 精品少妇一区二区三区免费观看| 少妇久久久久久| 麻豆天美AV传媒第一页| 麻豆精品久久久久久久| 2021久久国产综合精品青草| 操逼操逼操| 97超碰9| 公司1区2区3区精产精| 加勒比伊人综合| 欧美色图 人妻| 欧美久久久15P| 色老汉色| 亚洲精品骚逼| 亚州色国| 日韩9999| 无毛精品| 死我十八禁| 96国产污污污丝袜| 热的中文 热的有码 热的国产| 9久精品视频在线观看| 亚洲色图国产另类| 伊人色综合网| 国产九月婷婷| 激情综合网激情五月天| 五月丁香六月激情综合| 91九久| 欧美色图中文字幕| 欧亚日韩三区| 亚洲se电影| AV色女综合| 国产情色在线| 97chaopengongkai| 欧洲在线性爱视频| 一区二区三区亚洲| 五月天玖玖资源站| www.色婷婷| 国产日比| 色女综合| 中文字幕日韩情色| 男人的午夜天堂| 成人免费性爱视视| 91社操逼| 五月丁香综合网| 99热亚洲天堂| 天天躁狠狠躁av| 97在线资源| 色综合99999| 人妖欧美一区二区| 自拍偷拍第26| 国产视频不卡在线观看| 久久91精品国产9丨久久分亭| 国产无码一二三区| 91蜜臀在线久久久久| 麻豆AV短剧| 97 国产精品| 日韩在线国产字幕| 最新啪啪视频| 艾草av| 十八禁电影伊人网| 久草加勒比一区在线| 中文色综合| 欧美三级中文字幕hd| 激情五月综合网| 蜜桃色院一区久久| 一区二区三区一亚洲中文字幕、综合区灬 | 亚洲第91页| 本道综合精品| 国产人妖视频一区在线观看| 日本天天吊| 精品久久久久成人码免| 久久无码一区二区二三区性色| 在线国产一区二区av| 一二三四日本视频高清| 欧美激情黑人| 三级日本一区二区三区| 无码精品蜜桃一区二区三区ww| 青青草中文-久久青草精品一区二区三 | 欧美日韩亚洲天堂| 99在线无码精品秘 入口黑人| 国内91熟女人妻丝袜天天精品视频在线| 大香蕉伊人久久| 无码99| 蜜桃臀av一区二区| 亚洲一本色道中文无码aV天美| 中文字幕一区 二区三四五 区日 日骚| 东北操逼| 国产日韩欧美亚洲精品95 | 国产精品免费久久久久久久久久| 久久婷婷综合国际产色怕| 精品国产乱码久久久久久影片| 欧美91久久久久| 韩美日操逼| 丁香色婷婷| 啊啊啊啊啊啊啊在线| 国产黄色剧情影片麻豆免费播放| 亚洲国产精品久久久久久久久久| 综合亚州欧美| 国产一区二区三区影片| 精品国产久久乱码| 色视频蜜乳| 91n美女视频| 九热中文字幕| 97超碰国产精品| 男人的天堂com| 青草av在线| 久久久成人免费av电影| 午夜120视频在线观看| 精品午夜福利国产一区二区在线观看 | 好看的久久不射无码影视影院| 超碰精品日韩欧美国产| 欧美一区二区情色| 欧州一区二区三区四区| 97色97好| 思思热在线视频免费| 无码heyzo高清一区| 777超碰| 日韩乱码Av| 日本阿v天堂在线观看| 欧美色三级片91| 一级一性爱免费视频| 91超级碰| 青青草国产欧美非洲黑人| 淫淫总合网| 国产无码久久高清| 日本亚洲vr欧美不卡高清专区| 青青草华人在线欧美在线| 亚州操逼网| 日韩三级性| 久久性视频| 97Ai亚洲| 高清不卡视频| 91在线超高颜值国产| 偷拍色图| 夜夜爽33333| 成年人黄色视频免费| 亚洲一区二区性爱电影| 97国产超碰| 大香蕉色网| 亚洲图片欧洲图片aⅴ| 久久久亚洲熟妇资源| 性站| 亚洲色欲天天天堂色欲网女| 最新9久久久9免费视频| 91一起操| 性无码专区2020| 亚洲 另类 丝袜 自拍 动漫| 国产 热久久久久国产精品| 欧美在线大香999| 久久精品人体| 老司机深夜影院18未满| 天天爱天天操| 一区二区 韩日AV| 蜜桃成人1区2区3区| 丰满美女一级毛片在线播放| 青青草女人天天干| 中文字暮97| 国产性爱在线视频一区二区| 91第一页| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 久久riav中文精品| 亚欧美色图| 亚洲精品丝袜| av一区二区三区 中文| 亚洲情色综合| 精品超碰国产| 日韩簧片免费看| 亚洲人妻日日日| 日本天堂网| 国模吧 一区二区三区| 伊人影院日本| 性高潮久久久久久久久久久| 日本大香蕉| 中文字幕 人妻不满 在线视频| 蜜乳Av成人片网站| 四虎av在线| 日韩偷拍色图| 欧美亚洲尤物久久| 国产三级片在线观看| 天海翼久久| 99国产在线绯色一区| 十八禁视频网站| ..日韩av毛片精品久久久| 一区二区三| 99久久9| 嫩草 人人网精品| 亚洲男人天堂2019| 黄色片大香蕉| 91在线视频免费播放| 日韩综合第八区国产精品| 人妻在线大香蕉| 97精品国产97久久久久久| 国产精品视频精品一二| 无码WWW免费视频网站| 狠狠干91| 亚洲se91| 国产成人五月天丁香花| 色99久草| 天天在线91| 色超碰综合| 久久久激情| 曰韩av中文字幕专区| 99性爱在线观看| 精品中文字幕第一页| 最近2018中文字幕在线高清第一页| 97欧美| 久久 精品| 天天色欧美| 久久99九九九九6666免费观看软件| 99久久网站| 99精品久久久久久久婷婷蜜桃| 高清无码 国产精品| 99精品欧美一区二区三区桃色| 黄片免费视频2019| 影音先锋每日最新资源在线观看| 青春草莓视频在线观看网址| 探花精品 一区二区| 亚洲天堂一区| 国产熟妇 码视频户外直播| w w w.久久精品| 日韩中文字墓| 精品国产91内射久久| 不卡中文字幕aⅴ在线| 乱伦一区二区三区‘| 亚洲av综合色区图片亚洲| 国产极品精品美女视频| 999久久久| 黄色香蕉视频网站一区| 老司机深夜18禁污污网站| 黄视频免费| 亚洲成人日韩小说| 色噜噜人妻丝袜a∨先锋影| 综合欧美日本三级| 91一区二区| 青青操97| 男人把坤坤插入女人的下体| 色香欲天天天天综合色| 青青草伊人久久| 天天插天天操天天摸天天射天天看| 极品AV网站在线观看| 综合网亚洲1| 激情欧美97| 91久久免费视频互動交流| AV一区观看| 国产日韩区| 91干熟女| 久久天天摸| 中文幕97| 亚洲性高潮| 日韩 国产 欧美自拍| 操逼www.| 果冻国产精品麻豆成人av| 92福利社视频| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 91原创在线观看| 韩国女主播青草在线| 97在线观看免费| 日本淫乱女一区二区三区视频| 操逼天美3区| 国产精品成人在线| 9久综合网| 另类 综合 日韩 欧美 亚洲| 欧美丝袜中文字幕07在线| 久9re热视频这里只有精品| 囯产乱伦一区二区三女| 91东北熟女| 国产精品一级毛片不卡视| 色色五月天婷婷| 色哟哟国产精品免费网址| 久久大精品乱码视频人妻熟女| 国产免费小视频| 成人一级性爱| 欧美精品四区| WWW美腿丝袜香蕉中文| 精品999999| 精品区国产区一区二区三区| 人人操天天爽| 国产精品成人午夜福利| 久久三| 久久久工口| 粉嫩久久久久| 麻豆国产精品午夜视频| 超碰人人干| 亚洲第一二区另类图| 男人天堂资源| 色情五月丁香| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 99只有精品| 97干97色| 日韩成人精品中文字幕| 亚洲s色图| 91视频伊人| 天天欧美欧美亚洲网| 99re在线视频这里只有精品| 日本欧美韩国国产在线| 东京太热久久久| 国产精品国产| 综合五月婷婷亚洲一区| 亚洲码和欧洲精品激情系列| 青草综合| 精品国产片亚洲一区| 97热视频在线观看| 国产av波波国产精品| 青苹果影院男人的天堂| 成人国产视频在线观看| 艹我哪美一区无码| 欧美色综合网| av午夜影院在线播放| 欧美青青视频| 操逼逼一区视频| 七久久久| 欧美在线播放| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 精品国模无码| 91九色网| 午夜噜噜噜| 大香蕉五月天| 中文字幕一区二区三区人妻不卡| 国产精品99久久久www| 欧日韩在线观看| 一级片视频啪啪| 青青草国产亚洲精品久久 | 欧美情色贴图| 97香蕉网| 狠狠干综合| 久热最新在线杭州| 亚洲有码 视频一区| 久久久久九九九| 91AV老熟女视频| 亚洲欧美日韩制服另类| SS久久| 最新中文字幕精品在线| 青草伊人久久| 鸡巴插逼视频| 欧美同性恋 的搜索结果 - 91n| 99久久婷婷国产综合精品草原| 麻豆天天躁天天揉揉AV| 丝袜熟女2P| 国产精品露脸在线观看| 日韩精品电影| 黄色免费网页无码| 精品久久艹| 青青草操逼逼视频| 亚洲av成人精品一区| 91在线限制级| 久久国产乱子伦精品免费女人| 91在线观看,天天综合| 深夜操逼网| 天堂无码精品国产久| 18精品一二区| 好看的91视频| 欧亚在线视频| 乱伦一二三区| 国产热av| 日欧美色| www色日本| 两女互慰AV高潮喷水在线观看| 91色s| 97大色网| 成人片在线播放| 奇米四色影视777久久久| 日韩精品资源| www.男人天堂| 99热在线观看| 视频国产成人精品日本亚洲18| 超碰在线综合97| 奇米四色网| 欧美激情1区| 亚洲 另类 丝袜 自拍 动漫| 97爱爱爱综合| 久久久久国产精品喷潮免费观看臀| 秋霞色色影院| 91久久久久| 日本五十路在线| 久久久九97| 99久久综合网| 欧美国产精品| 国产精品久久久久久亚洲色欲| 97中文字幕一区| 亚洲成人精品久久久| 先锋精品av色鲁| 午夜福利视频在线一区| 乱伦1色页| 97九色| 青娱乐啪啪视频| 色哟哟精品1精品2| 超碰97亚洲区| 九九九九日本 | 凸凹视频在线观看| 91c色| 1769国内精品视频| 日本孕妇一区二区视频操逼免费看| 欧洲性人爱视频| 久久精品视| 欧州激情视频在线一区二区| 欧美日韩人人精品| 五月婷婷综合网| 涩五月婷婷| 日本精品第一视频在'| 亚洲情色中文字幕一区| 日本成人A片网站| 欧美大波激情xxxx| 在线视频97| 蜜桃狠狠色伊人亚洲综合网站| 青青草五月份天| 久久精品国产97欧美精品亚洲 | 婷婷色香| 久久久性爱视频| 性色乱AV一区二区| 用力操死我| 欧美性爱97超碰| 嗯嗯啊啊操死我| 99热超碰| 天天享受天天看| 国产极品精品美女视频| 国产超碰AV在线精品| 久久的免费性爱视频| 国产成久久综合片| 国产强奸AV在线| 加勒比在线观看一区二区| 岛国免费视频在线| 日韩无码a片| 日韩欧美大力操| 在线观看亚洲专区| 强奸乱伦日韩AV| 91GD.COM| 婷婷六月天| 国产久久久9999| 厕所偷拍在线| 欧美激情片一区二区| 亚洲青色欧美| 91色射| 三四中文字幕| 国产狂喷潮在线精品| 无码精品久久| 日本性爱少妇| 精品国产人成在线| 成人免费福利在线观看| 色丁香五月婷婷| 人妻av在线| 欧美日韩淫加| 婷婷激情五月综合| 欧美日韩久久精品爱爱| 日本羞羞的视频在线播放| 无码 黑人一区二区三区| 日本护士高潮| 中文字幕一区av| 亚洲吊色| 99精品综合久久久久五月天| 少妇久久久久久| 日韩精品在线放| 亚洲操逼无码| 少妇超碰在线| 亚洲素人网| 精品国产99999| 一二三四视频中文字幕在线看| 国产精品视频一区二区三区八戒| 夂久色| 丁香婷婷激情五月天无毒不卡 | 欧洲精品区| 91色插| 人人看欧美性爱| 亚洲一区日韩| 欧美日韩少妇色情| 91视频女生| 五码视频在线观看| www.av在线观看| 97亚洲资源| 日韩精品人妻中文字幕不卡乱码| 澳门黄片一香蕉视频| www色日本| 亚洲第一二区另类图| 亚洲色图欧美| 91艹B视频| 日韩少妇丰满亚洲| 91模特在线观看| 污电影在线观看| 大象AV在线| 五月天久久久| 97干天天| 国产无码精品无码| 欧美一级黄片免费播放| 欧美成人一区二区| 免费家庭乱伦视频| 任你草| 超碰是碰在线观看| 久久丁香久草综合网| 久久国产三区| 精久久久| 久久久久久国产精品免费网站| 亚洲天堂人妻一区二区| 亚洲 欧美 第一页| 免费在线黄片视频| 久久超碰98| 成人无遮挡毛片免费看| 久操大香蕉手机视频在线看| 视频在线97| 多毛小伙内射老太婆 | 久热9| 美女91网址| 一区二区三区黄片免费观看| 久久偷拍人| 一起草高清无码| 手机av天堂久久久久| 亚洲AV色图| 夜夜操狠狠操| 亚洲熟女av中文字幕| 六十路日本| 一区二区无码视频| 色成人Www精品永久观看| 亚洲人久久久网| 啪啪啪东京| 久草男人天堂| 搡老女人老91二区| 9999久久久久| av日韩中文字幕| 欧美人妻久久精品二区三区| 亚洲少妇在线影音| 丰满人妻无码一区二区三区| 91少妇香蕉久久精品| 热久久国产| 国产日韩欧美| 人妻中文字幕精品无码| 日韩中文字幕宗合在线| 国产日产精品久久快鸭的功能介绍| 91爰爱欧美| 久久精品国产亚洲AV片多多| 欧美亚洲宗合色性图| 一级A片女人高潮叫床| 日韩综合97P| 国产精品亚洲美女久久久久| 91欧美少妇| 骚逼高潮久久精品| 亚洲影院成人| AV老汉| 成人美女av| 日本 情色 1区2区3区| 这里只有精品久久| 97情超碰色| www.色五月| 伊人操你| 精品一区二区三区四区外站 | 欧美真人抽搐一进一出gif| 天堂岛av| 国产无马在线| 97欧美色综合| 亚洲精品美女久久久久久久久| 蜜桃中文字日产乱幕4区| 测评在线观看AV| 久久亚码| 日本狠狠干| 91视频精品| 久久精品无码不卡| www.色综合| 思思视频免费看网站| 泰国AV在线观看| 亚洲成人免费中文字幕| 91亚洲影视| 情色av电影| 日韩黄色成人性爱| 欧美精品97| 欧美 综合 亚洲| 伊人影院中文字幕| 黄色片一区二区三区四区五区| 日日躁狠狠躁天天躁精品| 日本三级久| 亚洲国产麻豆一区二区三区| 91久久青青草原精品| 影音先锋一区二区在线资源| AAA久久| 欧洲黄色网| 亚洲欧美变态| 色欲人妻一区二区在线| 国语对白在线播放视频| 成全动漫视频观看免费下载| 激情小说亚洲视频| 国产suv精品一区二区四区999| 久久久久久久久成人av解说| 久久久亚洲| 精品无人区麻豆乱码1区2区图片| 极品五月天噜噜| 亚洲精品自拍| 嗯嗯嗯啊啊啊干死我吧| 亚洲色图91欧美日韩| 亚洲四虎熟女精品| 91丨九色丨国产丨人妻在线| 欧美自拍网| 亚洲十八禁止| 色性综合| 五月丁香色色网| 国产午夜无码片在线观看影视| 精品亚洲天堂| 性高潮久久久久久久久久久| 欧美亚洲综合色| 91精品黄在线观看| 国产 无码 一区二区| 久久久96| 97在线免费看视频| 自拍啪啪视频| 日韩电影天堂视频二区三区| 日本不卡高清免v欧美日韩在线观看| 激情干在线| 国产亚洲精品农村妇女| 永久免费av无码网站国产app| 小电影欧美91| 自拍第一页| 美女AV一区二区| 亚洲欧美爆| 色性荡荡荡荡视频| 91精品国产高清久久久久久,亚洲成人| 国产精品人人爽人人做可爱福利| 中文字幕丰满人妻日本| 亚洲九九视频| 91男女| 亚洲性猛| 秋霞鲁丝午夜无码一区二区三| 热久久九九热| 九九热免费国产视频婷婷伊人五月| 91国产精品在线看| 成人婷婷丁香| 狼人久草| 日产狠狠干| 欧美视频一区二区在线| 免费A V在线播放| 人妻精品一区二区在线| 人妻献身系列第54部| 天天操人人操狠狠插| 亚洲综合另类小说色区亚洲成av人片在www| 狠狠爱夜夜| 美女久久久久久久久久久| 久久国产精品视频| 日产成人久久| 91亚洲黄色网| 视频在线观看青青99国产| 四虎免费在线播放| 91精品人妻一品二品三品| 人妻蜜桃臀| 亚洲人妻久久| 欧美Ⅴ性爱| 性夜影院爽黄A爽免费动漫| 乱操乱伦AV| 中日亚韩免费视频| 综合 欧美 亚洲 日本| 大香蕉免费乱伦视频| 亚洲精品视频在线播放| 国产免费久久久久| 嗯嗯啊在线视频| 男人天堂2019亚洲| 色鬼在线综合| 学生妹天天看| 久久久久国产精品人妻aⅴ天堂| 大香蕉手机在线| 久久超碰97| 欧美爱爱97| 久久首页| 日韩免费性爱视频在线观看| 97综合在线| 中美日韩毛片| av 模特一区了| 懂色av中文字幕| 91色色网站| 天天综合网日韩7799| 白嫩国模丰满一二三区| 99亚洲天堂| 日韩av乱伦| 啊啊啊啊啊操我视频| 久久噜| av麻豆啪啪| 99热欧美| 人妻干天天| 亚洲免费在线探花| 天天日天天干天天整| 熟女精品一区二区三区| 东京热一区二区三区四区五区六区| 97精品视频网站| 中文字幕一二三av|