日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
第45页一区二区| 夜夜欧美| 18一区二区三区| 色综合久久av| 极品白嫩美少妇在地板上位骑射淫水泛滥| 香蕉一区二区三区在线视频| 色婷婷99| 欧美亚洲尤物久久| 久久精品一区二区一8| 久久婷婷亚洲欧| 91精品久久久久久综合五月天| 啪啪视频免费在线观看| 久久久中文| 91精品久久久久久77777| 欧美性爱97超碰| 淫色网综合| 可免费观看的av毛片中日美韩| 欧美激情精品久久久| 九九热男人天堂| 日本肏逼视频在线观看| 婷婷综合网站| 视频国产精品未满十八禁止在线观看| Av手机版天堂网| 麻豆精品久久久久久久| 亚洲日本加勒比在线| 国产区91柔拿会所技师| 乳欲人妻办公室奶水| 天天澡天天爽日日AV| 一本久久久精品| 国产精品视频自拍在线| 97ai亚洲| 自拍啪啪视频| 日本熟妇自慰性高潮一区二区三区| 欧美制服网站美腿丝袜| www.91色综合| 久久久久久9999| 女同性恋一区二区三区精品视频| 国产天美欧美| 欧美一级欧美三级在线观看| 亚洲成人精品久久久| 91九久| 国产亚洲精品第一最新| 综合熟女| 岛国小电影| 亚洲五月丁香花狠狠干一区二区三区| 蜜桃视频精品一区二区| 日本精品人妻少妇一区二区| 日本高清熟女久久一区| 日韩欧美~中文字| 亚洲有码第一页| 97精品第3页| 午夜天堂精品久久| 日日嗨AV一区二区夜夜| 丰满人妻-区二区三区免费看| 天天久久久久久| 国产精品久久久久久久久久久久久久吹 | 久久国产乱子伦精品免费女人| 国产无马在线| 免费人成在线观看网站品爱网| a片自拍直播视频| 欧美亚洲国产91在线| AA级电影三区| 在线无码操| 午夜大香蕉| 五月天激情四射| 美女超碰978| 人人摸人人干| 亚洲图片在线| 欧美色欧美| 国产精品高清2021在线| 一级性爱aaaa| 骚货人妻偷情自拍在线视频| 综合熟妇一区二区三区| 日韩在线欧美精品一区二区| 97人人超| 色网在线| 无码不卡八戒| 欧美十八禁在线看| 啊操爽品善一区二区三区| 91模特在线观看| 69天堂| 唐山老熟妇露脸啪啪叫| 一二三啪啪专区| 熟女高潮合集-永久久久-成人AV| 2017天天拍大香蕉| 五月激情天| 东北老女人的激情视频| 男人的天堂视频精品乱在线| 人人操人人大香蕉| 九九国产热| 中文字幕成人乱码熟女精品国50 | 日本在线视频导航| 亚洲色图国产另类| 欧美视频一| 懂色AV蜜臀无码精品APP| 日本天天吊| 精品妇操一区二区三区| 9国产超碰| AAA久久| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 男人的天堂在线2| 国产熟女高潮一区二区三区| 国产二区三区免费视频| 怡红院网站在线视频| 欧美影音在线| 曰韩中文人妻视频| www.91理论| 精品国产自在在线99| 亚洲欧美天| 国产成人午夜视频网址| 91色噜噜狠狠| 天美精品原创av片国产| 99热精品在线在线| 日韩在线电影| 蜜臀av在线播放一区二区三区| 香蕉免费一区二区三区不读| 做爱A级亚欧| 欧美日韩丝袜| 尤物av网站免费在线播放| 91狠狠色丁香婷婷综合久久| 91成人无码| 精品人妻美妇91job| 国产极品久久久| 亚洲天天操| 久久精品国产精品亚洲艾通辽熟妇 | 国产精品午夜精品| 最新国产亚洲精品精品国产亚洲综合| 天美传媒Av在线| 国产又黄又粗的视频| 大鸡吧尹人在线| 一级毛片电影免费看| 亚洲情色电影网| 亚洲熟女综合网| 中文字幕在线免费观看视频| 综合色好色| 人妻熟女一区在| 国产美女高潮视频| 久久女婷| 波多野42部激情无码喷潮| 高清不卡国产| 国产无码一二三区| 啊啊啊啊啊啊好多水| 亚洲高潮少妇| AV和黑人在线播放| 91精品少妇搡搡搡| 999久久久精品国产| 亚洲最新Av| 75大香蕉| 1024人妻熟女一区二区三区| 97亚洲在线| 校园春色之综合网| av在线不卡一区二区三区| 夜夜操中文字幕| 日韩丝袜二区| 国产免费一区2区3区| 操B久久| 亚洲高清国产理伦片| 男人的天堂com| 少妇69中文| 干婷婷综合网| 五月婷网站| 中文字幕AV中出| 亚洲天堂另类小说男人| 特级丰满少妇一级AAAA爱毛片| 91精品操美女| 色男人色天堂东京热| 强免费黄色网址| 亚洲色宗合| 久久大陆| 麻豆国产原创AV色哟哟| 很很热性爱视频| 中文字幕蜜乳av| 欧美第二页午夜| 欧美午夜精品久久久久久3D| 秋霞影音一区二区三区| 亚洲一区日韩精品中文字幕| 天天综合,91入口| 久久综合乱子伦国产免费| 老司机射| 日韩 国产 欧美自拍| 97精品视频在线播放| 亚洲熟女国产综合另类| 婷婷伊人网| 蜜乳Av成人片网站| 91东北熟女| 干美女人妻| 欧美综合色站| 亚洲欧美一区二区三区在钱蜜桃| 无码聚合| 亚洲欧美日韩免费电影| 97久久久| 免费在线看黄片av| 夜夜嗨一区二区三区直播内容| 欧美一二在线| 久久精彩视频9| 极品色www影院| 最新中文字幕在线亚洲| 欧美日韩国内不卡| 国产成人手机视频激情| 久草免费福利在线播放| 欧美精品精品一区二区| 日本操逼无码| 飘花国产午夜精品不卡| 丰满人妻一区二区三区性色| 日韩国产欧美伦理在线| 国产女同视频在线播放| 亚洲图片激情综合另类| 黄色片一区二区三区四区五区| 9久在线视频只有精品| 久久久啊啊啊| 亚洲日韩在线a不卡99精品 | 麻豆婷婷成人一二三| 国产女人高潮视频| 天美传媒国产原创中文字幕亚洲欧美另类| 国产免费久久久久| 免费看久久久性性| 久操不卡视频| 裸体美女免费看网站青草| 99ri精品| 亚洲丝袜色| 久久婷婷五月天| 中文字暮97| 欧美亚洲激情小说| 亚洲欧美校园| 狠狠爱大香蕉| 91视频精品| 岛国1区2区3区在线观看| 日本精品999| 中文字幕蜜乳av| 91社区伊人| 日韩字幕一区| 欧美性爱十八禁| 97色色网| 欧美操逼视频二区| 插B在线观看| 久久九九热| 天堂成人网| 中文字幕乱码在线| 日韩在线欧美精品一区二区| 日韩一级特黄av毛片| 欧美精品久久久久久久久88| 一区二区偷拍拍视频| 超碰亚洲欧美日韩无| 久久综合日韩亚洲欧美| 日韩熟女视频二区| 又大又大又大又粗爽高潮观看| 国产农村妇女精品| 亚洲强奸乱伦影视网| 日韩不卡av一二三| 久久精品视频28| 黄色片G G G| 美女好片色日本| 成人国产视频在线观看| 岛国视频免费在线观看| 欧美AB在线观看| 2017天天透天天通天天擦| 精品无码久久| 免费啪啪av| 自拍鲍鱼一区在线高清观看免费| 欧美综合97www| 物业黑人 AV一区| 色综合91| 少好三P| 超碰在线欧美性爱激情| 日韩av在线免费网站| 超碰色男人操熟女| 欧美日韩性爱操大逼| 老女人日韩美91| 中文字幕诱惑制服人妻丝袜美丝袜美| 97日亚洲欧美| 六月丁香五月婷婷| 九九亚洲色在线观看| 麻豆久久一区二区三区| www激情| 乱码人妻一区二区三区| 免费看黄片现成| 色婷婷丁香五月| 久久亚洲天堂| 自拍偷拍2025在线观看| 精品国产乱码久久久兰草影视| 国产精品一区二区三| 日韩性爱电影一区| 精品中文一区二区| 久久久久亚洲三级电影| 夜夜狼人妻| 男人的天堂网页| 人妻少妇色综合| 91碰碰| 国产AV激情无码久久无码| B049AV在线播放| 超碰精品日韩欧美国产| 97超碰碰碰| 日韩欧美女求操每天更新| 久久久精品视频免费观看| 日本999精品| 一级做受视频免费是看美女| 无码heyzo高清一区| 日韩人妻无码不卡网站| 成人情色一区二区| 91欧美在线| 日韩欧美女优电影| 伊人操| 六月丁香网| 欧美春色| 欧美少妇一区二区三区| 成人七区| 欧美第五页| 99re国产中文字幕| 青青在线视频免费| 91偷拍欧美亚洲| 成 人 A V免费视频在线观看| 91色艳| 亚洲爽图| 素颜老阿姨乱情色| 亚洲AV永久无码一区仙野| 超碰偷拍| 又大又白奶子| 另类亚洲一区二区三区| 91国内外在线| 天天看高清麻豆| www.婷婷六月天| 日韩精品作爱导航| 成人福利视频网| 日韩欧美~中文字| 日韩人妻无码专区| 高清国产精品福利网站| 99re在线观看| 中文字幕在线观看视频www| 色综合天天爱去电影网| AV天堂男人的天堂| 91精品丝袜久久久久久| 九九九九热| 久久久久久波多野吉衣高潮| 九九色影院| 亚洲国产精品成人久久蜜臀| 天堂综合| 10000部十八禁看电影| 日本国产高清色www视频在线| 超碰色美女| 天天干美少妇一区| 男人高清无码一区二区| 天美传媒AV在线| 欧美 牲| 少妇超碰在线| 性爱边摸边日免费AV| 啊啊啊啊嗯嗯在线久久久| 久久久久久久少妇| 欧美黄色大香蕉一区二区| 性天堂| www.av家庭乱伦| 搞中出久久| 亚洲第一男人天堂| 欧美成人亚洲精品| 99爱在线视频| 一区二区视频在线播放| 超碰在线人人射| 精品制服美女中文一区二区三区| 中文字幕丝袜美腿| AA丁香综合激情| 啪啪AV导航| 91亚洲人| 一区二区三区四区五区久久久久久| 九九精品美女高溯喷水| av片在线观看免费播放| 久久精品国产亚洲AV嘿嘿| 日产操逼| 亚洲av噜噜噜噜噜噜| 综合熟妇一区二区三区| 久久久久久无码人妻中文字幕| www.97在线| 狠狠干狠狠色| 狠狠色综合网| 一块操欧美| 人妻精品一区二区在线| 熟妇的味道HD中文字幕| 人妻色偷色噜| 91香蕉国产尤物视频| 97超碰9| 国产超碰欧美| 四虎免费在线播放| 青青草在线视频美女| 中文字幕后石码三区四区| 97视频免费播放| AV天黑人| 久久久久久久久久久久欧美日| 黄污污污污| 99久在线精品99re8| 93人人操人人| 综合自拍| 熟女乱伦二区| 亚洲色婷婷| 久碰视频| 日本天堂网| 久久精彩视频9| 神马福利久草| 啊啊啊 在线观看| 看看小穴| 亚州日韩97| 人人操人人射人人干| 日韩不卡网操逼中文字幕日韩| 成人一区二区三区四区| 精品视频久久区| 天天影视之亚洲综合网| 亚洲图片 欧美电影| 精品久久97| 青青操国产夫妻| 91视频综合网| 精品九九国产无码| 九九aV| 国内外色色色色色成人视频| 中文字暮97| 久久亚洲熟妇在线视频| 91美女视频。| 性色av大全| 日韩精品碰碰| 九九综合色| 国产精品对白内射| 久湿久久 | 久草资源在线| 99这里只有精品国产| 国产理论视频在线播放| 电影69乱码96| 欧美在线视频播放| 国产欧美另类久久久精品课程| 凹凸精品熟女在线观看| www.av在线视频| 欧美性生活综合| 久久久亚洲精品电影免费看| 欧美激情黑人| 青娱乐淫乱1314| 婷婷中文网| AV色天香在线| 日本97久久| 天天看夜夜看日日干| 99热在线观看| 国产欧美日韩臀| 在线天堂资源亚洲| 爽极品影院| 亚洲色图大香| 国产丝袜一区二区三区| 黄色人人| 91AV老熟女视频| 国产欧洲精品亚洲午夜拍精品| 欧美高清第一页| 欧美午夜一区二区三区| 午夜欧美神马久久久久| 国产女人视频三四五区| 一区二区三区欧美激情| 日韩精品电影| 国产女s强制榨精视频| 玖玖婷婷五月天| 日韩少妇一区二区三区| 亚洲欧美另类激情小说| 操婷婷逼| 一本色道无码DVD中文字幕| 大香蕉伊人久久| 九九英色视频| 久久综合激情| 人妻少妇精品视频一区二区三区| 99国产在线绯色一区| 亚洲人妻久久久| 1769国内精品视频| 少妇国产不卡| 探花精品 一区二区| 人人色人人操在线| 丁香7月婷婷| 久草免费福利在线播放| 精品人妻一区二区三区视频| 黄色香蕉视频网站一区| 91欧美成人色站| JIZZJIZZ亚洲女人被躁| 亚洲中文制服诱惑| 日本淫乱女一区二区三区视频| 国产超碰| 无码伊人久久大杳蕉中文无码| 国产精品一区午夜福利| 狠肏骚人妻| 日韩无码一级黄色av片| 一区二区三区 丝袜 高跟 美腿| 久久久啊啊啊| 亚洲综合激情五月久久| 啊啊啊啊嗯嗯在线久久久| 黄片在线免费在线观看| 久久婷婷一区| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 中文AV制服乱伦| 精品v1区| 黄色电影在线播放综合网站 | 在线观看中文字幕| 78p欧美| 日韩性爱小视频| 诱惑人妻欧美一区在线播放| 久久精品中文字幕观看| 精品丰满熟妇人妻一区| 狠狠综合网| 不卡二三区人妻少妇| 伊人激情| 免费操逼91| 情色五月天久久久| 亚洲91在线播放影院| 日本精品免费一区二区三区四区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 夜夜嗨AV蜜臀av| 亚洲?V无码专区在线电影| 久久日本熟女精品一区| 色丁香久久| 大JI巴好深好爽又大又粗视频| 亚洲不卡不卡中文字幕不卡| 再深点灬舒服灬太大了添视频| 97草草| 亚洲综合小说另类图欧美视频激情小说色五月天 | 老熟女天天操| 欧美色图片91| 国产精品岛国片在线观看| 91爱剪切久久| 嗯嗯啊好大| 五月婷丁香| 久久久国产av美女私房| 少妇三p| 二级久久网| 日本123区操B视频| 免费黄色片。| 好吊色综合| 老熟女中文字幕高清| 亚洲丝袜二区| 久久性爱大全| 手机看片日韩人妻| 2020中文字幕在线观看| 98福利在线视频| 青青青操| 国产热RE99久久6国产精品首| 久久性爱视频免费看| 97综合久第一页| 超碰 av 女人天堂| 精品久久99| 色五月激情综合网| 激情综合网五月婷婷五月天| 一级婬片120分钟试看| 中国少妇啪啪视频| 精品制服美女中文一区二区三区| 操人妻逼91| 极品极品色影院| 91在线综合网| 五月丁香成人网| 国产理论视频在线播放| 丁香五六月啪啪| 美女91在线| 少妇久久久免费| 日韩/97| 丁香五月社区| 国产成人无码久久精品| 乱欲一区二区| 亚洲AV无线| 一区二区三区美女超清| 超碰久草| 麻豆天美AV传媒第一页| 日韩不卡网操逼中文字幕日韩| 午夜福利久久久噜久噜久久综合| 久久久久免费少妇| 国产热RE99久久6国产精品首 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 巨爆乳一区二区爆乳区| 日本中文字幕不卡视频| 亚洲伊人久久综合97| 天天拍夜夜| 碰超人人在线一区二区三区| 亚州久久9| 蜜臀AV成人精品蜜臀AV久久| 强上我不卡卡| 亚洲免费精品一区| 天天操女人| 无码免费一区二区三区啪啪| 91啪9色| 殴美性色a级欧美| 99热综合| 亚洲图片欧美在线视频| 婷婷色网| 亚洲……91| 婷婷色一区| 夜夜爽33333| 日韩精品一二三四| 狠狠躁AV| 蜜桃视频精品一区二区三区| 欧美亚洲美少妇一区二区| 欧美中文狠| 久久骚| 欧美九一精品久久久熟妇| 999九九九九国产动| 黄色成年| 久久AV无码AV| 欧美一区二区三区不卡高清视频| 欧美一级AAAAAAA| 在线播放免费av福利片| 国产树林里野战在线看| 亚洲综合婷婷| 九九成人| 国产精品suv一区| 小骚逼被操的爽不爽| 99久在线精品99re8| 久久这里只精品| 2020久久免费视频| 密乳AV免费观看| 亚洲一区二区三区AV无码 | 亚洲污污网站| 91 丝袜在线播放| 人人做,人人操,人人摸| 五月丁香社区婷婷日韩欧美精品影院| 亚洲男人天堂Av| 97欧美精品综合| 91亚洲狠狠色| 17c嫩草51久久91嫩草| 欧美黄色大片在线观看| 婷婷综合五月天| 黄色高清久久无码依人| 久久久无码精品人妻二区| 久草午夜| 久久精品店| 亚洲s在线观看| 狠狠爱AV| 岛国在线国产| 中字乱伦AV| 熟女中出视频| 熟女精品日韩一区二区三区| 熟女五十路一区二区三| 在线啊啊啊啊| 夜夜黄| 国产av波波国产精品| 色综合五月天| 长久操视频| 91大神精品长腿在线观看网站| 亚洲AV无码国产成人| 男人干美女| 午夜经典| 日美免费黄片| 日韩精品人妻中文字幕久久久| 大香蕉草草| 欧美国产伊人久久久久| 97视频在| 啊啊啊免费| 婷婷五月天成人网| 超碰午夜| 超97在线精品视频| 青青久操| 久久透逼视频| 青青草原狼av| 99精品人妻| 少妇超碰在线| 99这里只有精品| 久久精品店| 黑人精品久久97| 日本影视久久免费| 久操99| 天天噜| 神马精品视频| 男人天堂东京热| 人妻熟女一区在| 欧美综合色图网| 亚洲黄色网址视频| 久久综合av| 亚洲国产成人福利在线观看| 射丝袜大香蕉| 亚洲乱伦图片视频| 激情四射婷婷六月天| 国产精品自拍xxxx| 小草av不卡亚洲二区| WWW操逼| 青青草视频导航官网| 高潮的A片激情扒开一区| 久久精品老司| 啪一啪免费视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 激情综合网激情综合| 97亚洲国产影视| AAAA级日本片免费视频| 国产AV人人 夜夜人人澡| 亚洲精品一区二区精品| 色偷综合| 欧美性爱精品一区二区| 91热热色| 99自拍B亚洲 | 极品后入免费视频| 操逼无码一区| 伦理第一页| 91色女| 操逼不卡中文字幕| 91精品国| 亚洲 欧美 另类 综合 偷拍| 五月婷婷六月丁香网址| 色天天野狼综合社区| 99精品久久| 在线综合网| 黑人精品久久97| 青草av在线| www.亚洲黄色| 欧美综合传媒| 亚洲另类久操网| 精品国产91av一区二区三区| 欧美日综合| 亚洲国产精品久久久久婷婷青年| 激情抓乳插进去啪啪啪日韩 | 97在线免费观看| 色天堂综合| 大香蕉免费中文| 热久久国产| 精品传媒在线一区| 97自拍一区| 99精品在线观看| 黄色香蕉视频网站一区| 久9综合在线| 青青草视频久久久久| 日本 欧美 国产一区| www.色吧5.com| 精品久操| 亚洲欧美日韩国产丝袜自拍中文| 五月婷婷激情综合| 在线观看精品国产免费| 男人天堂电影院| 小电影欧美91| 欧亚日韩三区| 色婷久久| 天天精品| 欧美精品日韩久久久九| 中文字幕在线免费观看2| 日夜尻逼网| 日韩人妻精品中文字幕| 色色色色色色色色色色色色色色综合| 亚洲国产一级精品毛一级精品看免费视频 | 天天操天天7| 嗯嗯嗯啊啊啊操的我好爽| A久久| 亚洲成人久久一区二区| Av手机版天堂网| 91美女视频在线观看| 97操碰| 操淫穴亚洲五月丁香 | 97色色色| 亚洲码专区| 黑人操一区二区| 人人操人人色人人摸| 无码78| 亚州综| 高潮9999外国| 人人操人人精品影片| 啊啊啊啊啊啊啊啊啊啊在线观看| 亚洲av热热色| 禁止观看美女黄| 日韩三四五区| 6080yy午夜理论三级一区二区三区无码| 十八禁视频网站| 色久桃花影院在线观看| 国产精品嫩草影院免费| 成人无码电影在线观看网| 国产精品久久久久久久电影渣男| 欧美精品三级黄片| 超碰97精品| 色在线视频导航| 日本孕妇一区二区视频操逼免费看| 国产精品美女视频诱惑| 亚洲欧洲激情卡通另类文学四射小说网站| 日日躁夜夜躁狠狠躁超爽| 97伊人超碰| 天天综合网~91| 97免费视频在线| 国产在线播放成人免费| 欧美一区二区男人天堂| 日B操| 夜夜嗷嗷一区二区| 色噜噜人妻丝袜AV资源| 伊人久久久日韩一区| 丰满搜索结果 -第18页- 久久高清无码 | 97综合网| 亚洲精品久久久久毛片A片拉屎| 亚洲色阁| 91在线免费精品视频| 五月天久久综合网| 久久久久人妻二区精品叶可怜| 亚洲av淫乱| 啊v视频在线观看| 熟妇高潮一区二区免费视频| 亚洲一区二区三区麻豆传媒| 久久久久久久久久精| 久久久一区二区| 久热这里只有精品9| 欧美日韩1234| 亚洲一区二区三区中文字幕| HEYZO高无码国产精品227| 操操操五月天婷婷丁香影院| 亚洲av无码国产精品字幕| 国产呦精品系列在线观看| 亚洲,日韩,欧美,成人播放| 欧美一级A片不卡视频。| 亚洲av乱伦色图网站| 激情自拍 校园春色| 亚洲天天影视综合网| 综合情欲网| 操逼网站网站| 家庭乱伦网站国产| 97色插| 新视频sss国产| 精品对白久久不卡| 日韩无码三级影院| 人妻激情另类| 中文字幕综合人妻| 9999久久久| 日本免费中文字幕在线| 亚洲欧美大| 欧美国产有色电影| 综合夜夜| 日操粉逼逼| 九九久久久久久爱| 色97国产69香蕉| 久久久久久久伊人精品| 五月天色色网站| 久久久久久久久久久999| 亚洲一区中文字幕| 天天干人人干天天日97| 天美传媒国产原创中文字幕亚洲欧美另类 | 91日韩网站| 26UUU欧美日本| 婷婷视频网| 欧美 牲| 色图综合网| 大伊香蕉在线视频免费| 亚洲激情天堂网| 99中文字幕| 色人久久| 操逼短片| 激情网色| 超碰97色色| 操一操摸一摸| 五月天丁香网| 色网亚洲人| 日日摸夜夜夜夜爽| 一区,二区,三区视频| 少妇色| 大奶啊啊好爽| 久久精品国产97欧美精品亚洲| 亚洲最新中文字幕免费| 96爱综合| 十八禁啪啪视频| 岛国小电影| 丁香色狠狠色综合久久小说| 殴美性色a级欧美| 女上位精品在线| 国产麻豆福利av在线播放| 嗯嗯,好大,好爽,好骚| 日曰骚久久精品| 乱伦日本中文自拍| 国产高清1234区| av天堂电影网| 99re视频在线观看这里只有精品| 亚洲综合色图欧美| 欧美精品999| 日骚逼视频| 日本久久99| 风月影院十八禁| 中文字幕黑人大片| 国产无码成人无码| 久草精品热视| 丰满人妻被猛烈进入中| 日本天堂网| 亚洲伊人a线观看视频| 欧美翘臀视频网站一区二区三区| 极品色www影院| 伊人国产AV| 欧美99热| 嗯嗯啊啊操我| 哈哈操电影AV| 午夜福利av电影在线| 国产又大又粗又长视频在线| 国产啊v在线免费播放| 日日AAvv| 久久久久久午夜男人的天堂| 永久电影三级在线观看| 亚洲天堂自拍| 国产AV无码AV| 97超级久久| 欧美图片色综合| 欧美αv.com| 美女十八禁| 日本特黄f c2| 国产最新小视频在线播放下载| 97爱b| 激情综合久久| 91狠狠综合| 天天拍天| 熟妇高潮一区二区免费视频| 操婢日韩| 欧美色97| 日日夜夜骚| 俺去俺来也在线www| 久久东京热久久| 久久久99999久网站| 国产免费一区在线观看| 超碰日韩人妻| 久久网亚洲| 福利风月五月天影院| 国产精选三级在线观看| 日韩精品人妻| 欧亚韩国999| 日韩美一区| 国产精品视频白浆免费| 日本不卡二区| av草草在线电影| 好吊色在线观看| 日韩一级片在线看| 91色婷婷综合久久中文字幕二区| 日韩精品大香蕉伊人在线| 丰满人妻一区二区三区免费,| 天天日天天搞天天干| 91色婷婷综合久久中文字幕二区| 东京成人一区| 激情丁香五月婷婷| 国产亚洲中文不卡二区| 人妻91少妇| 热热色色综合| 欧美性区| 一本道综合色图| www成人啪啪18秘 免费| 欧美gv在线观看| 91bbb| 精品一区二区2| 青草影院内射高潮| 日韩人妻无码精品系列| 日韩人妻精品久久久久| 蜜乳AV色欲AVAV无码| 黄色大片免费在线| 女人精品内射国产99| 91高清日| 肉丝中文无码高清| 欧美少妇性乱| 九九九九九九成人| 久久av色| 欧美乱色| 95人妻爽爽人人做人人澡| 久草免费福利在线播放| 人人艹亚洲| 国产精品午夜福利亚洲综合网| 久久中文字幕在线观看| 欧美 色 亚洲| 91麻豆天美国产欧美高潮| 亚洲色图欧美色图制服诱惑| 亚洲欧美色综合| 久久久久亚洲熟妇熟女| 日亚韩精品视频二区三| 欧美真人抽搐一进一出gif| 色色毛片| 亚洲五月婷婷| 国产AV激情无码久久无码| 老司机福利青青草| 亚洲色图欧美色图另类图片| 亚洲自拍97| 物尤视频一区二区| 欧美图片色综合| 97碰在线视频| 日韩999| 久久久婷婷| 大香蕉520| 97福利视频| 一级黄色性爱A级片| 天天日天天搞天天干| 搡老女人老熟女91| 视频一区二区免费在线| 日韩无限资源| 国产在线观看一区二区三区| 91视频伊人| 天天躁日日躁AAAAXXXX国产 | 中文字幕一区二区三区字幕| 亚洲天堂AV在线播放| 亚洲va有码在线天堂| 日韩欧美tv一区二区在线观看| 1024人妻熟女一区二区三区| 人、人、摸,人、人、草| 爆操无码| 五月婷婷五月天| 夜夜操av亚洲一区二区| 嫩草伊人久久精品| 精品久操| 夜草网站| 日逼视频日本| www超碰| 欧美夜夜狠| 亚射在线| 亚洲中字慕不卡| 亚洲熟女一区| 啊v在线观看视频| 思思久热在线精品66| 欧美一级美片在线观看免费| www成人啪啪18秘 免费| 免费看毛片操穴| 偷拍亚洲高清图片| 屁股久久久久久久久| 欧美性暴力| 黄色视频60分钟| 激情五月综合网| 大肉棒导航| 91久久国产精品| 久久久精品电影| 欧美日韩第一页| 麻豆AV一区二区| 97 国产精品| 香蕉欧美| 8050无码八戒| 久久久久久久久久久人妻| 男人的天堂日韩| 欧美亚洲小说| 久久九九国产精品| 亚欧无码在线| 久久久久久久九九九九九九| 国产精品一区午夜福利| 无码人妻一区二区三区四区老鸭窝| 日本爽爽爽爽爽爽免费视频| 亚洲成?V人片在线观看福利| 看看小穴| 色色青青久久| 国产无码久久高清| 国模精品一区二区三区苹果色戒| 偷拍欧美激情| 欧美日韩精品青青| PMv在线观看| 日本在线一二| 久久人妻无码毛片A片麻豆| 中文久久| 日韩另类色图| 日本人妻天堂网站在线播放| 日本色色色网站免费看不卡| 久久香蕉网| 欧美亚洲涩涩| 国产亚洲色停停久久99精品91| **一级毛片国产| 久久人人爽爽爽人久久久| 中文字幕一区二区无码成人| 1人人看人人摸人人操| 国产欧美精品日韩区二区麻豆天美| 伦在线97| 中文字幕第9页萱萱影音先锋| 五月丁香影院| 五月天亚洲网| 成人国产视频在线观看| 九月丁香婷婷| 免费男人的天堂| 日本免费一级AAA大片器 | 婷婷视频在线免费观看| 四虎AV影视国产精品亚洲精品| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 91九九| 欧美日本不卡在线| 狠狠色色| 青青草在线视频播放器| 激情五月婷婷| K8久久久久| 成人亚欧免费视频| 尤物视频偷拍免费| 欧美日韩国产高清在线一二三区| 亚州欧美一区| 成人性爱视频在线看| 欧美伦乱爱| 伊人久久综合精品欧美| 久久久久久久久久黄色网| 亚洲精品尤物yw在线影院| 91天美传媒在线观看| 黄色电影在线播放综合网站| 色麻豆AV| 7777欧美成是人在线观看| 亚洲丰满很很操| 超碰在线99| 欧美精品三级黄片| 亚洲18禁| 人妻偷拍一区二区三区| 久久免费看高潮毛片韩国| 北约熟女超碰| 九一性生活免费视频| 丁香五月天久久精品视频一区二区三区| 91新在线欧美| 偷拍亚洲熟女视频播放| 操死我干死我| 国产一区在线观看无码AV| 超碰在线1234区| 欧美性爱日韩性爱| 国产污视频麻豆传媒一区二区| 国产亚洲色停停久久99精品91| 青青草亚洲一区 | 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 久久AV无码AV| 96精品久久久久中文字幕| 黄片免费久久久久久久| 欧美色图校园春色| 欧美综合站| 国产兽交视频在线播放| 青青草日韩免费观看高清在线| 久久久九九网站| 色图综合网| 麻豆AV短剧| 国产尤物AV尤物在线观看不卡| 国产97在线 | 亚洲| 天天综合AV| 久久性爱网站| 亚洲精品久久久久毛片A片拉屎| 麻豆黄四叶草网站| 狼人久草| 久久成人国产精品| 少妇激情AV| 日韩一级二级| 国产区91柔拿会所技师| 成人怡红院| 亚州中文字幕超碰97| 伊人AAA| av无码av无码专区| 久久久久久精| 久久精品高清无码一区| 嗯嗯嗯嗯啊啊啊好紧好大| 亚洲欧美变态| 日本欧美韩国日产片片在线看免| 天天弄天天操| 一起草高清无码| 亚洲中文字幕日产无码久久| 影音先锋国产精品| 夜间福利片1000无码| 精品日韩人妻视频| 嗯嗯不要 视频| 久久av网| 精品少妇一区二区三区在线视频| 婷婷久久五月综合激情| 日韩无码第3页| 伦理弟一页| 99热97| 91久操| 国产综合永久精品日韩鬼片| A一区片| 亚洲 欧美 色图| 亚洲青青草| 97午夜剧场日韩| 亚洲国产精品乱码在线观看| 天天上日日上日韩精品| 熟妇色99| 97久久超碰亚洲| 青娱乐 成人娱乐在线| 欧美做爰无码A片视频| 国产www色在线观看| 91精品无码久久久久久久| 日韩91网| 国产嫩草精品A88AV| 亚洲欧美另类少妇精品| 中国探花熟女| 免费在线黄片视频| 欧美,日韩综合久久| 免费精品中文字幕| 国产精品直播在线观看直播| 综合亚洲网| 97精品一区二区视频在线观看| 亚洲欧洲第二视频在线观看色图| 久久久人体| 2011国产精品| 欧美毛片在线网| 极品极品色影院| 日本一区二区成人在线| 欧美熟女操屄| 婷婷丁香九月| 日韩免费簧片| 99re免费视频精品全部|