日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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热超碰在线| 欧亚日韩一区在线| 84YTCOM性无码| 久一区久久蜜桃| 日本久久超碰| 乱精品一区字幕二区| 91久久国产综合久久| ss久久| 精品久久久亚洲AV成人网站| 精品人妻一区二区三区夜夜| 色欲Av人妻精品一区二| 九九久久首页| 亚洲欧洲激情卡通另类文学四射小说网站 | 俺去也婷婷| 玖玖爱综合| 青青色在线观看| 国产又大又粗又长视频在线| 97干综合网| 青青青草伊人精品| 伊人天天久久动态图| ji熟女.com| 男人的天堂在线有码| 综合97久久| 日逼国产| 亚洲精品国产熟女久久久| 国产综合日韩伦理| 色婷婷成人综合| 久久精品熟妇丰满人妻99| 色丁香五月婷婷| Aa东京男人的天堂| 亚洲中文字幕精品久久久久久直播 | 欧美性生活综合| 少妇熟女视频一区二区三区| 久操视频资源站公开| 91美女视频在线免费观看| 欧美成年人性爱视频免费观看| 99re9在线| 久久午夜色播影院免费高清| 免费网色网站| 探花激情视频| 精品少妇999| 亚洲国成人情色好看电影| 秋霞 色色| 伊人操操| 精品妇女一区二区三区| 久久久精品电影| 亚洲精品国产精品乱码不卡| 亚洲最新av无码成人精品区| 91色人| 91九色精品熟女内射| 欧美日韩人妻精品一区二区三区| 激情图片亚洲色图| 亚洲最新av无码成人精品区 | 天天色天天干天天射| 久久欧洲| 天天爽天天| 91无遮挡| 91国内外在线| 99热精品在线在线| 亚洲超碰AV| 亚洲熟女人妻中文字幕一区二区| 日韩久久超碰色| 国产黄色影片在线观看| 热的中文 热的有码 热的国产| 干婷婷综合网| 日韩无码精品综合久久| 天天搞欧美| 志村玲子视频一区二区| 亚欧性爱无码| 美女网站91| 9久久美女首页| 大香蕉九九| 99无码狠狠久久| 久久久久9999妇女| 欧美第一页性| 26uuu国产免费观看| 91美女小视频| 天天舔日美女视频| 一区,二区,三区视频| 久久免费精品视频免一| 男人的天堂网页| 美女毛片999| 激情五月天色色| 最新三级网址| A 天堂| 91性网| 青青草玖玖爱| 嗯嗯啊啊用力视频免费| 国模精品一区二区三区苹果色戒| 国产熟女免费观看久久| 亚洲自拍天堂| 亚洲麻豆av一区二区| 偷拍综合亚洲| 神马久久久久久久久久| 欧美亚洲国产自久久| 无码国产精品久久久久| 翔田千里一区二区三区奶水| 天堂亚洲欧美| 花花AV导航| 五毛骚逼极品美女怕怕| 久久久一区二区三区四曲免费听 | 天天干天天日天天射黄色片| 天天看天天综合成人网| 99热99色| 99热精品在线观看| 夜夜爽33333| 人妻少妇av在线观看| 国内亚洲高清无码| 欧美性天天| 可乐操在线| 制服中出中文人人精品| 夜夜骑操视频| 色婷婷综合久久久久中文一区二区| 妇女性内射冈站HDWWWCOM| 精品大全99999| 久久久九九九九| 97色色色综合网站| 欧美成人色| 91 刺激在线| 69人妻精品一区二区绯色| 金莲网址| 激情五月综合| 熟女人妻久久中文字幕一二区| 日本操逼视频导航| 欧洲欧美视频一区二区| 国产一区二区三区久久久精品| 国产sv美女内射| 成人天天看站长推荐| 久久久98网站免费视频| 大香蕉碰碰| 熟妇熟女视频一区二区三区| 日本天天吊| 九色97| 偷拍欧美激情| 婷婷激情一区二区三区俺也去| 日韩AV一区二区三区四四| 艹我哪美一区无码| 久久免费精品96| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 中文一区二区三区影院| 国产无码高清操逼视频| 欧美日韩性爱无码| 六月婷婷综合| 国产高清无码一区二区三区四区皇冠| 亚洲操操| 极品少妇99| 午夜九九九九九九| 色婷婷九月| 亚洲成人福利电影免费| 日本一级性爱| 欧美狠狠操| 青木玲在线不卡| 97chaopenrihan| 亚洲欧美国产其他二区| www黄片免费看com| 999在线电影香蕉| 99色婷婷中文字幕乱色| 欧美美女视频| 国产高清在线观看欧美| 色一射色一射| 欧美后入式| 天天伊人| 日韩乱中文| 欧美性猛交美女自慰91| 免费的av网| 偷拍在线观看视频| 青青草华人在线欧美在线| 97日亚洲欧美| 奇米四色影视777久久久| www.色操逼| 亭亭丁香激情| 伊人性在线视频| 亚洲欧美洲综合| 奇米四色网| 女人喷水视频在线观看| 丰满欧美少妇| 亚洲无码一区成人免费午夜| 99无码狠狠久久| 艹比视频国产精品| 久久嫩草国产成人一区| 97精品在线视频| japan日本高清乱xxxx| 用力操死我| 亚洲丝袜少妇在线| 亚洲熟女国产综合另类| 国产精品干干干| 啊啊啊啊一区| 国产美女自拍视频| 大香蕉九九| 国产AB视频| 国产传媒午夜理伦精品| 欲色影视综合吧| 亚洲黄色影视| A级片一区| 九九人人操| 青青草无码视频| 黄色电影在线播放综合网站| 操一区| 日韩欧美大片免费高清啪啪| 国产97av| 91久热| 欧美精品99久久久**| 97亚洲国产影视| 中文字幕一区二区三区人妻不卡| 大香蕉手机视频| 啊啊啊啊在线播放| 日本午夜久久电影| 清纯唯美亚洲另类| 亚洲情色91| 亚洲超碰97| 亚洲精品97在线| 精品无码久久久久久久久果冻糖心| 五月天激情小说| 色综91| 97人肏| 国产自制av蜜乳| 综合久草| 国内毛片无遮挡国产| 97在线欧洲| 欧美一级特黄淫片在线观看| 插插综合网天天影视网| 99精品在线观看| 男人的天堂网页| 黑丝91视频| 再深点灬舒服灬太大了添视频 | 成人97人人超碰人人| 麻豆九九九| 国内毛片国产欧美拍| 97精品综合久久网| 精品久久久亚洲AV成人网站| 欧美色图 色综合图| 91九色丨国产丨爆乳| 在线αⅴ| 女人18精品一区二区三区| 大香蕉五月天| 国产精品一二三区18| 久久一二三四五六七八九区区| 小日子操bb在线看| 99热精品在线观看| 久偷拍| 亚州AV无码国产精品| 超碰在线免费一区二区三区| 亚州色图欧美| 婷婷五月天成人| 中文字幕AV乱伦| 亚洲精品97p| 国产精品国产自产拍高清AV| 欧亚乱色熟女一区二区| 综合亚洲欧美精品日韩?v| 9997se| 青青11操操操操操操操操| www亚洲免费| 91精品导航| 欧美精品91| 婷婷五月天丁香| A一区片| 久久日韩肥臀| 亚洲日韩熟女人妻高清在线| 亚洲官网在线| 又黄又爽在线观看视频| 色乱二区| 国产精品露脸在线观看| 精品国产一区探花在线观看| 久热这里只有精品9| 国产亚洲精品美女| 五月天综合网| 麻豆 欧美 日韩| 亚洲高清无码免费观看视频| 牛牛aV| 人人操 欧美| 国产精品伦理| 人妻喷水| 欧美人妻熟女在线| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 无码一区二区三区四区五区六区七区八区九区十区视频 | 青青在线视频免费| 国产日产欧产美韩系列麻豆免费| 中文字幕超碰CAO| 91美腿丝袜在线观看| 天天插天天操| 女人被添高潮免费视频| 久操视频资源站公开| 在线观看不卡一区二区三区| 午夜精品久久一区二区| 91处女在线观看| 亚洲丝袜诱惑| 国产精品熟女一区二区三区| 72av视频| 99re6在线视频播放免费精品| 欧美变态激情网| 99re只有精品| 啊啊啊啊二区好大| 青青草色情网站视频| 久久久久久久久久久久久9999| 亚洲无套久久嗯嗯| 天天综合香 ld视频| 麻豆区99999| 超碰公开久久网| 国产高清1234区| 99国产人成精品| 五月丁香激情综合网| 六月丁香啪啪啪| 超踫中文字幕| 特级大荫道BBwBBwBBW| 超碰在线人妻不卡| 9久精品视频在线观看| 黑人精品久久97| 丰满人妻无码一区二区三区| 人人爽人人精品乱人伦AV| 手机在线看片免费人成视频| 免费一级欧美片片线观看| 五月天黄色激情视频| 免费中文在线| 人人贴人人摸| 爱欲AV| 中文字幕88av在线| 亚州色阁| 九九热精品| 亚洲欧洲成人在线电影| 操人人| 2019久久久久久久久福利| 淫荡熟女乱伦网| 亚洲精品日韩国产欧美| 97爱爱爱综合| 亚洲一区亚洲天堂| 91白虎| 国产无码三级视频在线观看| 艹精品| 精品国产肉丝袜在线拍国语| 狼人综合婷婷激情四射| 制服诱惑亚洲一区二区三区在线观看| 中韩中文字幕在线观看| 亚洲AV无码乱码| 久久久久久国产无码精品| 欧亚免费视频| 九九九九免费高| 午夜男人的天堂| 懂色中文一区二区三区| 色婷婷香蕉| 二对二中文字幕。| 中国熟妇| 中文一区在线视频| 在线天堂999| 大香蕉2017| 欧美特大AA级黄片| 亚洲国产精品乱码在线观看| 欧美洲精品一级| 亚洲无码 国产无码| 中国女人内射6XXXXX| 午夜激情床戏激情| 欧美春色| 国产精品久久成人免费| 图色综合网| 亚洲人妻爽爽爽| 一级性爱啪啪视频| 午夜天天碰综合视频| 亚洲天堂日本| 久久久精品中文字幕爱豆| 色色色网站| 欧美洲精品一级| 97视频观看| 99e久久国产精品| 午夜国产成人福利视频| 色色99| 躁躁日曰躁2020| 久久久久99999| 日本女厕偷拍| 亚洲少妇在线观看| 精品人妻美妇91job| 人妻精品综合中文字幕在线 | 91亚洲青青草原精品1区| 1204金沙人妻懂旧版免费| 精品一区二区三区麻豆| 国产又黄又爽| 中日亚韩免费视频| 超碰人妻中文在线| 国产精品盗摄 偷窥盗摄| 亚洲天堂综合AV| 人人爽夜夜玩视频| 日本操逼视频导航| AV99热18这里只有精品| 欧美黄色大片在线观看 | 亚洲91网| 亚洲色欲天天人妻无码系列专区| 色在线69堂| 樱花蜜乳av| 久久男人网| 日本国产欧美一区三区二区 | 中文AV制服乱伦| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 学生妹天天看| 国产又大又硬又长又粗| 天天干夜夜操一区二区| 日韩成人性爱电影在线播放| 亚洲熟妇综合久久久久久| 操逼免费视频无码国产| 日韩精品作爱导航| 人妻aa| 黑人干亚洲| 丁香六月东京热| 国产人妻精品一区二区三区秋霞| 人人爱人人操人人性| 午夜精品久久久久久久99| 另类 日韩 熟女| 欧美图片校园春色| 日韩pv中文| 亚洲国产青青| 无码国产Av| 激情啪啪视频| 男人的天堂亚洲| 曰韩中文人妻视频| 91爱做| 欧美自拍偷拍免费观看| 麻豆天美91| 好看的91视频| 九九无码视频| 99久久国产精品免费高潮| aaa淫乱视频| 日本性爱不卡视频| 人人操人人肉久久精品| 亚洲情色一区三区| aaaa少妇高潮大片| 日本成人在线不卡一区二区三区| 夜夜福利| 丁香六月天| 免费自拍三级综合| 国产91美女视频| 欧美亚男人的天堂| 国产成人免费观看在线视频 | 伊人天堂在线| 亚洲强奸乱伦影视网| 91性情| 亚洲欧美日产国产91毛片| 熟妇操花| 国产又黄又爽又刺激久久久久久 | 美女黄页| 强奸乱伦动态污图免费 | 亚洲精品97久久中文字幕| 98色网| 无码逼| 麻豆天美91| 久久中久文96| 伊人玖玖网| 亚洲男人天堂Av| 中国东北熟女老太婆内谢| 综合网天天| 久久久少妇诱惑精品视频| 日韩伦理视频| 久久乐| 亚洲一区二区三区欧美日韩| 亚洲码在线中文在线观看| 久9综合在线| 青青草视频导航官网| 99性爱| 黄片aaaaa一区| 亚洲一区在线观看欧洲| 欧美的精品的视频| 91在线丝袜| 熟女AV一区| 91老司机在线视频免费观看| 五月天婷婷成人网| 最新啪啪视频| 欧美视频一区二区在线| 五十路六十路七十路熟婆| 天久久久噜噜噜久久国产精品爽爽 | 色情乱伦AV| 91美乳| 深爱五月天| 国产精品一区二区 尿失禁| 久久久96精品| 欧美日韩国产中文超碰| 免费看欧美美女黄色大片 | 国产高清不卡视频| 女人天堂AV五区在线| 日韩女模中文造逼| 久久鲁干| 欧美刺激色黄片免费看| 天堂中文资源在线bt| av强奸乱轮| 中文字幕五月婷婷免费| 中日韩一区二区三区欧美| 中国特猛少妇色xxx| 成人无码欧美一级A片狼牙直播| 快播久久人人aV| 色香91| 一本一道久久综合久久| 色路综合| 国产成人久久精品蜜臀| 欧美影院一区二区三区| 先锋影音av先锋一区| 成人AV超碰免费在线| 黄色视频60分钟| 中文字幕中文字幕一区二区| 乱伦AVxx| 欧美做爰无码A片视频| 久99热| 亚洲日产专区| 嗯嗯嗯啊啊啊操的我好爽 | 五月丁香久久| 欧亚乱色熟一区二区三四区| 精品十三区| 97爱b| 春色综合免费| 日日骚中文字幕| 中国AV美女| 福利视频一区二区微拍| 日本一级一级一级一级| 91久热这里只有精品| 观看免费区二区三区二| 九九九九九九视频| 亚洲中文字幕一区二区| 久久老女人| 香蕉热人人精品| 欧亚性爱视频免费看| 亚洲一区二区麻豆影院| 97公开久久| 超碰导航97| 91丨国产丨白浆秘 洗澡动漫| 久操操AV电影| 人人操AV| 久久久久9| 九九九一二三| 一区二区三区黄色片a| 久久伊人大香蕉| 啊啊啊好湿国产一二| 色在线69堂| 91n欧美| 国产精品无码av嫩草| 欧美精品999| 91成人国产综合久久精品蜜月| 97射欧美| 中日亚韩免费视频| 婷婷久草一区二区三区| 操少妞在线视频| 欧美激情激情xxxx欧美专区| www色日本| 性生活久久久久久久久久| 国产美女91| 2017人人操,人人摸| 五月丁香影院| 中日韩久久久免费看| 精品国模无码| 9 9精品一区二区三区| 少妇第一页| 成人av毛片在线观看| 婷婷操逼| 男人的天堂无码| 影音先锋每日最新资源在线观看| 伊人AAA| 天天操熟妇| 国产精品人人爽人人做可爱福利| 天美AV片| 99av| 欧美九9 9 9| 天天天做天天天爱天天天爽| 国产东北女人在线视频| 熟妇艹鸡八| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲国产一级精品毛一级精品看免费视频 | 精久久久| 欧美色蜜桃97| 东北丰满熟女国产一区| 国产农村妇女精品一二区| 99热婷婷一区二区三| 人妻乱仑一区二区三区| 91/欧美| 黄片免费视频2019| 久久色一区| 国产精品 视频| 久久麻豆一区二区| 久热最新在线杭州| 久久久久久中文| 精品一区二区成人| 嗯嗯嗯啊啊啊干死我吧| 性影在线视频| 嫩草黄页| 久久精品国产免费观看99| 920日本午夜免费| 丝袜狠狠草尤物 91| 久久久精品91八戒| av中文在线| 亚洲色图欧美色图综合| 亚洲欧综合另类无码一区| 国产精品九9| 日韩av在线精品观看| 精品久久在线区一区| 久久成人东京热人妻| 国产超碰| 极品肉射| 99re不伦| 免费精品无码一级毛片牛牛影视| 超踫中文字幕| 久久婷婷电影网| 大香蕉欧美伊| 午夜一区二区三区国产| 死我十八禁| 激情四射五月天| 精品人妻一区二区三区四区不卡在| 天堂av2019| 99亚洲国产精品色一区二区三区| 日韩美女,国产传媒,视频一区| a级成人毛片免费视频高清| 自拍啪啪视频| 久久女人视频| 狠日操| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 久久国产99精品72福利| 国产多人在线观看视频| 国产精品69久久久久孕妇欧美| 丁香五月天堂| 九九九精品成人免费视频小说| 91爰爱欧美| 六月丁香久久| 免费av在线播放二区| 综合情欲网| 91狠婷| 一牛影视成人片免费| 国产嫩草精品A88AV| 欧美日韩人人精品| 成人av动漫在线观看| dy888午夜老子影视达达兔| 色娱乐色呦呦夜夜夜夜av| 人妻久久久| 一区二区三区探花在线观看| 性色A∨91| 91影视亚洲| 99999精品视频| 人人做人人妻人人夜视频| 亚洲色人| 抽插一区二区视频| 久久久18禁| 一区二区三区精品黑丝白丝酒店对鸡 | 亚洲激情综合另类| 亚洲精品1区| 欧美色偷拍| 国产精品久久伊人| 岛国大片国产| 久久六六| 五月天婷婷社区| 日韩视频小说在线观看| 亚洲综合春色| 九色PORNY9l原创自拍| 在线国产福利网址导航| 亚洲 暴爽 AV人人爽日日碰| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 伊人五月天青青草婷婷| 国产福利精品最新在线 | 狠狠爱夜夜| 69丨亚洲丨精品丨入口免费播放| 大香蕉十区| 色欧美天天| 亚洲国产无码精品首页久久久| gogogo免费高清看中国国语| 亚洲天堂男人| 好爽视频在线观看| 婷婷10月天青娱乐| 丝袜天堂网| 欧美日韩人妻婷婷一区| 91伊人影视综合| 亚洲熟妇乱女区二区三区| 亚洲中文字幕av| 人人看人人摸人人色| 搡老女人老妇女AAA一VU麻豆| 97无码视频在线播放| 日本一二区不卡| 欧美 亚洲 在线| 992大香蕉| 亚洲狠狠入| 亚洲天堂久久| 中文字幕视频二区| 78操B| 一区二区视频在看| 玖玖久久久| 97超碰色情| 东京热大香蕉| 91在线免费精品视频| 东京热一区二区中文字幕| 亚州欧美色图| 国产区日韩区在线观看| aaa亚无码专区| 级做a爱无码性色永久免费| 欧美在线永久天堂| 日本狂喷奶水在线播放212| 伊人精品久久网站| 波多野结衣先锋影音| 国产女人操逼视频| 亚洲一区中文字幕一区| 玖玖色综合| 天天综合91在线| 熟女在线视频| 蜜臀久久99精品| 精品无码产区一区二| 美女天天干| 亚洲激情视频| 国产精品久久久久久高清无码免费看| 成 人片 黄色大片| 国产精品岛国片在线观看| 国产精品99久久久www| 日本福利社| 国产精品制服丝袜中文字幕日韩一区二区三区| 2025亚洲男人天堂| 午夜精品久久999热蜜桃介男人用| 亚洲 无码 有码 中文字幕| 啊啊啊啊无码| 亚洲无码 国产无码| 一级日本牲交大片好爽在线看| 成人aⅴ一区二区三区| 日本在线激情一区二区三区| 少妇二级| 国产视频小说| 丰满人妻-区二区三区免费看| 日韩亚洲欧美中文字幕| 日韩操逼HD| 五月丁香六月激情综合| 色狠人在线99| 丰满少妇精品一区二区| 3PAV乱伦视频| 思思性爱| 91九久| 福利大香蕉| 蜜臀久久99精品久久久| 岛国视频免费在线观看| 激情一区二区三区在线观看| 欧美72网页| 国产精品久久久久9999小说| 中文字幕日韩专区精品系列| 欧美日韩第一页| 97人人爱人人做人人乐| 97久久超碰国产精品| 另类TS人妖一区二区三区| 乱老女人一区二区视频| 99色婷婷中文字幕乱色| 久久久久久999| 九九久久一区二区伦理| 亚洲天天艹| 99色在线| 多毛小伙内射老太婆| 伊色综合天堂色97| 91精品国产91久久久久久久久久久久| 中国农村熟妇毛片视频| 成人婷婷丁香| 激情文学亚洲| 亚洲色图欧美色图日韩色图| 精品久久久av| 国产精品在线免费| 色久桃花影院在线观看| 国产久久一区二区三区野外在线| JuliaAnnXXX888| 人妻 中文 日韩| wwe 天天干.com| 日本加勒比无码专区| 无码 有码 国产18p| 久久久久9999妇女| 国产综合色精品在线观看| 涩五月婷婷| 日韩青久久| 91久久精品中文字幕| 久久丁香五月婷婷| 色天堂综合| 97福利视频| 亚洲射综合网| 天美传媒婬乱| 日本精品一区三区| 国产搭汕a级片| 亚洲精品a人片在线观看视| 污污污8888| 伦激情人妻另类人妻| 嗯嗯,啊啊,国产精品| 天天日天天干少妇日| 91狠狠色丁香婷婷综合久久| 蜜臀中文无码午夜| 国产精品视频白浆免费| 天海翼久久| 欧美极品性爱天天射| 久久久久密臀一区二区| 一区二区三区高清天码| 亚洲精品国产精品乱码不卡| 日韩免费av片高清无码| 在线人妻熟女一区二区三区四区五区| 美女诱惑一区| 青娱乐 成人娱乐在线| 九九九色| 精品无吗久久| 日韩欧美午夜一区二区| 操逼999| 久久久久久国产手机AV| 一区二区三区四区在线不卡| 久久久久国产精品片区无码直播 | 亚洲成av人片色午夜乱码| 午夜操操操| 9+1视频网址| 爱爱啊啊啊| 黑人天8A∨高清网站| 尤物视频一区| 亚洲久草AV色图| 99免费在线视频| 老司机福利青青草| 嗯嗯,好大,好爽,好骚| 久久av一级av少妇av高潮| 夜色97| 桃色五月天| 秋霞怕怕片| 欧美78| 无码少妇精品一区二区60岁老人| 加勒比aⅴ| 歐美一級亂黃99在綫精品| 成人一级性爱| 亚洲AV永久无码精品成人调教| 日本福利社| 精品久久无码午夜福利| 大干人妻| 大香蕉伊人亚洲| 国产不卡免费在线视频| 亚欧洲日韩国产精品| 1024亚洲中文字幕久在线看片你懂的| 亚洲精品国产专区在线观看| 色原狠狠天天天| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 神马福利久草| 婷婷av在线中文字幕| 日本中文字幕熟妇| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 欧美日韩中文字幕不卡| 美女尤物福利视频| 97干色| 国内毛片欧美香蕉精品| 欧美性暴力猛交XXXX| 中日韩熟女| 亚洲影视综合| AV99热18这里只有精品| 色丁香五月婷婷| 熟妇的味道HD中文字幕| 另类欧美色| 日韩精品电影| 毛片17S| 青娱乐日韩无码| 久久久久亚洲三级电影| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 麻豆人妻精品一区二区| 国产精品毛片?v一区二区三区| 欧美亚州综合网图片| 欧美亚洲一区二区久久久婷精品大包诱| 亚卅熟女乱色| 操婢日韩| 永久免费观看的毛片的网站| 国产精品对白自产拍| 日韩精品99久久久久久中文字幕 | 久久女人视频| 99熟女| 强奸乱伦大香蕉网| 翔田千里AⅤHD无码| 亚洲天堂欧美| 少妇的嫩逼图片| 超碰在线1234区| 熟女欧美日韩综合婷婷| 五月天春色激情网| 人人摸人人干| 亚洲av乱伦色图网站| 亚洲日韩精品一区视频在线| 被窝影院午夜看片无码| 亚洲国产97| 大香蕉中文网| 久久精品国产97欧美精品亚洲 | 国产乱码精品久久久久久| 人妻碰碰碰碰碰碰| 欧美后进式| 色色综合网站| 99热国产| 亚洲色五月| 99九九久久| 亚洲另类电影| 天美麻花大全视频| 91狼人| 一起草精品人妻| 国产午夜无码片在线观看影视| 亚洲 欧美 制服 另类 自拍| 老司机深夜18禁污污网站| 囯产精品久久久久久久久久梁医生 | 伊香蕉综合久久久久久久噜噜噜| 欧美瑟综合| 五月天精品| 999色欧美中文字幕| 91精品国产91久久久久久久久久久久| 任我爽在线视频免费观看| 久久草视频污视频| 欧美亚州色的图| 蜜乳av一区二区三区| 97chaopenrihan| chaopen97久久| 男人天堂导航| 天天做天天爱| 人妻色偷色噜| 91精品久久久久五月天精品| 秋霞久久亚洲精品成人| 国产强奸超碰AV| 色五月婷婷色| 国产少妇与亚洲av| 毛片17S| 日韩精品第3页| 99日免费视频中文字幕| 色综合1991| 久久久久久久久久久久色网| 偷拍亚洲| 又粗又长又爽在线观看| 特级丰满少妇一级AAAA爱毛片| 欧美精品自慰系列寂寞少妇| 色情成人五月天| 91肏屄网| 美日韩一二三区| 97在线视频观看免费| 男人的天堂va在线| 超碰97人妻免费在线| 激情网色| 人妻中文在线| 国产久久一区二区三区野外在线| 熟妇人妻一区二区三在线| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 欧美熟爽综合| 欧美性生活内射| 欧洲亚洲人妻无码高清久久三区四区| 久久久久久久97| 亚洲免费成人在线高清无码视频| 在线观看黄色电话| 日韩天美| 久久久男人的天堂| 91美女小视频| 国产高清在线观看欧美| 先锋精品av色鲁| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 欧洲小说色图视频另类| 亚洲精品黄码久久久久| 国产无码精品无码| 男男H黄动漫啪啪无遮挡网站| 激情自拍 校园春色| 99蜜桃臀久久久欧美精品网站| 99re28在线观看| 亚欧性爱无码| 嗯嗯啊啊视频在线看| 色网综合网| 中文视频在线观看| av婷婷色婷婷色六月| 很黄很污的免费网站| 老鸭窝成人| 国产亚洲精品美女久久久| 五月丁香久久| 99热国产精品| 日韩中文字幕国产| 夜夜爽33333| 亚洲精品黑丝| 最新日日夜夜天天干干| 麻豆人妻精品一区二区| 中文字幕乱偷人妻久久艾草网| 凹凸视频在线一区二区| 超碰在线国产| 91操人| 看免费的黄片| www四虎| 欧美色网络| 国模少妇一区二区三区 | 日夜啪电影| 欧美色图亚洲色,麻豆| 国产欧美精选自拍一区| 嗯啊啊啊轻点视频 | 国产九九九九九九九九| 国产精品。| 亚洲欧美另类激情小说| 91丨九色丨熟女高潮| 日韩精品一区,二区 九九...老司机| yaouchengrenav| 狠狠中文字幕| 精品天堂| 亚洲无码99| 欲综合网| 日本福利二区视频| 91网站在线播放| 亚洲高清无码在线桃色| 女人的天堂大香蕉网| 92性色国产午夜福利在线661 | 亚洲成人久久美女| 91网站在线播放| 国产精品无码av| 使劲用力艹少妇视频一区二区| 韩美日操逼| 无码人妻丰满熟妇奶水区毛片| 国产老太乱伦一区| 玖玖97综合| 国产精品99999| 无码人妻一区二区一牛影视| 亚洲国产精品无石码久久| 夂久色| 丰满少妇一区二区三区免费看| 99欧美| 亚洲 在线| 久久极品伊人| 国产91精品在线免费| 丝袜熟女2P| 中文字幕国产在线天堂| 乱理日韩中文| 欧美性爱免费短视频| 天天看高清麻豆| 久久久国产亚洲精品系列| 欧美激情亚洲情色| 日本午夜福利影院| 亚洲天天自拍| 欧美综合站| 人人弄人人摸| 天天天天天超碰| 新版天堂中文资源8在线| 麻豆天天躁天天揉揉AV| 亚洲宅男天堂| 欧美AAAA黄片| 国产一区二区三区,在线观看观看| 国产中文精品一区二区在线观看| 九九人妻| 99亚亚热| 国产又色又粗又黄又爽| 亚洲高清少妇| 岛国片在线观看视频亚洲| 欧美性色网| 久久神马影院| 欧美成人黄网色网站| 97chaopengongkai| 艾草av| 最新日产中文在线麻豆| 91丰满| 东北女人| 岛国片在线观看视频亚洲| 无码人妻一区二区三区免费九色| 在线综合 亚洲 欧美中文字幕| 日本三级一区二区 在线| 亚洲另类色综合网站| 国产欧美日韩女同性恋ww喷水精品| 俺去啦俺来也久久综合| 死我十八禁| 一牛影视久久久一区二区三区| 五月婷婷六月丁香网址| 国产夫妻性生活视频| 天天干一区二区| 可以在线观看AV的网站| 日日摸天天爽夜夜欢| 欧美熟妇亚洲版| 午夜人妻精品综合在线| 欧亚性爱在线视频| 噜噜噜噜久久久精品免费| 伊人青青草久久| 久久婷婷六月综合| 国产精品探花色| 女人香蕉久久毛毛片精品| 男人的天堂色偷偷青青草视频婷婷网| 亚洲第一无码播放立川理惠| 日本不卡一区| 亚洲不卡一| 色情亚洲日本成人| 五月激情小说| 亚洲一级特黄大片在线播放91| 69一区二区三区 | 欧美后入视频| 欧美黑人性猛交91| 能直接看AV的网站| 少妇厨房愉情理伦片bd在线观看| 日本一二三免费久久| 麻豆 亚洲 97| 四月丁香婷婷| 色999亚洲人成色| 欧美人妻精品一区二区| 国产福利一区二| 九九热精品| 欧美丝袜美女电影一二三四区| 啊啊啊啊啊操我视频| 亚洲无码色| 91丨熟女丨丰满熟女| 国产精品久久久久久久久久梁医生| 夜夜欧美| 玖玖无码超碰| 玖玖爱综合网| 超碰98综合网| 99精品热| 男人的天堂激情| 九色97| 中文字幕成人| 久久精品色欧美aⅴ一区二区| 亚洲国产精品有声| 日本高清免费一本视频在线观看| 少妇熟女一区二区三区| 欧美另类天堂| 亚洲天天精品| 中国的操老妇女| 国产一区二区三区,在线观看观看 五月开心久久AV官网 | 在线αⅴ| yiqicaoav| 欧美资源| 夜夜爽夜夜爽| 天天拍夜夜| 91黄站| 黄页| 国产精品久久久久久久久久久久久久吹| 国产不卡的视频| 操老熟女AV| 亚洲图片在线| 亚州Av天美传媒| PMv在线观看| 日韩成年人性爱视频| 一起草视频在线| 97超碰色色| 中文字幕欧美丝袜07资源| 男人的天堂久久久| 五十路熟女人妻一区二区三区四区五| 欧美天天综合在线| 亚洲性天堂| 无码人妻精品酒店| 中文乱码字字幕在线第5页| 久久精品国产亚洲AV先锋| 一区二区三| 天天看天天日天天操| 精品久久久av无码免费| 亚洲日韩在线a不卡99精品| 12一15性XXXX粉嫩国产| 欧美精品23| 中文字幕精品日韩中文字幕| 天天视频黄网站| 九九RE视频在线精品| 99热这里只有精品8| 殴美性色a级欧美| 好爽,再快点啊哈嗯嗯嗯嗯| 天天综合影院91| 青青欧美| 亚欧操逼片在线观看 | 欧美内射少妇| 青娱乐手机日韩在线视频| 男人的天堂日韩| 天天综合网在线91| 91综合色噜噜| 久久精品日韩| 激情五月天丁香社区| 精品区9| 日韩99神马视频片| 视频二区熟女人妻| 久久午夜神马| 香港澳门日本三级网站| 99久久久无码精品国产人| 免费操逼视频下载| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 激情网五月天| 91色综合激情| 91 国产丝袜在线播放-百度| 98超碰欧美| 无码人妻精品一区二区三区99不卡| 日韩久久.一级黄色片| 大香蕉乱伦视频网| 北条麻妃99精品青青久久| 性爱AV天堂| 色臀AV| 国产精品无码久久久久2025| 免费A V在线| 夜夜久久| 男人的天堂com| 秋霞成人一级在线观看|