久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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
返回資訊列表
91精品人妻一品二品三品| 亚洲砖码砖专无区2023| 午夜影美女日鸡鸡天天视频国产| 精品一级毛片在线观看| 亚洲国产精品V?在线播放| 强奸国产精品视频| 男人干美女| 狠狠躁久久躁| 国产人妖的免费的视频| 综合久| 97天天综合网| 国产精品久久久 | 97这里有精品| 国内偷拍精品一区二区| 天美麻花大全视频| 久久一留热品黄| 97中文字幕九区| 不卡啪啪视频| 99热欧美| 丁香五月性| 91艹| 亚洲日韩精品久久久久一区壹牛| 99999久久久久9国产精品| 91操熟女视频| 丁香六月婷婷久久综合| 欧美乱欲| 天天看综合网| 中文字幕交换人妻| 99rre在线精品99re8| 秋霞视频一区二区| 日韩一级二级三级免费看完整版国语版 | 欧美色图亚洲色| 国产精品久久伊人| 搡老女人老91二区| 人妻五十路在线| h4610国产人妻| 大香蕉之青青草原| 国产 v乱码一区二| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 在线观看黄色电话| 中文字幕三四区| 91久久久视| 婷婷中文网| 中文字幕无码不卡啪啪| 人人摸人人叼| 国产成人综合网| 欧洲一区二区| 啊啊啊好爽快点啊啊啊嗯嗯| 亚洲另类小说卡通动漫| 九九九九AV| 亚洲怡春院| 狠狠中文字幕| 九月丁香婷婷| 国产精品熟女AV中文字幕在线播放| 超碰97精品| 99re99在线视频| 色999人与兽| 影音先锋日本一区二区| 手机在线A片| 欧州一区二区三区四区| 国产强奸乱伦第1页| 狠狠做深爱婷婷久久二区| 另类视频在线| 欧美大干日韩| 亚洲交换| 美欧老女人97| 欧美中字二区| 亚洲性少妇| 日日A∨| 天天激色| 艳尻美人妻| 大学生口爆吞精| 亚洲色狠| 免费视频97| 欧美姓爱综合网| 日韩99999| 欧美亚洲图片| 高清在线不卡一区二区 视频| 黑人在线91| 极品销魂美女一区二区| 国产又粗又大硬免费色网视频| 4虎在线视频| 东北女人性交| 日韩一级二级三级免费看完整版| 欧美国产精品久久九九| 亚洲最大成人a毛毛片| 一区二区视频在线播放| www九九热| 2010男人的天堂| 日日干日日| 欧美少妇第一页| 综合网欧| 精品人妻1区| 国产亚洲日本精品在线| 国产AV天美| 开心五月婷婷| 精品四五区| 好屌色综合| 国产搭汕a级片| 高清无码在线播放网站| 五月丁香| 校园春色五月天| 国产成人亚洲精品无| 青娱乐啪啪视频| 二色av| 日韩精品三级片长长久久| 夜夜爽夜夜| 一区二区三区黄片免费观看| 欧美色天堂网在线视频| 久久一区二区三区入口| 久热久一区二区三区| 天天爽天天| 欧美人妻色| 一区二区三区不卡视频| 99∨VTV| 五十路熟女工口| 日本一级特级毛片视频| 97精品国产97久久久久久| 精品无码产区一区二| 乱伦一区二区三区‘| 区一在线观看| 人人操人人操人人人操| 啊啊啊啊啊啊啊网址在线观看| 毛片电影一区二区三区| 天干天干天干天天做| 久插综合| 香蕉人人操tv| 91亚洲丝袜| 少妇干B| 亚洲欧美日韩电影网站一区 | 欧美人与动性人交a| 欧美专区日本专区| 亚洲第一视频 欧美风情 日韩| 五月丁香综合激情| 一级一性爱免费视频| 91丨国产丨白浆| 香蕉人欧美综合| 青青国产在线拍揄自揄拍| 国产人妖视频一区在线观看| 黄在线| 欧美图片校园春色| 91久青| 影音先锋少妇| TS人妖另类精品视频系列| 欧美 青青草| 国产黄色av大片网站| 97资源久久| 视频在线观看青青99国产| 欧美精品成人亚洲| 亚洲巨爆乳一区二区三区四季网| 超碰在线日韩一区| 人人澡人人干| 亚洲第一页色网| 级品肉射| 午夜啊啊啊| 亚洲av资源| 久久成人午夜狠狠| 使劲用力艹少妇视频一区二区| 亚洲春色激情小说| 丁香五月激情婷婷| 伊人黄色视频免费观看| 欧美1区二区三区公司| 91国产丝袜白虎| 一区超碰一区| 在线播放欧洲免费av| 亚洲自拍另类丝袜综合| 超碰97首页| 亚码人妻| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 老熟女91av| 欧美日韩一区二区三区四区蜜桃| 福利社区午夜一区二区| 午夜男女爽爽爽影院视频| 九九九九精品| 中文字幕日韩人妻视频一区二区三区 | 无码高清操逼网址| 操操操日本的逼| 欧美性爱在线无码| 精品久久久亚洲AV成人网站| 久久精品亚洲成a人天堂| 超碰在线人妻| 天天干天天日天天射黄色| 天天操夜夜操| 精品一久久久| 欧美成人午夜免费福利785| 久草国产在线视频| 国产福利精品最新在线| 亚洲nv男人的天堂网| 口爆综合网| 四虎国产成人精品免费一女五男| 高颜值美女口爆高潮浪叫| 天天干夜夜操一区二区| 白丝被操91| 免费精品人妻一区二区三| 成人三一级一片aaa| 夜夜一区二区| 97在线观看免费| 无码人妻精品酒店| 久久香蕉影院| 夜夜高潮夜夜爽高清视频一| 一级黄色视频网| 人人摸人人添人人操 | 亚洲av综合色区图片亚洲| 色色五月天激情| 黄资源| 熟女熟妇伦久久影院毛片一区二区| 五十路三区在线| 国产麻豆福利av在线播放| 2018色综合天天操| 玖色av| 欧美A片中文字幕| 亚洲av影院在线观看| 天天操av懂色| 久久产精品一区二区三区电影 | 九九黄色网| 一区麻豆 高清中文字幕| 九热超碰| 一牛一区二区三区久久| 26uuu最新| 青娱乐亚洲热| 人人摸.人人色| 久久久人妻| 亚洲极品| 欧美成va视频网站| 亚洲欧美激情小说| 91热爆在线| 欧美最大综合网| 日本潮催一卡操| 人人乐大香蕉| 国产精品久久久啊| 国产精品 午夜福利| 中文操逼字幕| 99久热精品99re6热| 翔田千里AⅤHD无码| 啪啪啪男女亚洲中文字幕99| 精品-91人妻子系列| 综合色久欲| 国产真实野战在线视频| 精品国产乱码久久久久久免费| 99日精品欧美国产| 97精品久久| 色五91| 无码高清操逼| 精品然女一区二区| 国产树林里野战在线看| 公司1区2区3区精产精| 日本一级一级一级一级| 综合天天。| 热九九精品| 亚洲无线码欧洲精品区别| 老熟妇综合| 日韩激情中文字幕有码| 人人爱人人乐人人操| 97网址97| 久久精品高清无码一区| 蜜桃久久久久久| 国产不卡免费在线视频| 亚洲国产综合图区中文字幕| 99久久精品国产高潮| 亚洲欧美电影| 女上位精品在线| 18禁久极品美女久久哦哟呀!| 色香91| 亚洲精品日韩国产欧美| 物尤视频一区二区| 五月天激情网图片| 国产精品熟女乱伦| 黑人白女精品一区| 成年女人黄网站| 亚洲天堂男| 大香蕉92| julia国产在线 | 亚洲欧美97| 丰满人妻一区| 俺去啦自拍| 熟女网站最新| 天堂精品小草| 天天影视色香欲综合网小说| 凹凸视频在线一区二区| 国产久久久久久| 久久久免费高清中文视频| 精久久久| 91N综合在线| 97av,com| 欧美综合色| 日本高清熟女久久一区| 久久久久深夜无码| 天天舔天天日天天射| 蜜臀少妇一区二区| 日本人体九九九九九九| 老鸭窝亚洲毛片| 九月丁香婷婷| 青青草在线视频欧美| 亚洲色图加勒比| 国产日韩欧美中文在线播放| 另类TS人妖一区二区三区 | 精品人妻15区| 国产无马视频| 欧美国产日韩清纯唯美| 免费精品99| 97综合在线观看| 91精品成人| 欧美91色| 日本伦乱九九九综合| 久草电影网| 成人av性爱电影在线观看| 一本久道在线综合视频| 亚洲色图激情小说| 91久久国外网| 青娱乐久久艹| 国产原创精品| 欧美性五月| 青青伊人久久| 免费成人在线观看91| 黄网在线播放| 国产精品69久久久久久久| 色综合av综合久久| 日韩精品.久久精品.AV女优.天美传媒| 色优久久| 男人的天堂kva| 激情五月天插| 中文字幕在线观看网页| 国内毛片欧美香蕉精品| 90后性网国产欧美| 少妇精品久久久| 青草草免费网站av| 熟女色图在线| 久久香蕉国产传媒一区剧情天美| 97ai亚洲| 日韩AV一区二区三区四四| 夜夜嗨一区二区三区三州加勒比| 国产又猛又粗又爽又黄| 操逼999| 中文字幕精品一区欧美| 性色中出| 久久精品欧美一区二区三区不卡| 91九九九逼| 国产传媒午夜理伦精品| 亚洲青青草| 五月色丁香| 亚洲影院无码在线| 91欧美另类| 十八岁啪啪视频免费看| 超碰97在线色男人??| 两性色网| 欧美综合色| 丁香五月偷拍| 欧美性生活男人的天堂| 蜜桃精久三区| 日韩免费在线观看不卡| 久久精品视频一区三区小泽玛利亚| 床上啊啊啊一区二区三区| 97国产精品在线观看| 97色碰| 97资源视频| 国产精品禁久久久精品| 蜜臀AV网站| 一区二区三区免费视频入口| 欧洲亚洲综合| 日本性爱少妇| 亚洲成人一区二区精品| 国产91影院| 精品无av| 农村妇女精品一区二区| 日本韩欧美在线播放a| 成人羞羞视频国产| 少妇人妻激情四射| 日本一区99| 久久激情综合| 日本激情免费大片| 国产精品一区二区手机看片| 精品78| 婷婷精品久久av影视| 日韩中文字幕熟妇人妻| 青青操青娱乐| 麻豆国产96在线| 亚洲综合精品国产一区| 日韩久久.一级黄色片| 久久日韩肥臀| 大茄子熟女AV导航| 淫穴高潮色图| 亚洲熟女乱色一区二区三区久久久| 91jk色拍| 国产一区二区精品在线视频| 久久亚洲天天做| 影音先锋国产精品| 五月天啪啪| 亚洲一区中文字幕一区| 国产精选三级在线观看| 中文字幕性感少妇av| 黄片aaaaa一区| 天天射天天| 国产精品麻豆免费视频| 少妇一级婬片免费放一级a性色.| 大香蕉www.超碰| 91熟女视频| 三级日本一区二区三区| 在线午夜成人无码视频| 国产毛片在线| 激情网五月天| 色月天AV导航| 91n免费处女| 久久97超碰香蕉| 青青草好吊色| 亚洲黄色| 手机看片91人妻| 黄页视频网站野外| 亚洲欧洲综合视频在线| 97午夜剧场日韩| 亚洲色丰满少妇高潮| 2020中文字幕在线| 亚洲人成网站7777| 天美麻花大全视频| 99re69综合| 国产精品天干天干综合网麻豆| 怡红院网站在线视频| 97综合久久| 亚洲第一精品在线视频| 美国aaaaa一级黄片| 天美麻豆精品视频99| 国产AV人人 夜夜人人澡| 色香91| 天天懆天天日| 韩国一区二区精品亚洲| 东京热一区二区三区四区五区六区| 日韩超碰精品综合| 人妻蜜桃臀| 亚洲资源一区| HEYZO高无码国产精品227| 午夜福利久久久噜久噜久久综合 | 大奶啊啊好爽 | 久久91视频| 吉田爱美AV在线| 色一情一乱一乱一区91Av| 久久6热视频免费观看| A啊啊在线观看| 国产高清自拍| 亚洲性爱高潮影院| 婷婷激情四射| 亚洲欧洲日韩天堂av| 性爱av网站| 国产精品69久久久久孕妇欧美 | 中韩中文字幕在线观看| 综合久久中文字幕综合日韩精品| 青草影院内射高潮| 第一高清av中文字幕| 久久久久久亚洲精品中文字幕人妻| 人妻精品一区二区| 一区 欧美 日韩 麻豆| 欧美午夜视频精品久久| 69一区二区三区| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 天天做日日爱夜夜爽| 超碰久超碰久| www.夜夜| 综合伊人网12色| 黄色十八禁| 老熟女91| 情色五月天网| 亚洲一区二区性爱电影| 天天天干977| 亚洲射综合网| 色五月婷婷在线| 亚洲A曰本VA欧美VA视频| 男人的天堂亚洲| 久久久性爱视频| 欧美1区二区三区公司| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 超碰吊日色| 69人妻精品丰满熟女区| 长长久久88视频| 国产精品熟女九色九色蜜臀| 国产日韩久久| 国产丝袜啪啪| 蜜臀久久99'精品久久久| 欧美黑人性猛交91| 婷婷午夜| 日韩精品中文字幕一| 蜜臀久久99精品久久久久久-DVD原版全| 欧美日动态视频| 网页导航五月天免费一二三区 | 丝袜夫妻自拍| 亚洲精品美女久久久久久久久| 在线免费观看日韩一区| 激情啪啪拍91| 国产精品无码久久久久2025| 88xx成人精品视频| 免费?级毛片无码?∨蜜芽试看| 九九精品网| 神马久久网| 91 丝袜在线| www老逼91| 婷婷情色五月天| 天天综合亚在线| 精品夜夜澡人妻无码| 国产剧情一区在线观看| 中文字幕加勒比海高清无码免费视频| 九久9热| 天天干人妇| 国产97视频免费观看| 日本 欧美 亚中文字幕| 国产超碰人人爽人人做| 五月激情在线| 美日韩在线不卡人妻| 欧美熟爽综合| 婷婷激情五月综合| 超碰在线免费一区二区三区| 国产福利一区二| av爱爱爱| 国产乱不卡| 99久久9| 中文字幕在线免费观看 | 精品久久一区二区三区四区五区| 91女网站| 天天日熟妇| 干超碰碰熟女| 99精品热| 国产suv精品一区二六| 欧美亚洲天天| 超碰在线人人射| 手机看片日韩人妻| 国产91久久九九免费精品无码| 免费AV播放| 久久精品老司| 日本乱人伦片中文三区| 在线观看黄色电话| 啊啊啊好湿国产一二| 久久AV无码1区2区3区| 99草精| 久久av无码| 99精品无码| 国产精品丝袜久久亚洲不卡| 校园激情狠狠四射| 不卡免费av在线播放| 中文字幕女同在线| 日韩欧美女求操每天更新| 综合操逼| 一本一首道人妻少妇免费久久| 极品欧美一区二区三区| 韩日巨乳美女免费视频在线观看| 综合操逼| 一区二区三区一亚洲中文字幕、综合区灬 | 免费强奸av| 亚洲一二三| 久久产精品一区二区三区电影| 色欲日韩欧美在线一区| 久久超碰av在线| 国产99精品一区二区三区免费| 欧美久久伊人| 亚洲欧美日韩电影网站一区| 免费一二区| 日本3级一区二区免费 | 人妻插插人妻人| 91美女片在线| 欧美亚洲国内自拍| 九七超碰| 丰满少妇一区二区三区专区| 国产精品自在自拍视频| 九久9精品| 婷婷伊人一区| 久久久精品无码亚免费| 9ⅰ久久久天天| 91操人视频| 快灬快灬 一下爽蜜桃在线观看| 色色97爱| 日日A∨| 九九av| 日韩中文字幕视频| 日本精品久久久久久久| 无码又爽又硬又激情免费视频 | 欧美一区二区| 亚洲视频小说| 婷婷五月天AV| 天天干夜夜一操| 免费AV中文网在线观看| 欧美劲爆第一页| 800zy一区二区| 福利色色| 黄色操人| 91综合色| 亚洲 欧美 日韩另类 麻豆| 超碰日本97美女人妻人人玩人人爱| 青青青国产手线观看视频2| 欧美精品久久| 欧洲射精91| 国产精品久久久久综合| 亚洲乱色熟女一区| 亚洲色交| 少妇天堂| xxxx网站亚洲精品| 天天射天天色成人| 91 综合 色| 亚洲国产综合久久久性感熟妇| 国产精品婬乱一级毛片彝族| 久久久久久电影| 欧美性爱中文字幕无线码| 精品毛片av一区二区| 日韩熟女无码| 日本免费中文字幕在线| 欧美性爱中文字幕无线码| 在线视频免费观看午夜| 伊人影院日本| 天天谢天天干| 日本在线视频导航| 嫩草影院在线观看精品| 97啪啪| 亚洲综合草草| 日韩综合97p| 韩日精品福利视频一区不卡在线免| 多毛小伙内射老太婆| 立川理惠无码一区二区| 欧美亚洲素人制服精品| 91丝袜在线观看| 天天躁日日躁成人字幕aⅴ| 一级日本牲交大片好爽在线看| 欧美裸体美女日麻屄| 无码操逼视频一下| 午夜天堂啪啪| 欧美激情片一区二区| 中文字幕人乱码中文字的预防方法| 人妻 欧美亚洲| 国产精品 视频| 日本操逼视频免费| aaaa少妇高潮大片| 97超碰美国| 日韩中文字幕宗合在线| 日韩亚洲欧美中文字幕| 美国一区二区三区视频| 天天欧美欧美亚洲网| 美欧老女人97| 91精品国产91久久青草| 人人干人人操人人..com| 丁香五月天堂| 囯产精品强| 三上悠亚在线毛片91| 青娱乐久久艹| 都市激情人妻一区二区青青操视频 | 大香蕉天天看妹子| 午夜精品久久99蜜桃的功能章节| 自怕偷自怕亚洲精品| 欧美|91色综合| 精品女同一区二区三区| 欧美色997| 男人天堂久久精品不卡| 久久亚洲AV成人精品无码| 久久久久久AV无码免费网站| 91操人| 伊人久久大香线蕉无码| 999 久久久| 日韩成人在线性爱视频| 后入 亚洲 美女 射| 久久综合97| 日本美女性生活久久久久久久| 少妇淫妇久久久久久久| 乱伦1色页| 大香蕉天天看妹子| AAAAAAAAA黄片| 人妻熟女一区二区| 岛国片在线观看视频亚洲| 中文字幕精品亚洲熟女| 久久首页| 久久美国毛片| 五月色网| 97超碰久久| 美欧老女人97| 亚洲色图殴美色图激情乱伦| 九九九国产精品| 日韩人体偷拍| 激情天天视频| 91精品少妇搡搡搡| 天天操女人| 国产精品欧美日韩久久| 欧美欧美少妇| www.高清无码诱惑一区.com | AV污污污污| 91美| 中文一区在线视频| 色欧美在线| 欧美精品 - 91爱爱| 欧美精品日韩一区二区| 国产91影院| 自拍第一页| 国产美女91视频| 欧美一二三级精品在线| 亚洲国产97| 九九英色视频| 麻豆国产尤物AV| 久久riav中文精品| 久久久久久久强迫| 超碰97国产欧美| 欧美黑人168页欧美黑人167| 97久久超碰国产网站| 欧美极品女人的天堂| 午夜黄色免费在线观看| 91 综合网| 欧美亚洲丝袜美女电影| 超91综合网| 日本午夜精品理论片A级APP发布| 日韩熟女无码| 国产亚洲色停停久久99精品91| 色偷偷人人玩人人舔人人操人人摸人人爽 | 在线观看亚洲成人精品| 超碰97伊人| 欲综合网| 欧美大香蕉专区网| 国产强奸91| 日本成人A片免费看| 人人操人人摸avav| 亚洲精品一区二区精品| 自拍偷拍国产欧美日韩韩| 伊人网免费视频| 丰满人妻一区二区三区性色| 精品视频一区二区| 国产精品人人爽人人做可爱福利| 91视频伊人| 国产女人与拘做受视频免费| 国内精品嫩模A∨私拍小视频| 日韩无码视频黄色| 色色香蕉| 婷婷AV一区二区三区| 人妻av在线| 97超碰天天| 97综合日韩| 99re在线视频这里只有精品| 色在线亚洲视频www| 色香色欲天天综合网天天来吧| 欧美大香蕉97| 中文字幕78| 人人操人人操人人操人人操人人操人人人11.CM | 97超碰站| 亚州熟女乱伦| av在线播放国产一区| 日本Xx性爱| 久久久久久少妇| 亚洲欧美国产成人综合不卡| julia中文字幕在线观看| 91亚洲色图| 久久人人爽爽爽人久久久| 久久78| 天天爽夜夜操| 国产精品乱码久久久久| 欧美精品自慰系列寂寞少妇| 男人的天堂三级| 丁香五月电影| 白嫩国模丰满一二三区| 天操天操夜操夜月操月年年操| 91大神精品长腿在线观看网站| www.91久久| 成人精品在线免费视频| 国产亚洲精品av一区| 亚欧成人一级片在线播放| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 欧美日韩亚洲高清不卡一区二区三区| 日韩AC| hd成人一区二区在线| 亚州操逼图| 激情五月天丁香| 熟女91网| 日本护士高潮| 亚洲激情深爱文学小说网站| 26uuu性物| 亚爽爽爽爽爽爽爽爽| 亚洲码在线中文在线观看| 啊啊啊好爽快点啊啊啊嗯嗯| 超碰在线日韩一区| 色色五月婷婷| 九九九九精品| 日韩精品人妻系列无码天堂| 思思热在线视频免费| 大香蕉色网| 亚洲精品三区在线观看| 4虎在线视频| 免费自拍三级综合| 4141514逼喷水三级片| 欧美激情在线观看视频| 免费中文在线| 欧美天堂在线| 九九伊人网| 精品人妻少妇| 91色图片| 国产 码在线成人网站| 成人夜夜| 天美传媒av 在线| 极品美女嘿咻| 熟女AV一区| 蜜臀av一区二区三区免费观看| 欧美综合网| 色悠久久久av| 中文字幕精品人妻丝袜| 一区二区三区精品视频| 综合亚州欧美| 91伊人大香蕉| 户外裸露刺激视频第一区| 酒色综合网| 久久綜合很很很| 色婷婷综合网| 日韩成人性爱AV| 91精品微拍福利| 丰满少妇乱子伦精品无| 亚洲人综合19| 99re这里只有精品2| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 死我十八禁| 99热导航| 老熟女91av| 99热综合| 丁香久久| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧美在线中M| 1204金沙人妻懂旧版免费| 久久一区,青青青青草视频在线播放| 中国国产精品一区视频| 九九操久久国产免费视频| 天天综合网合集91| www.狠狠干.coom | 国产suv精品一区| 国内成人圈中文字幕无码视频| 夜草欧美| 大香蕉啪啪啪啪在线| 九色97| 男人的天堂2018东京热啪啪啪| 欧美78p| 台湾佬激情综合| 韩国黄片aaaa| 一级毛片久久久久久久女人18| 色妺妺在线视频| 粉嫩国产精品久久粉嫩| 中文字幕av久久爽Av| 精产国品一区二三产品| 亚洲av在线免费观看| 久久人人妻| 一区二区三区色综合| 人妻人久久精品中文字幕| 国产精品久久蜜乳av| 日本操逼无码| 欧美性爱十八禁| 成人资源中文字幕在线观看天天| 欧美色偷拍| 天天插天天操天天摸天天射天天看| 久久久久九九九九九| 国产一国产一级毛片古装| 麻豆精品一区二区三区四区免费观看| 搡老女人老91妇女老熟女 | 岛国毛片在线观看免费| 欧美顶级黄色大片免费| 欧美另类色| 污啪啪啪视频| 91国内外在线| a级免费在线观看| V A在线| 我要看免费韩日黄片| 嗯~啊~快点 死我视频| 91熟女.com| 国产精品免费1区2区视频| 久久亚洲av成人无码国产| 插老姨肥穴| 粉嫩久久久极品| 国产成人99久久亚洲综合| 最新欧洲欧美日本激情网站| 欧美少妇色综合| 无码久久亚洲高清,| 免费的黄片wwwwww| 在线观看中文字幕| 超碰99在线观看| 欧美青青草视频| 美女操逼福利视频| 少妇3P性爱自拍| 1024日韩| 黄片qw| ,成人免费啪啪视频| 国产又色又粗又黄又爽| 97精品综合久久网| 欧美另类综合久久| 国产97在线 | 亚洲| 日本一级一级一级一级| 中出后入| 亚洲精品中文字幕一区在线视频| 青青青在线高清视频在线一二三四区 | 久久国产逼| 精品久久久久久久久久久久| 国产精品一区二区黄片| 992大香蕉| 91影视亚洲| 91女人的网站| 婷婷色色网| 日韩不卡在线一区二区| 超碰91在线| 亚洲精品熟妇1区2区3区。| 日韩少妇丰满亚洲| 日韩三级一区 | 少妇人妻太紧太深av| 青草精品视频日本久久久久网站在线| 熟女在线视频| 日韩女优中文字幕| 丰满少妇乱子伦精品无| 亚欧性爱无码| 成年人黄色小视频网站| 在线人成亚洲视频免费观看| 色婷婷A V一二三四区麻豆综合| 久久夜夜夜夜| 婷婷亚洲综合| 亚洲激情在线| 国产精品麻豆视频网站| 国产欧美成人第一页在线观看| 欧美Ⅴ性爱| 翔田千里AⅤHD无码| 中文字幕五月婷婷免费| 亚洲巨爆乳一区二区三区四季网| 国产高清成人免费视频| 欧美丰满少妇交换91欧美精品| 91网站18+| 999久久久久久久久| 成人熟女区| 婷婷九月丁香| 啪啪综合网| 欧美日韩一二三| 懂色aV一区二区天美传媒| 91福利网在线观看| 秋霞成人一级在线观看| 日韩激情啪啪| 蜜桃色色网站视频三区| 青娱乐 成人娱乐在线| 无码视频一区二区| 欲色啪| 日夜精品| 最新亚洲人成网站在线影院| 婷婷五月天激情网| 麻豆九九九| 精品超碰中文在线| 日韩欧美俄罗斯A片| 欧美顶级黄色大片免费| 久久人妻视频网| 97舔舔| 91网18| 国产夜夜操| 国产主播福利| 操逼操逼操| 日韩有码 一区二区三区| 日本黄大片在线观看视频| 日本国产欧美一区三区二区| 女沟厕偷窥piss小便| 超碰97国产欧美| 精品亚洲| 欧美精品23| 亚洲精品一二区| 男人的天堂一区三区| 天天插天天射| 亚洲精品蜜桃久久久一区二区三区| 欧美黑人猛交春色影视大全| 亚洲熟女国产综合另类| 亚洲黄日韩无码专区| 天美传媒av在线| 亚洲精品蜜桃久久久| 天天综合网网欲色| 人人操人人摸人人看人人插| 综合免费无码中文| 大香蕉男女超碰精品在线| 97色论| 欧美综合综合| 都市久久精品激情亚洲| 五月激情小说| 色九九九九| 最新AV在线| 一级aaaaa欧美中文字幕录像片| 在线强奷到舒服的无码视频| 久久婷婷成人综合色怡春院| 超碰97久久| 欧美亚洲玖玖玖| AV中亚| 美女啊啊啊啊啊啊啊| 伊人9| 丁香六月婷婷| 日日躁狠狠躁天天躁精品| 成人午夜小视频手机在线看| 麻豆伊人网| www.超碰| 怡红院成人视频| 韩国黄色片精品久久久| 日本久久久久久久久久| 五月天社区| 久久超碰日韩精品| 国内精品999| 亚洲欧美国产va在线播放频| 狠狠操一区二区| 日韩亚洲中文字幕在线| 久草电影网| 天天操av懂色| 国产午夜在线观看视频| 9/A片| 上海一级黄片| 丝袜美腿91| 亚洲天堂东京热| 中国操逼无码| 欧美一品道| 国产高潮AA片免费看| 干超碰碰熟女| 熟女高潮合集-永久久久-成人AV | 北京美女一区二区| 日韩午夜精品一区二区三区电影| 91丝袜人妻| 99re在线观看| 青青草丝袜在线视频| 久久产精品一区二区三区电影| 青青草白白色| 99性爱视频| 国产乱伦性爱区| 日本孕妇孕交| 日本美女性生活久久久久久久| 97人妻免费中文字幕| 亚洲情欲| 麻豆国产第一| 日日爽夜夜爽| 成人无码影片视频在线| 无码高清操逼| 2020中文字幕在线观看| 久久久久深夜无码| 欧美亚洲se91| 狠肏骚人妻| 97爱爱爱综合| 成人一级二级| 国精综合一二三区影视| 久久久99999久网站| 加勒比五月天| 男人的天堂久久狠| 青青操日韩| a片亚洲一本通视频| 人妻激情视频| 亚洲国产精品成人久久蜜臀| 欧美性爱精品七区| 1769国内精品视频| 亚洲无码日韩电影| 欧美高清色| 青青色在线观看| 国产精品免费1区2区视频| 狠狠婷婷亚洲中文综合久久| 超碰色老头| 立川理惠被中出无码| 中文字幕精品免费一区二区| AV一起草在线| 国产懂色精品国产av| 午夜男女爽爽爽在线视频| 五月天激情小说| 日韩欧美成人大香蕉| 日韩中文字幕宗合在线| 亚洲国产97在线精品一区| 美女91AV| 狼狼色丁香久久婷婷综合五月| 久热香蕉精品在线视频| 国产AAAAAABBBBB| 蜜臀99久久精品久久久久| 国产精品ww久久| 日本国产高清色www视频在线| 亚卅熟女乱色| 草b在线| 九九九精品一区二区无码| 人妻少妇无码 | 高清无码久操视频| 日韩一区二区三区四区五区| 免费视频a级毛片免费视频| 歐美一級亂黃99在綫精品| 曰本91情色| 无码人妻一区二区三区四区老鸭窝| 99久久亚洲精品无码毛片潘甜甜| 日韩综合无码色欲vv| 五月丁香综合啪啪| 亚洲激情色片| 亚洲丝袜诱惑| 一级做a爰片久久毛片图片| 久久婷综合| 欧美亚洲涩涩| 亚洲图片欧美| 免费观看啪视频| 日本女厕偷拍| 久久日韩肥臀| 日韩99999色| 亚欧日韩成人| 欧美日韩午夜精品一区二区三区| 日本人妻伦在线中文字幕| 国产一区免费午夜视频| 樱花蜜乳av| 97伪v| 日逼国产| 欧美 色 亚洲| 亚洲春色激情小说| 福利视频香蕉免费一区二区在线| av在线一区二区三区| 蜜乳中文字幕a在线| 宗合情欲网| 四虎在线免费视频| 欧美性五月| 九九亚洲| 在线色导航| 97久久超碰亚洲| 久久久影院| 欧美日韩国产高清在线一二三区| 亚洲中亚日激情视频| a网站免费观看| 黄色片一区二区三区四区五区| 亚洲影视第一页| 青青草吊丝| 99re久久| 日本日逼高清| 操少妞在线视频| 99re国产中文字幕| 欧美丝袜91| 精品九九淫乱男| 懂色综合久久久| 五月婷视频| av无码av无码专区| 亚洲成人激情小说视频| 人妻人久久精品中文字幕| 蜜桃视频精品一区二区三区| 国产一区在线观看无码AV| 欧美久久人妻少妇一区二区| 91色图| 欧美国产视频| 亚洲精品九九九| 欧美激情 日韩精品| 久久肏大逼| 久久少妇人妻| 精品一区二区三区18| 留下AⅤ黄色片| 51一区二区三区| 成人天天看站长推荐| 亚洲无码偷拍| 亚州综合网| 国产精品乱码久久久久| 最新制服中文第一页| 亚洲美女AV无码| 男啪女色黄无遮挡免费观看| 校园激情狠狠四射| 91丝袜人妻| 91无摭挡| 九九热精品视频六| 伊色久人大在线| 中文字幕视频在线观看| 欧美综合自拍| 午夜啪| 秋霞一集毛片观看| av天堂精品久久| 家庭乱伦性爱av| 女同性恋久久| 中文字幕一区二区在线日韩精品| 黄色大香焦1级‘′‘| 国产伦乱91| 99热精品在线| 久久鲁夜| 不卡一区视频| 日韩欧美麻豆 | 国产家庭乱伦网址| 992这里有精品| 精品v1区| 久久久影院| 无码人妻系列少妇| 一卡二卡在线播放| 丰满人妻一区二区三区| 性色生活片久久毛片婬片免费放女人一级毛片| 久久久久免费看少妇A片特黄| 日本国产欧美高清在线| 亚洲熟女国产综合另类|