色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
乱理日韩中文| 亚洲诱惑| 情趣丝袜无码操逼视频| 99精品高潮| 国产精品亚洲一区二区三区四区| 久久HD| 久久久三区二区一区| 亚洲 日本 一 二 三| 免费观看国产小粉嫩喷水精品午| 精品国产乱子伦一区二区三区,精品一| 91 亚洲 欧洲| 五月丁香六月婷| 美女午夜福利免费视频| 狠狠爱综合网| 人妻丝袜美腿中文字幕| 国产精品第一页国产大屁股视频免费区i| 天天日天天插| 精品少妇后入一区二区三区四区人妻巨乳| 精品大久久| 亚洲精品97| 天堂亚洲精品久久老牛| 中文字幕女同在线| 欧美青青草视频| 日韩熟女精品无码专区一区二区| 黄片www.| 日韩少妇一区二区三区| 国产67194| 亚洲精品中文字幕一区在线视频| www.99中文字幕| 精品欧美老熟女一二区| 噜噜噜亚洲精| 精品人妻久久久久一区二区三区| 青青青草原| 手机久操欧美综合色码| 超碰这里只有精品| 蜜臀av中文字幕| 国产suv精品一区二区四区999| av无码精品久久久久| 男人的天堂 在线一区| 加勒比综合在线| 亚洲人精品午夜不卡| 欧美中文狠| 天美一二三在线观看Av| 开心六月色| 精品亚洲俞拍视频一区| 精品一区二区三区四区外站| 歐美性天天| 日逼五月天| 激情图片伦理国产一区二区日韩| 韩国女主播青草福利视频| 99热99在线| 婷婷99| 高清国产av无码| 偷看洗澡一二三区美女| 欧美久久人体| 理论久久婷婷网8| 欧美性第1页| yazhouzaixian| 久久久无码精品人妻二区| 东京热毛片调教| 2019男人的天堂| 日韩97在线| 精品欧美老熟女一二区| 国产精品久久久久久照片| 国产精品久久99日日| 成人亚欧免费视频| 天天日天天舔| 青青草影视蜜久久| 二男一女成人A片| 色色国产| 97频视在线| 欧美综合自拍亚洲综合图| 丝袜美腿91| 欧美少妇色图| 日本一久是| 青青操在线亚洲视频观看欧美在线 | 久久久久久裸体| 美女诱惑久久| 国产成人午夜视频网址| 狠狠干,狠狠操| 佐山爱中文字幕| 超碰久草| 亚洲欧洲自拍图片专区满春格| 色y情视频免费看| 亚洲综合中文字幕有码| 狠狠图片青青草| 91美女国产在线| 最新AV在线| 性色生活片久久毛片婬片免费放女人一级毛片 | 人人操,人人插| 日本日皮视频逼| 久久久久久性爱片| 丝袜美腿91| 欧亚无码视频| 久久久九97| 中文字幕日韩人妻视频一区二区三区交换夫妻| 在线97视频| 天天摸夜夜添无码小视频| 中文字幕成人| 日韩一级二级三级免费看完整版| 亚洲AV无码国产成人| 91伊人大香蕉| 人妻精品视频一区二区三区 | 美女骚尻视频| 欧美岛国精品在线观看| 狠狠操狠狠插| 男人的天堂久久| 欧美精品xxxwww| 久九九九九九九九热| 成人一二| 精品久一区免费| 99re黄 | 免费草草草草草视频| 久久专区| 久久超碰免费的| 天天拍夜夜| 日韩欧美午夜视频在线| 欧美情色贴图| 久久综合资源一区二区| aaa淫乱视频| 五十路三区在线| 免费黄色片子| 91中文字幕在线观看| 国产精品一区午夜福利| 成人久久精品| 国产一级高跟丝袜| 亚洲交性| 超碰精品| 国产不卡免费在线视频| 人人爽人人精品乱人伦AV| 岛国黄片网站| 国产精品suv一区| 亚洲国产欧美一区二区潘金莲| 老女人日韩美91| 亚洲97超碰| 久久人妻视频网| 97Ai亚洲| 亚洲伊人久久精品狠狠在线| 小日子操bb在线看| av久日| 久久精品毛片免费不卡| 婷婷人妻激情| 日韩精品.久久精品.AV女优.天美传媒| 天天干人人乐| 97大色网| 国产av又色又爽又黄| 日韩精品影视| 免费综合亚洲中文| 日韩15p| 爆乳免费黄网站| 国产亚洲色停停久久99精品91| 蜜桃臀 后入 一区 二区 三区 在线| 亚洲无码电影久久久| 欧美色九九九| 亚洲精品啪视频| aV中文麻| 在线黄色污污网站| 伊人91| 波多野结衣之双飞调教在线播放| 久久久久久久久久久久久久久久9| 中文精品一区二去| av天堂加勒比| 亚洲欧美中日韩| 天天干干天天干干| 精品人妻一区二区三区不卡断| 男人亚洲91首页在线| 91久久九九精品国产综合| 日本中文字幕一区| 97视频免费| 国产suv精品一区二区四| 亚洲精品国产熟女| 色欧美亚洲| 亚洲s色图| 亚洲性综合9| 奇米四色影视777久久久| av影院十区| 欧美久久婷婷| 天天日天天插| 爱av免费| 人人看人人插| 色九久| 亚精品无码毛片一区二区三区| 亚洲色诱惑| 日韩人妻有码免费视频| 亚洲天堂久久久久久粉红视频| 天天激色| 久久亚洲熟妇在线视频| 97色涩| 欧美极品女人的天堂| 日本成人A片网站| 亚洲无码日韩电影| 亚洲图片 欧美电影| 国产成人主播| 亚洲日韩青青草色月| 亚洲va综合va国产va中文| 亚洲字幕一区二区| 情趣丝袜无码操逼视频| 视频不卡中文字幕| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲色鬼| 91 丝袜在线播放| 久久美女福利是上海美女| WWW美腿丝袜香蕉中文| 免费看国产大AB| 欧美激情专区| 中国农村熟妇毛片视频| 日韩少妇在线视频| 1000午夜黄色| 日日噜噜夜夜久久亚洲一区二区| 亚洲精品一二三四区| 久久人人妻| 色色色网站| 超碰碰碰碰| www.天天干| 日日操天天操| 色情综合网| 在线亚洲精品久久久| 狠狠 91| 激情五月天婷婷| 色婷婷电影| 久久久久9999| 亚洲少妇色| 久久久久13| 欧亚乱色熟一区二区三四区| 91亚洲欧美色图| 国产传媒1234区| 97超碰资源网| 天天肏夜夜肏| 免费一级特黄特色大片在线观看看| 日韩熟女操逼| 中文字幕jul-617人妻熟女| www九九热| 99热自拍| 日韩资源网| 日韩精彩视频| 日韩成人私密一级精品av| 国产乱伦视频污| 影音先锋日本乱伦| 欧美日韩第一页| 一本道综合色图| 久久综合日韩亚洲欧美| 国产精品丝袜久久亚洲不卡| 色九久| 日婷婷| 日本一区二区成人在线| 久久久com| 久久綜合很很很| 操曰本熟女| 性色综合网| 欧美黄色片在线播放| 人妻中文字幕日韩电影| 亚洲天堂色图| 尤物视频偷拍免费| 97亚洲综合影院| 色就色综合| 操操碰| 亚洲天堂电影网| 男人的午夜天堂| 尤物网址| 台湾佬中文娱乐自偷自拍| 九九九精品一区二区无码| 97在线视频免费看| 国产成人自拍视频视频| 日韩av女优在线免费一区| 超碰日本97美女人妻人人玩人人爱| 久久成人国产精品| 国产一级αv免费看片| 久久手机视直播| 99日视频在线免费| 激情 欧美 亚洲 小说| 日本久久网| 日韩图区| 啊啊啊不要啊啊受不了了视频在线| 国产麻豆91欧美一区二区久久婷婷国产精品| 国产一区二区在线播放| 被体育老师抱着c到高潮| 男人天堂.AB| 亚洲久9| www.av在线视频| 97玖玖人妻| 天天射日日干| 亚洲日韩一区电影| 一本一道久久综合久久| 国产精品无码在线| 任你干在线视频| 一级二级三级黑人无码| 久久精品亚洲东京热色播| 97综合激情| 性爱av在线免费观看| 亚洲男人的天堂AV| 中文字幕人成乱码熟女香港| 懂色AV中文| 视频国产欧美在线播放| 又大又黄国产| 深夜福利黄片| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 天天干天天日天天射黄色片| 97国产精品| 婷婷色综合| 999色欧美中文字幕| Blackedraw视频一区二区| 好爽免费视频,| 视频国产精品未满十八禁止在线观看| 亚洲一区二区 麻豆传媒| 亚洲日本激情| 中文字幕女同在线| 国产92麻豆天美精品色欲5| 91国产丝袜美女| 全球成人中文在线| 98超碰欧美| 99热超碰| 国产无码精品无码| 九九热午夜欧亚国产视频| 户外裸露刺激视频第一区| 日日干夜夜骑| 99性视频| 秋霞色色影院| 超碰97人人乐| 国产原创精品| 殴美在线AⅤ| 狠狠躁久久躁| 999亚洲国产视频| 青青草在线视频人人想人人上| 欧美色图色综合| 日韩久久超碰色| 久久精品中文字幕无码l| 精品二区久久| 国产乱弄免费在线视频。| 欧美不卡二区| 麻豆91熟妇人妻中文字幕茄子| 亚洲精品97在线| 免费福利视频中文字幕| 日本在线999| 精品熟女一区=区三区| 欧美天天干| 男人的天堂com| 久久免费看高潮毛片韩国| 黄色激情电影在线观看| 97久久久网站| 欧美日韩大陆黑人少妇99| 人人摸人人叼| 95人妻爽爽人人做人人澡| 97免费在线观看| 日本久久综合| 闷骚老熟女15P| 日韩精品一区的| 无码不卡八戒| 亚洲动态色图| 人伦四五区| 亚洲国产一级中文综合久久天堂在线免费观看 | 97在线免费观看| 亚洲区限制级 99| 中文字幕视频在线观看一区二区| 国产福利av精彩对白| 欧美91精品国产自产| 综合97亚洲| 九九毛片这里只有精品| 国产一区二区欧美日本| 国产精品久久久久久久AV大片| 日韩熟女精一区二区三区不卡| 91色色综合| 亚洲综合在线高清| 久久色人体 | 18岁禁 茉莉成人久久| 九九久久综合| 欧亚性爱啪啪| 国产成人欧美一区二区三区的国产| 性色综合网| 新怡红院| 老熟女天天操| 97射欧美| 91在线国产后入风骚翘臀美女素人| 97露脸精品丝袜| 久视频在线观看| 91 刺激在线| 欧美日韩性爱操大逼| 影音先锋新男人| 一区操逼| 蜜乳AV一区| 久久精品 六十路 熟女 欧美| 免费视频一二三区| 国产精品96| 亚洲熟女av中文字幕| 97视频免费在线| 久久人体一区二区| 青青草成人视频在线观看二区| 狠狠操,使劲操| 91天天美女| 亚洲人综合| 国产久久男人天堂| 91美女视频电影| 91欧美综合在线| 免费超碰97久久| 国产人人干| 久草电影网| 99999亚洲另类| 久久人| 极品国产内射| 国产日产精品久久快鸭的功能介绍| 精品国产91内射久久| 欧美日韩性爱电影在线| 国产传媒操逼视频| 激情五月综合网| 免费看美国人人爽,人人操| 人妻夜夜爽天天爽麻豆三区网站 | 亚洲综合 欧美| 99精品九九九九九九| 夜夜欢天天干| 国产精品成久久久久午夜午夜| 中文人妻av高清一区| 色欲日韩欧美在线一区| 成人看片网站| 欧美亚洲AN| 中文字幕av片| 超碰色综合| 亚洲天堂一区二区久久| 五月丁香影视| 成人黄页| 69精品| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 人妻日日干| 婷婷中文字幕| 日韩精品作爱导航| 女优大全 - 91n| 91人妻最真实刺激绿帽| 99操视频| 日日夜夜草草草| 日本一二三免费久久| 水多多映视AV| 日美免费黄片| 激情五月综合网| 99色色网| 天天干天天中出av| 91美女在线| 亚洲无码免费看| 99成人| 久久久久久久久久久999| 日本三级韩国三级美三级91| 亚洲天堂欧美| 丁香五月自拍| 亚洲怡春院| 极品综合| 久久最新免费视频23| 屁股久久久久久久久| 日本性爱视频一级| 97在线免费看| 欧美亚洲特P| av在线一区二区三区| 欧美狠狠弄| 少妇精品久久| 色九月婷婷| 欧美亚洲国产日本在线,久久精品国产| 欧美综合第一页| 黑人精品成人一区二区三区| 亚洲精品蜜桃久久久久久久| 国产AV色黄看到爽| 日夜干射色啊| 一级AV性爱| 欧美综合97www| 亚欧美色| 啪啪91| 酒色综合网| 欧美色婷婷| 亚洲欧美日韩电影网站一区 | 另类在线| 偷偷人人精品女女久久| 男人兔费天堂| 熟妇人妻精品一区二区| 美女刺激久久国产欧美| 女生看匆91网站| 免费久久精品麻豆一区二区av| 午夜无码熟妇丰满人妻| 亞洲久久直播| 欧美天堂亚洲电影院一区在线播放 | 日本人人操人人操| 亚洲骚男同com| 日韩在线观看字幕精品| 色69大色97香蕉| A片三级无码| www.久久超碰| 97网址www| 天美91| 一区二区偷拍拍视频| 日韩熟女精一区二区三区不卡| 午夜免费视频1000| 91搡老女人老妇女老熟女歌词翻译| 天天综合91在线| av激情亚洲五月天| 欧美国产一区二区三区麻豆传媒| 操逼操逼逼操操逼91| 果冻传媒一区二区三区| 大香蕉av在线| 人妻一区二区三区四区视频| 99精品丰满人妻| 伊人五月天激情| 国产人妻久久精品一区二区三区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 综精品久久久aaaa| 日韩免费大片一级播放| 农村少妇久久久久久久| 天天操天天射青青草| 不卡中文字幕aⅴ在线| 亚洲情色一区二区三区| 91蜜桃婷婷狠狠久久综合9色| 久九九九| 天天内射| 精品少妇高潮久久| 日本一区二区电影网站| 操逼逼中文字幕| 天天日天天干少妇日| 五月天色电影| 综合激情五月丁香| 高潮毛片无遮挡高清免费| 日本免费二区三区| 久久有碼| 91狠| 天天干天天操天天干天天操| 校园春色综合网| 国产精品第一页国产大屁股视频免费区i| 久操热线| 天天色黄色影院天天操| 91日韩国产欧美亚洲另类精盘州至城都| 美女大乳久久久久久久女人18| 亚欧高清在线| 天天操人人操狠狠插| 熟妇色99| 欧美肥臀在线| 日本天天干天天搞一区| 久久精品视频久久久| 国产成人精品日本亚洲语言| 九九综合久久中文字幕| 国产精品片| 中日韩久久久| 欧美 日韩 婷婷 五月| 天天操夜夜嗨| 天堂69亚洲精品中文字| 久湿久久| 成人在线午夜视频一区| 精久久久91| 亚洲色图超碰在线| 伊人色综合网电影| 黄色AAAAA欧美| 亚洲AV成人精品网站在AV| 熟女熟妇一区二区三区视频| 国产农村妇女精品一| 久操免费观看| 激情文学小说一区二区| 日韩精品作爱导航| 久久仑合| 九九久久99| 性感女人网页在线观看视频| 天美AV片| 6080yy午夜理论三级一区二区三区无码| 操逼不卡中文字幕| 操逼逼中文字幕| 黄色片一区二区三区四区五区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 色97干| 日本道人妻久久久在线不卡色视频| 热热色色综合| 91九色丰满高潮| 欧美色图在线视频少妇| 精品中文一区二区| 智利AV在线网| 国产精品伦理| 九久9精品| 日韩超碰97| 校园春色 欧美| 亚洲美女AV无码| 91福利网在线观看| 91性高朝久久久久久久久| 久久这里只精品免费福利| 日欧操屄| 日韩不卡在线一区二区| 婷婷色播婷婷| 视频二区美腿丝袜制服人妻欧美| 欧美熟爽综合| 久久超碰免费的| 天美一区在线| 97亚洲国产影视| 激情五月综合网| 鲁鲁色综合网| 天天日天天舔东京热 | 少妇厨房愉情理伦片bd在线观看| 国产精品一区av在线| 黄色AAAAAAAAAAA大片| 国产精品视频白浆免费| 亚洲精品视频二区| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | av在线一区二区三区| 色色色色网站| 久操av在线| 快播久久人人aV| 欧美超碰97| 精品人妻一区二区视频| AV中文在线| 综合激情97| 日本高清视频在线观看黄已三辽| 试看日韩黄片| 国产美女高潮叫床视频| 国产天天骚| 亚洲人综合| 日本操逼无码| 黄aaaaaaaaaaaaaaaaaa色网站| 久操综合在线| 综合大香蕉美。| 久久在线观看免费视频| 色综合色欲色综合色综合色综合| xxx亚洲午夜天堂| 骚货 中文字幕 av| AV一起草在线| 欧美综合骚| 亚洲人精品午夜不卡| 12一15性XXXX粉嫩国产| 日韩无码专区| 日韩久草| 成人小说视频在线精品欧美| 久久9精品视频| 精品九九九九九九| 亚洲综合中文字幕有码| 多乙久久久久久| 男人天堂一区二区| 一本色道久久综合熟妇| 精品日韩人妻精品一二三区| 丁香五月激情婷婷| 97爱b| 91殴美| 日韩性爱播放| 日日骚 av| 亚洲av总站| 国产精品色| 岛国福利在线精品播放| 久久精品免费| 中文视频在线观看| 激情久久久| 久久久久久久9最新免费视频观看| 变态综合色| 欧美一级做a爰片免费视频| 97bbn| 久久无码一区二区二三区性色| 久久久久免费少妇| 高清不卡 中文 人妻| 久久精品国产亚洲AV先锋| 激情专区综合| 欧美色亚洲色| 国产欧美一区激情交| 91n.欧美| 99久久久久| 日本一二三免费久久| 去干网最新版| 中国91AV| av中文字幕在线熟女| 亚州男人天堂| 91在线综合网| 中国AV美女| av麻豆啪啪| 亚洲高清无码在线桃色| 久久久久国产精品人妻aⅴ天堂| 久久成人午夜精品影院| 很狠操| 五月天社区| 天天色欧美| 国产视频三区四区| 最新日日夜夜天天干干| 欧美91丝袜| 国产精选三级在线观看| 少妇无码999| AV色天香在线| 人人看人人插| 97爱啪| 一区二区激情国产熟女| 成人五月天丁香激情综合| 大吊色| 欧美熟女操屄| 亚洲色交| 91在线色| 国产原创剧情在线丝袜 | 日韩av在线精品观看| 91久久伊人婷婷青青草| 一级啊性爱在线视频| sewuyueav| 青青草伊人久久| 一级啊性爱在线视频| 综合第一页| 午夜后入| 3571色综合一区二区二区| 超碰在线欧美性爱激情| 九九九久| 久久这里精品国产99丫e6| 中国女人内射6XXXXX| 97日韩| 中文一区在线日| 天天综合亚在线| 三级网色| 18禁看网站一区| 99re在线视频这里只有精品| 夜夜嗨AV蜜臀av| 丰满人妻一区二区三区大胸懂色| 国产一级内射高清视频| 欧美最大综合网| 狠狠久久四虎| 亚洲av无码成人精品国产| 日本爽爽爽爽爽爽免费视频| 91N综合网| 欧美国产有色电影| 亚州操操穴网| 97色婷婷| 亚洲天堂无码| 国产乱色国产精品免费视| 午夜男人的天堂| 东京热99999| 久久老子无码午夜伦不卡| 色综合 加勒比| 综合网,亚洲,欧美| av婷婷色婷婷色六月| 被窝影院午夜看片无码| 东京太热男人的天堂久久久| 91爱做| 日韩三级久久久| 粉嫩在线一区二区懂色| 午夜视频好爽啊| 欧美色www亚洲国产阿娇要播| 亚洲中文sv| 97国产综合欧美| 中文字幕一区二区三四五区日日骚| 久久天天摸| 激情婷婷| www.久久| 亚洲综合在线视频| 国产超碰人人操| 欧美一区二区三区日韩| 日本色色色视频| 人妻一区视频| 丰满岳乱妇一区二区三区| 91在线秘 男同| 黄色香蕉视频网站一区| 伊人一级免费黄片| 亚洲最新Av| 欧美组图日韩亚洲中文字幕| 夜夜嗨视频| 青青草好吊色| 久九九九| J?P?NESEHD熟女熟妇伦| 久久性爱视频免费看| 九九九热| 日韩免费一级性爱视频| 成人五级久久| 国产一级137片内射麻豆| 国产探花日韩援交| 国产精品无码久久久久2028| 亚洲色色探花| 天天插天天插| 三级日本一区二区三区| 97啪啪| 丁香婷婷五月| 国产亚洲深夜激情| 亚洲第一免费视频| 激情综合网五月婷婷五月天| 中文字幕成人理论在线| 日本福利二区视频| 91大胆欧美| 97超久碰| 国产乱青青草久久| 国产97色在线 | 亚洲| 黄页av| 操操逼视频| 国产欧美日韩精品中文| 婷婷五月天av| 日本九九久久99播| 加勒比人妻综合| 96超碰网| 欧美精品23| 一区二区三区亚洲| 国产精品无码AV网站| www久久久| 国产久久视频| 97超碰色中文字幕| 亚洲人天堂| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 天天看少妇| 夜夜人妻爽| 98超碰欧美| 天天干天天燥| 国产 码在线成人网站| 欧亚第一综合网| 人妻少妇精品无码专区二区密桃 | 欧美欲色| 亚洲另类色综合网站| 国产婷婷综合在线观看| 一区二区三区欧美激情| 日产中文字幕2020| 欧美亚洲首页| 久久久无码av精| 亚洲国产综合久久天堂| 草B在线| ,成人免费啪啪视频| 五月丁香婷婷综合| 久久久久久久9最新免费视频观看| 男人久久天堂| 日韩不卡a级视频专区| 青青草亚洲一区| 久草看看看| 亚洲色图日韩精品| 99国产精品久久久久久久成人热 | 免费观看有码高清视频| 亚洲麻豆18发?| 一个色导综合| 日韩偷拍色图| 巨乳特殊服务按摩| 大色综合网| 美女大乳久久久久久久女人18| 久久精品区| 超碰97丝袜| 亚洲综合九九| 久久精品久久久久久久久| 日韩AV中文字幕电影| 婷婷五月天色网| 偷拍亚洲熟女视频播放| 我爱大香蕉| 91九色丨国产丨爆乳| 青草一区二区| 午夜免费福利视频一区| 91久久久老司机| 国产无码高清操逼视频| 久久久精久久久| 东北熟女91| av九九| 91天天爽| 超碰九色| 肥臀熟女一区二区三区视频| 激情专区综合| 97欧美日韩精品| 亚洲各类熟们中文字幕| 18禁久久| 色爱综合网| 少妇熟女视频一二三区| 亚洲色图亚洲无码强奸乱伦| 美女写真| 香蕉色网| 熟妇操花| 久久久久成人网| 婷婷视频网| 九九九一二三| 国产乱码久久| 欧差乱伦二三| 狠狠搞 亚洲91| 另类图片欧美激情综合| 懂色AV中文| 亚洲国产精品有声| 国产久久久久影院老熟女| 日本五十路熟女一区二区| 极品一区二区三区免费| 国产成人网址| 亚洲熟女av中文字幕| 美女啊啊啊啊啊啊啊| 久久精品国产Aⅴ| 青娱乐大香蕉| 尤物国产一区在线观看| 久夜操| 色噜噜国产在线| 天天爱综合网| 婷婷九月色| 国产v亚洲v日韩v欧美v片另类| 日韩av三四区| 在线观看亚洲专区| 欧美se综合| 动漫片子网站3黄| …中文字幕亚洲乱,97人妻无码费视…| 国产成年女黄特黄| 国产自产91区13区| 亚洲 欧美 偷拍 唯美| 粉嫩久久久极品| 开心五月天激情网| 亚洲97成人在线观看| 超碰97亚洲区| 亚洲色五月| 日韩欧美午夜一区二区| 亚洲日本大香蕉1| 国产日本熟女顶级一区二区三区视频 | 老司机午夜福利视频一区二区| 日本肏逼视频在线观看| 久久国产乱子伦精品免费女,网站| 蜜桃中文字日产乱幕4区| 狠狠操夜夜| 熟女人妻一区二区三区免费看 | 91网九色蝌蚪操熟女| 亚洲清纯唯美| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 免费AV播放| 中文字幕人成乱码熟女香港| 大逼色网站| 婷婷15月天青娱乐| 国语人妻精彩刺激| 国产精品香蕉热久久新品| 五月丁香激情四射| 免费精品AB| 91在线丝袜视频| 亚洲欧美大香蕉| 国产 无码 一区二区| 亚洲欧美日韩偷拍色图| 欧美天天影院| 成人在线午夜视频一区| yirendaxiangjiashipin| 免费毛片在线播放| 亚洲色系另类精品国产| 国产乱子伦久久精品综合一区二区三| 欧美日韩天堂| 国产白嫩精品久久| 成人资源中文字幕在线观看天天| 男人a天堂手机在线版| 肏逼视频日本| 日本加勒比无码专区| 蜜桃网熟妇| 亚州欧美总和| 日本一天色道久久久精品视频| 夜夜嗨AV一区天天| 久久色情| 中字乱伦AV| 人人操人人大香蕉| 久久久亚洲高清不打码| 极品欧美一区二区三区| 日韩成人无码| 91精品国产91综合久久蜜臀| 亚洲小说视频| 欧美色图另类图片| 夜夜骑日日| 精品二区三四区五电影 | 亚洲色婷婷久久久综合日本| 91黄站| 久久岛国| 天天色欧美| 啊啊啊操死我| 国产精品久久| 九九综合九九综合| 色色毛片| 亚洲另类欧美精品| 国产亚洲精品A在线观看下载| 青娱乐淫乱1314| 性色AV蜜色av色欲av| 一起草三级AV电影在线观看 | 人人爱操| 五月丁香啪| 先锋精品av色鲁| 91色艳| 欧美三级免费伊人| 97天天综合网| 好舒服视频| 欲女人妻性色av| 国产九九九九九九| 淫纸中9区| 亚州男人天堂| 立川理惠被中出无码| 蜜乳成人AV| 国产绿奴视频在线观看| 国产精品无套内谢| 国产剧情AV不卡在线观看| 午夜色婷婷| 中文字幕五区| 精品视频97| 一区二区不卡免费| 狠狠躁伊人中文字幕| 丰满熟女一区二区三区在线播放| 立川理惠被中出无码 | 日韩综合97P| 国际精品久久久| 亚洲天天在线| 1人人看人人摸人人操| 亚洲最新a在线观看| 五月天色色色| 亚洲情色一区综合| 99日免费视频中文字幕| 男人的天堂视频精品乱在线| 一起草三级AV电影在线观看| 懂色天天爱天天日天天射天天澡| 韩国三级理论在线| 丰满欧美少妇| 夜夜 中文视频rt| 91A欧美电影网站| 久久久久亚洲三级电影| 五月丁香社区婷婷日韩欧美精品影院| 99激情| 97精品97| 超碰九7免费| 思思热国产在线视频| 久久综合婷婷| 久久骚少妇| 亚洲精品欧洲色| 日本黄色大片一级视频免费麻豆| www.婷婷| 亚熟hd视频在线| 999久久久九九九九| 欧美老妇曰批的视频| 亚洲 综合 欧美| 色在线69堂| 国产偷拍网站| 免费黄色视频网址| 亚熟hd视频在线| 色图综合网| 欧美很很操视频| 性色av一区二区| 69麻豆天美| 美国一区二区免费视频| 超碰性爱97| www.91视频网| 国产精品成人无码av无码免费| 日韩紧密久久| 亚洲资源一区| 中文字幕aⅴ在线视频| 欧美高潮在线| 中文字幕一二三| 97精品综合久久| 亚洲图片 激情小说| 高清国产无码av| 情色AV电影| 国产精品日日摸天天碰| 强奸乱伦av电影| 日韩午夜国产| 蜜臀无码视频在线观看| 性爱动态120秒| 97伊人超碰| 肉嘟嘟www视频在线观看高清| 亚洲永久AV无码精品秋霞| 人人摸人人入| 国内精品999| 美女91在线| 五月天开心网| 97久久超碰日韩精品| 亚洲最大无码中文字幕网站| 日韩精品影视| 天天综合网日韩7799| 亚洲自拍一区夜夜操| 亚洲一卡二卡在线免费| 高树玛利亚无码流出| 东北毛片| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 婷婷综合五月天| 黄色成年| 99精品在线观看| 中文字幕乱码在线观看| 91色情黑丝搞鸡在线观看一区二区三区三州| 激情视频图片| 国模精品一区二区三区苹果色戒| 超碰97综合网| 国产女人成人精品视频| 色69大色97香蕉| 丁香婷婷啪啪| 亚洲熟妇A V黑人| 欧美制服网站美腿丝袜| 日本操逼视频免费| 天天弄欧美| 看大黄色大片原件| 免费97视频| 黄网色一区二区三区四区精品| 久久青娱乐| 熟女精品一区二区三区| 免费精品无码一级毛片牛牛影视| 图色综合网| 日本东京热加勒比久久| 天天干1区2区在线| 狠狠干综合| 欧美国产精品久久九九| 老熟妇综合| 久久精品国产亚洲AV无码电影| 性生活性生大爱77AV国产| 天天91~综合入口| 大二网站亚洲| 日韩 女同 综合| 激情婷婷丁香| 久久永久无码人妻视频| 日韩欧亚中文在线| 去干网最新版| 久久六六| 亚熟hd视频在线| 超碰AV在线| 亚洲第一页第二页激情| 97国产伦理| 亚洲男人天堂Av| www.久久制服糖| 天天干夜夜操一区二区| 91九久| 日韩精品中文字幕一| 女生看匆91网站| 双插在线| 69精品人人人人| 五月天久久综合网| 色噜噜日韩精品| 99xav| 五月激情综合网| www.伪伪| 欧成人精品H无码| 天天操人人操骚逼网站| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 91在线丝袜视频| 99热这里只有精品9| 成人免费看吃奶视频网站| 男女啊啊啊| 很很很很操| 亚洲色堂免费视频| 三级片网站在线播放| 日韩无码视频黄色| 中文字幕一区二区无码成人| 欧美一级专区免费大片| 久操黄色视频| 高清在线偷拍自拍视频| 日韩中文字幕精品一区在线| 好吊色青靑草| 综合情欲网| 精久久久91| 九色97| 熟女乱伦二区| 奇米狠999| 久热精品在线国产| 亚洲综合首页| 91天美免费| 综合激情一一91| 伊人网在线观看| 超碰爽人妻熟女Av| 五月天婷婷综合网| 日韩免费看黄片| blacked精品一区国产| 无码直播久久久| 张柏芝国产一区在线观看| 一区二区视频在看| 视频在线97| 91国产丝袜美女| 亚洲资源网| 欧美成人综合| 久久最新视频免费观看| 色呦呦、国产精品| 96久久科窝| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 六九九九| 婷婷激情五月综合| 久99| 色五月婷婷五月天| 午夜丁香婷婷| 99精品网| 玖玖在线视频| 五月天开心网| 久久久久成人蜜桃精品| 艹我哪美一区无码| 日韩AV电影网站| 国产少妇与亚洲av| 俺去久久| 自拍盗摄一区| 欧亚久久偷拍视频| 97er欧美性| 啊啊啊好疼| 啊啊啊操死我了| 精品无av| 久久这里只有精品9| 超碰色综合| 我要去看2个日本美女.com曹逼| 黄片视频观看| 性饥渴少妇av无码毛片| 在线无码网站| 在线无码操| 狠狠狠狠狠狠| 91色碰| 欧美成人综合|