久久亚洲成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
返回資訊列表
亚洲宗合电影| 久久久99免费| 日韩一性一交一A片俄罗斯| 亚洲 日韩 欧美 国产综合体| 网站A V在线| 91色婷婷综合久久中文字幕二区| 日本东京热大香蕉a片| 97色网| 2020中文字幕| 91亚州| 久久大香蕉手机高清| 亚洲综合在线91| 自拍偷拍 日韩无码| 丰满搜索结果 -第18页- 久久高清无码| 久久大| 91在线|亚| 97爱爱| 狼人综合婷婷激情四射| 激情五月天中文字幕色| 暖暖精品二区三区观看| 久久精品国产精品一区 | 久草综合京东| 国产亚洲深夜激情| 国产免费久久精品99re韩国| 人人看欧美性爱| 久久人妻少妇| 色综合色| 日韩无码一级黄色av片| AV在线资源| 在线观看AV片| 蜜臀久久99精品久久久久久成人小说 | 久久久 国产精品| 亚洲青青草| 天堂无码精品国产久| 久久综合久色欧美综合狠狠| 懂色AV蜜臀无码精品APP | 天天做天天爱天天爽AV| 大伊香蕉在线视频免费| 偷偷人人精品女女久久| 91九九九馒头| 日韩精品 视频一区二区| 色综合超碰超| www.99热| av一区二区三区不卡| 九九十八精品| 人妻日日干| 91白虎| 黄页大片在线观看| 亚洲欧美综合区自拍另类| 综合97亚洲| 色官网在线| 女生久久网| 亚洲中文字幕乱码无码一区二区 | 中文有码第五页| 久久亚洲欧美中文字幕国语| 国产一二三在线视频五十路| 亚洲宗合网| 激情五月激情综合网| 婷婷操视频| 日日黄色三级网站| 婷婷综合久久| 亚洲精品人妻在线| 欧美 亚洲 第一页| 97频视在线| 可以免费观看的AV| 亚洲精品一二区| 91成人亚洲色图| 成人在线视频二区| 久久久久亚洲?V片无码V| 俺去啦自拍| 热天堂一区二区| 精品一区二区成人| 亚洲天堂久久久久久粉红视频| 伊人aaa| 五月丁香六月激情综合| 免费在线黄片视频| 成人自拍三级在线观看| 亚洲高潮影院| 激情黄色五月天| 超碰97欧美在线| 国产av美女被艹的乱叫| 26uuu最新| 成年在线视频日本亚洲在线视频区精品江靖宇公司| 按摩中文字幕| 中文字幕 国产 精品| 成年人黄色视频免费| 婷婷探花久久精品一区| 久久男人网| 天天干天天插| 欧美特大黄一级片片免费| a片在线播放| 亚州欧美在线| 天天干1区2区在线| 午夜福利区| 天天日天天插| 视频在线观看一二三区| 99热这里是精品| 国产极品一区二区三区三州| 国产精品不卡一区二区电影| 青青草国产欧美非洲黑人| 一区二区亚州激情久婷婷欧美| 天堂蜜桃无码视频一区二区| 99热只有这里有精品| A级片一区| 欧美精品庄| 色综合尤物| 日韩激情毛片一级久久久| 啪啪自拍九九综合| 麻豆一区二区三区在线看 | 欧洲一区二区| 风韵犹存大大大大香蕉| 精品国产乱码久久久久久网站入口| 男人精品天堂一区| 330Dv国产女人终合视频极品人与兽 | 青青色综合| 神马久久久久眼| 久久久久免费少妇| 五月天色色色| 久99| 九热视频| 中文字幕五区| 久久这里精品国产99丫e6| 亚洲色婷婷| 97Ai亚洲| 97在线资源| 午夜欧美神马久久久久| 后入内射蜜桃臀| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 国产一区免费午夜视频| 午夜视频黄| 性无码专区2020| 国产成人91一区二区三区| 色综合一区二区三区| 啊啊啊啊啊啊在线观看| 在线看的av| 亚洲欧美自拍偷拍| www.国产高潮精品| 天美麻花大全视频| 99久久com免费视频′| 日韩久久三区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 中文字幕欧洲有码| 干B网| 亚洲欧美清纯| 一级做受视频免费是看美女| 亚洲自拍天堂| 国产精品视频精品一二| 深爱激情五月天| 亚洲综合色男人网| 99成人| 欧美亚洲首页| 成人综合网 欧美| 偷窥自拍亚洲色图| 激情综合久久| 亚洲人成色9999精品久久| 人妻碰碰碰碰碰碰| 久9久9久9久9久9久9| 91久久久久| 91在线观看,天天综合| 欧美在线亚洲| 操操逼视频| 国产精品亚洲一级av第二区| 岛国黄色大片网站| 污电影在线观看| 五月天人妻综合| 国产9熟妇视频网站| 干少妇视频| 久久无码成人| 草b在线| 国产精品天干天干综合网麻豆| 大香蕉日亚洲日本亚大| 欧美巨大性舒爽顶到了| 久操网线| 91挑色欧美| 凹凸 69堂 在线播放| 人妻精品视频一区二区三区 | 久久精品熟女亚洲AV麻豆软件| 日韩日本欧美在线观看| 亚洲码专区| 高清不卡一二三区视频......| 无码视频一区二区| 激情小说激情视频| 亚洲 日韩 丝袜 熟女 变态| 天美av在线观看| 日产123区精品免费观看| 91色狼| 26uuu性| 麻豆久久视频在线地址| 另类专区加勒比| 大JI巴好深好爽又大又粗视频| 国产亚洲精品av一区| 大胆91| 女上位精品在线| 久久国产AⅤ| 国产精品秘 福利姬在线观看| 丁香五月天婷婷姐| 3PAV乱伦视频| 成人电影一区| 91美女视频电影| aaa亚无码专区| 99热9| 日韩精品大香蕉伊人在线| 香蕉99秘 一区精品蜜桃臀| 凹凸视频在线观看伊人| 中文字幕在在线观看网站| AV有码在线| 在线观看高清AV| 一道本久久棕合爱| 99超碰网| 日韩精品亚洲专区在线影视| 欧美一区二区三区成人性生活| 1769成人国产精品视频| 五月丁香| 黄色工厂这里只有精品| 留下AⅤ黄色片| 91五月天| 欧美日韩午夜精品一区二区三区 | 在线播放欧洲免费av| 视频在线观看免费一区二区三区| 熟女欧美日韩综合婷婷| 国产无码三级视频在线观看| 蜜桃精品一区二区三区ww| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 中国乱伦一区二区| 欧美日韩人妻婷婷一区| 乱伦3P视频| 日本新免费二区三区| 国产无吗在线播放| 色狠狠综合噜一二三区| 欧洲性爱无码区| 久热伊人99re| 性色AV网站| 干B视频伊人网| 亚洲在线a| 大香蕉伊人色偷偷在线| 99re99| 国产亚洲色婷婷久久99精品91| 怡红院亚洲怡春院av| 久久人人爽爽人人爽人人片αV| 好吊色一区| 久久精品人妻一区二区| 欧洲黄色网| 99热免费| 尤物视频新赏网鲜网色诱网| 9118禁| 九九九久| 丁香六月激情综合| 久久春色| 男人下部插入女人下部| 国模无码人体一区二区三| yirendaxiangjiashipin| 人人操人人插 - 百度 - 百度| 久久综合中文国产| 日本在线不卡v二区| 天天干夜夜肏| 99精品在线| 一区二区影视| 一区麻豆 高清中文字幕| 国产成久久综合片| 91爰爱欧美| 成人性爱全视频观看| 中文字幕一品色图| 国产11页| 久久久久免费看少妇A片特黄| 欧美一区二区三区成人性生活| 爱av免费| 天天操夜夜操| 日韩欧美偷拍美女视频| av一区二区三区 中文| 极品少妇久久久| 中文字幕一二三区| 黄片无码在线制服| 欧美天天射| 男女激情中文字幕| 欧美极度丰满熟妇hd| 人妻第一页| 久久这里精品国产99丫e6| 亚洲欧洲日韩天堂av| 91网站18+| 人妻少妇一区二区| 蜜乳AV一区二区三区四| 日本一区二区不卡| 国产熟女自拍| 91扒丝袜综合在线| 婷婷色综合| 中文字幕日韩人妻视频| 999热这里只有精品| 美女大乳久久久久久久女人18| 日韩欧美国产一区二区三区四区| 91久久久久久久久18| 亚州综合色图| 美日韩一卡二卡三卡免费人妻精品| 日本免费一级AAA大片器| 亚洲清纯综合| 九热大香蕉| 久久婷色| 亚洲日韩美女中文字幕乱| 亚洲高清综合网| 粉嫩AV一区夜夜嗨| 嗯嗯啊啊操死我| 性爱av在线免费观看| 成人AV超碰免费在线| 999久久芭蕾| 爽爽爽免费视频| 亚洲成人免费在线| 92午夜免费福利视频| 国产欧美在线观看免费观看| 欧美日韩制服| 中文熟女五十乱码在线| 91新在线欧美| 国产一区96在线| 精品一二三区久久AAA片| yiqicaoav| 日本精品加勒比海一区| 亚洲男人的天堂网| 天天综合欧美综合| 91九久| 五月丁香婷婷综合网| 密乳AV免费观看| 欧美精品精品一区二区| 国产女乱淫真高清免费视频| 蜜色网色哟哟| 天天插天天插| 五月丁香啪啪网| 久久欲| 亚洲天堂久久久久久粉红视频| 青青草国产一区二区三区| 97超久碰| 国产久久一区二区三区野外在线| 人妻天天操天天爽视频免费| 九月色婷婷| 在线视频日韩欧美国产| 91人妻尻屄视频| 国产乱码久久| 亚洲骚男同com| 丁香婷婷激情五月天无毒不卡 | 91丝袜熟女| 久久久久久久九九九九九九| 殴美,日韩国产伦精品| 玖玖在线视频| 26uuu欧美| 大香蕉五月天婷婷| 国产精品国产拍高清AV| 思思热免费视频观看| 中文字幕精品日韩中文字幕| 丁香六月激情| 欧美综合娱乐久久| 97人人操人人摸| 深夜国产一区二区三区在线看| 69少妇一区二区| 国产日韩精品人妻久久久久色欲网站| 啪啪视频亚洲第一| 综合免费无码中文| 超碰免费人人| 亚洲第一页色| 神马视频久久久久久| 翘臀vidoes| 国产久久久9999| 色一射色一射| 超碰精品| 天天操天天日天天干| 爱妻综合网| 日韩欧美中文字亚洲慕| 一区二区三区麻豆| 欧美色图20p| 啪啪性爱免费视频| 国产强奸乱伦xd| 亚州免费啪啪视频| 欧美一区二区三区日韩| 男人亚洲91首页在线| 观看免费区二区三区二| 日韩 欧美 国产 麻豆| 99精品综合久久久久五月天| 亚州综合网| 久久中文字幕不卡人妻| 交换娇妻呻吟声不停中文字幕| 草草网站影院白丝内射| 99操碰| 丰满人妻一区二区三区四| 用力操死我| 和协影院中文字幕三区| 成人青青草原伊人| 久久久久亚洲熟妇熟女| 欧美性爱在线无码| 久久不卡一区二区 | 久久久青青草| 无码人妻一区二区三区色欲aⅴ | 激激五月| 精吧天堂| 少妇久久久| 午夜视频好爽啊| av资源在线观看少妇| 日韩97视频!在线| 亚洲限制级| 天天躁日日躁狠狠狠躁| 久久久久亚洲AV无码专区少妇| 最新国产精品久久精品| 日欧美色| 我要色综合网站| 久久这里只精品免费福利| 8050无码八戒| 一区二区三区日韩欧美| 大香蕉草草| 超碰97久| 影音先锋日本一区二区| 国产一区二区三区视频在线看| 色呦呦、国产精品| 看看日B真人视频| 欧美亚洲情色| 国产AV超爽| 欧美爆操91| 性欧美第一页| 激情网色| 久久婷婷在线观看视频| 丰满人妻一区二区三区免费| 欧美性爱1080p| 中日无幕一二三四区| 久草久日| 日本午夜操逼| 色天使大香蕉| 人妻少妇精品久久久久久久| 精品国产久热在线观看| 熟女一区二区三区| 亚洲日韩在线a不卡99精品| www.狠狠| 久久噜噜噜精品国产亚洲综合| 激情小说图片亚洲首页| 大香蕉免费中文| 欧美色图在线视频少妇| 少妇一区二区三区精选| 久久久久中出| 久久精品国产Aⅴ| 五月婷婷大香蕉| 久草线上视频免费看| AV一区观看| 久热伊人99re| 日少妇视频| 久久婷婷影院| 校园春色美腿丝袜 | 中文字幕视频在线观看一区二区| 97人人爱人人乐| 黄色一级视| 制服诱惑亚洲一区二区三区在线观看| 伊人网免费视频| 亚洲AV无码天美传媒一区| 日韩本不卡视频在线观看| 在线人人人人人人精品超| 超碰综合色| 国产精品久久天天干| 欧美三级一级| yiqicaoav| www四虎| 免费AV中文网在线观看| 国产久久久9999| 好色综合| 午夜成人福利影视| 黄色大片免费在线| 77国产精品| 日韩色欲久久一二三四区| 亚洲第一二区另类图| 亚洲av无码成电影在线播放| 美腿丝袜高跟网免费视频免费视频| 日本潮催一卡操| 欧洲亚洲人妻无码中字久久三区四区| 日韩欧洲操屄视频| 好爽免费视频,| 3D污黄视频在线观看| 中文一区二区| 国产AV超爽| 九九热re99re6在线精品| 99精彩视频| 久久春色| 国产亚洲欧洲在线观看| 少妇人妻好深太紧了vr91| 青青青艹在线视频| 亚洲欧美日韩精品久| 亚洲校园激情| 偷窥自拍亚洲色图| 亚洲无线码欧洲精品区别| 亚洲性猛交| 大伊香蕉在线视频免费| 超碰人人干天天射| 高清不卡视频| 欧美一区二区三区互相| 中文字幕啊啊啊在线观看视频| 91性情| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日本黄色大片一级视频免费麻豆| 久久大陆| 丁香五月天激情综合| 97超碰站| 成人国产精品三级A片| 久肏视频字幕| 中文字幕在线观看第二页| 操逼天美3区| 天天操天天干美女网址导航| 黄色大片一区二区密桃丝袜| 老熟女乱子伦中文字幕一区二区| 色九九久九九| 色爱欲亚洲| 久久精品国产亚洲AV片多多| 亚洲加勒比久久日本道| 中文一区二区| 欧美日韩人人精品| 留下AⅤ黄色片| 欧美色图20p| 久久久久大香青草精品综合| 丁香五月激情综合| 日韩在线性爱免费视频| 国产免费内射视频| 天天综合网AV91| 色激情五月天| 少妇xx精品| 啊啊啊操死我| 骚日日av| 天天干天天日天天射黄色片| 色播丁香| 亚洲欧美在线观看免费| 麻豆天美传媒毛片| 一区超碰一区| 亚洲AV不卡在线观看尤物| 丁香五月激情综合| 国产欧美一级在线观看| 欧美Ⅴ性爱| 在线视频资源| 综合性视频99| 秋霞午夜视频一区二区| 亚洲天堂中文字幕无码男同| 国产三级多多影院2022国产AA一级毛片无码 | 日韩懂色网| 人妻啊啊人妻啊啊| 日本在线不卡一二区| 国产强奸91| 中文字幕99999| 99久在线精品99re8| 欧美老妇女内射网址| 一二三四免费视频| 91呆哥人妻| 中文字幕国产| 91搞逼视频| 国产精品爆乳懂色蜜乳| 96久久久久| 91大香蕉伊人| 大香蕉日亚洲日本亚大 | 亚洲阿v天堂在线| 国产精品久久久久9999小说| 国产91丝袜在线播放蜜月| 蜜臀av中字字幕网站| 色人久久| 91精品国产高清久久久久久,亚洲成人 | 天天操人人操狠狠插| 亚洲欧美色图片| 欧美亚洲特P| 欧美激情一| 久久久精品久久| 成人精品视频| 一本色道综合久久欧美| 色婷网| 韩国黄片aaaa| 午夜一区二区三区国产| 日日日日做夜夜夜夜无码| 在线毛片片免费观看| 亚洲国产精品无码AV久久| 熟妇色99| 啊啊啊爽爽| 午夜精品久久久久久久久久久久久 | 干妹子| 死我十八禁| 蜜臀一二三区| 欧美综合中文| 久久精品久久久久久久| 久久精品店| 91香蕉国产尤物视频| 男人天堂网址| 涩综合导航| 久久综合国产精品国产| 手机在线A片| 亚洲国产精品成人无码久久久 | 丰满人妻-区二区三区| 72av视频| 亚洲一区二区在线观看91| 97久久精品| 综合av社区| 国产成年免费大片黄在线观看| 国产91啪| 不卡免费av在线播放| 综合婷婷| 美女人妻色网站| 色五月天AV| 亚洲熟女乱色一区二区三区久久久 | 综合网亚洲在线| 国产AV中文| 国产无码精品久久久久久| 少妇高潮流水av免费| 色婷婷激一区二区三区| 超碰99在线观看| 你操综合| 91超碰碰在线| 欧美性色欧美| 久久性爱视频99| 熟女字幕| 久久大香蕉手机高清视频| 亚洲色性情三级| 韩日自拍| 东京热男人的天堂| av绯色| 五月婷婷六月色| 天天弄欧美| 久久成人精品| 亚洲欧美高清无码| 首页中文字幕中文字幕免费| 韩国一区二区精品亚洲| 少妇精品久久久| 亚洲欧美洲综合| 天天插夜夜操| 亚洲天堂中文字幕无码男同| 污污污8888| 日本大香蕉综合网红本杳社区 | 国产极品精品美女视频| 丁香婷婷啪啪| 做爱福利视频一区二区| 天天久久| 成人免费福利在线观看| WWW4虎| 蜜桃午夜视频一区二区| 精品人妻免费观看| 超碰精品在线| 中文字幕人乱码中文字的预防方法 | 精品国产久热在线观看| 欧美色图私拍91| 亚洲欧美综合网| 少妇啪啪自拍| 国产欧美一区二区| 欧美少妇高潮| 成人aⅴ一区二区三区| 97日本超碰综合| 啊啊啊男女| 亚洲囯产精品女人久久久| 人人天天欧洲| 激情内射| 国产精品自拍xxxx| 综合网~91综合网| 久久久久久综合久久伊人蜜月| 日韩一级特黄av毛片| 中文字幕精品丝袜| 一区二区影视| 99热99色| 少妇精品久久久八区九区| 一区操逼| 日日天天久久啊啊aaa| 日本亚洲嫩草影院啪啪| 日韩欧美字幕亚洲一区二区| 成人天天看站长推荐| 白丝一区| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 91精片| 大香蕉啪啪啪| 久久有码视频| 在线观看国产黄色| 亚洲91大片| 又大又长又粗又爽又黄| 狠狠图片青青草| 男女啪啪网站免费视频| 国产最新AV| 天天日夜干| 99热亚洲| 一二三区精品视频| 婷婷综合| 超碰97COm中文| 五月婷婷深深爱| 欧美色图99| 3p国产欧美99热| 国产精品大屁股999| 在线精品福利免费播放| 久久久91福利姬| 久久一区二区三区入口| 五月天欧美色图| 粉嫩av在线一区二区| 伊人在线大香蕉视频久久| 午夜福利精品| 熟妇一区,二区,三区。| 精品久久人妻成人网| 色婷婷日韩精品一区二区三区| 久久久 国产精品| 国产精品午夜福利| 丁香五月天堂网| 国产97亚洲| 九九热免费国产视频婷婷伊人五月 | 亚州成人a∨| 五月丁香黄色网| 极品少妇99| 韩日性爱av| 亚洲人久久久网| 欧美东京热精品A∨| 欧美另类天堂| 精品国产一区二区三区av在线资源| 欧美亚洲今日在线| 偷拍网站久久男女男| 9国产超碰| 青青草字幕AV| 久久草在线综合视频| 九九九久久久W精品| 国产精品麻豆成人AV艾秋| 啊啊啊好想要| 青女在线| 日欧操屄视频| 欧美999| 无码久| 亚欧性爱在线无码| 蜜臀久久99精品久久久| 久久精品视频28| 郑州宾馆老熟女露脸啪啪| 婷婷精品久久av影视| 日韩有码免费视频| 亚洲视频1区| 噜噜瑟| 青青欧美在线| 精品亚洲国产成人av网站| 色欲久久99精品久久| 偷拍 亚洲| 操操操日本的逼| 丰满人妻-区二区三区免费看 | 性在久久久久久| 欧美日综合| 天天综合网久久ww| 人、人、摸,人、人、草| 中文字幕在线观| 老熟妇一区二区三区啪啪| 激情五月天丁香| 欧美日韩大黄片| 蜜臀久久99精品久久久久久成人小说 | 亚洲国内精品成人不卡| 婷婷99狠狠| 日韩激情毛片一级久久久| 久久久久久久久女黄| 国产a级精品| 曰韩无码777| 国产无码精品高清| 99re这里只有精品3| av在线不卡一区二区三区| 日韩大香蕉精品在线视频| 狠狠久久亚洲欧美专区| 在线色导航| 女优大全 - 91n| 97视频www| 97中文天堂| 国产无码一二三区| 成人无遮挡毛片免费看| 香港久久久| 97国产色图 | 久久久久久AⅤ无码免费肉站 | 人人操人人摸人人骑| 伊人久大| 欧美91精彩| 欧美老熟另类| 99在线观看| 欧美aaaaaaa| 久久久久亚洲熟妇熟女| 熟女少妇视频| 加勒比性爱成人在线| 亚洲色9| 丝袜六区| 大香蕉啪啪网| 免费操逼视频下载| 激情五月天插| 被窝影院午夜看片无码| 欧美色图 色综合图| 色欧美色交综合| 成人在线永久| 91红杏| 极品丝袜无码| 久久久无码国精品无码三区三区| 干婷婷综合网| www.91逼逼.com| 精品久久99| 午夜影美女日鸡鸡天天视频国产| 色哟哟AⅤ| 久久超碰日韩精品| 午夜操一视频一区| 无卡一区=区| 欧美亚州色的图| 好屌色综合| 中文字幕人妻色偷偷久久皮| 一本正道久久熟女| 91原创在线观看| 人人天天欧洲| 91 亚洲 欧洲| 午夜精品久久久久久久男人的天堂| 乱色视频中文字幕| 午夜黄色免费在线观看| 欧美丝袜制服久久| 温婉少妇玩3p| 亚洲成人福利电影免费| 91人妻做a观看视频| 91精品国产日韩欧美综合| 在线无码视频| 天天操天天干一区二区 | 亚洲高清欧美总合| 欧美性性性| 国产精品剧情| 欧美激情激情xxxx欧美专区| 张柏芝国产一区在线观看| 日日夜夜摸| 久久久久国产精品久久久| 极品另类| 日欧操屄| 无码天天操| 日韩欧美俄罗斯A片| 92人人操人人| 婷婷五月激情综合| 天天做天天爱| 亚洲 欧美 中文 日韩超碰| 久久久啊啊| 内射黑人| 色在线69堂| 色网亚洲人| 在线不欧美| 亚洲啪啪视频免费| 国产亚洲精品农村妇女| 手机看av网站在线看| 久久婷综合| 天美av在线观看| 少妇人妻精品| 色偷偷男人的天堂麻豆| 久久久久久久久9| 不卡在线观看视频| 日韩无码视频黄色| 久草免费福利在线播放| 国产18精品亚洲精品| 人妻嗯啊啊在线播放| 夜夜操夜夜爽夜夜高潮| 小骚逼被操的爽不爽| 97在线日韩中文字幕| 久久岛国| 极品综合| 日本黄 R色 成 人网站| 91狠婷| 国厂麻豆77q4| 台湾佬中文娱乐网久久久久久久久久com | 蜜臀久久99精品久久久久久-DVD原版全| 亚欧高清| 国产日韩在线播放| 爱爱动态120秒| 传媒免费一区二区三区| 91亚洲黄色网| 日本操逼aaaaa| 国产日韩美女小穴视频网站不卡| 91综合网在线| 亚洲国产欧美一区二区潘金莲| A片 AV一级在线播放观看免费| 丁香五月影院| 欧美日韩亚洲高清不卡一区二区三区| 蜜桃臀AV在线| 亚洲美女AV无码| 久久鲁干| 女一区二区| 深夜激情 | 亚洲一本色道中文无码aV天美| 69人妻精品一区二区绯色| 91欧美美女日韩国产婷婷| 蜜桃传媒视频第一区入口在线看| 亚洲电影中字一区二区| 天天色综合天天操| 久久久久久久久久久久黄色| 精品国产99999| 国产a片操逼| 国产 日韩 另类 视频一区爱| 婷婷五月在线视频| 欧美91丝袜| 日韩欧美日韩| 5月婷婷6月六月丁香| 亚州色站 日韩电影| 丝袜美腿操av| 秋霞久久亚洲精品成人| 欧美日日网| 舔人妻中文免费视频| 精品高清av中文字幕| 综合网色| 黄久在线| 日韩黄色片子| 亚洲情色电影网| 密臀成人视频久久久| 99这里只有精品国产| 亚洲宅男天堂| 欧美综合亚洲| 欧美人与性动交a美精品| 日韩97视频!在线| 亚洲精品国产拍免费91在线| 老熟女乱子伦中文字幕一区二区| 男人天堂站| 日韩有码专区| 99视频自拍| 色哟哟精品1精品2| 人妻少妇被猛烈进入中| 91色五月俺来也| 97日韩| a网站免费观看| 伊人久日| 男女激情黄色网址| 啊啊啊啊啊啊啊啊啊啊在线观看| 男女啪啪网站免费视频| 吻戏激情性巴克| 亚洲资源一区| 99综合网| 午夜美女诱惑电源网| 亚洲乱码尤物193YW| 久久久久久久久久久久九| 国产亚洲精品A在线观看下载| 天美av在线观看| 色欧美综合| 天天做天天爱| 亚洲人妻精品一区二区| 五月丁香影院| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产野战露脸在线播放| 久久久久久久久九九久孕交| 日韩特级毛片免费观看全集| 欧美午夜精品久久久久久超碰| 夫妻日逼| 夂久色| 天天插网| 色狠狠综合噜一二三区| 色网站导航大全| 国产白嫩精品久久| 大二网站亚洲| 99re9这里只有精品| 精品人妻视频入口| 国产天天看| 欧美性爱第一区| AV中文字幕剧情1区2区3| 上海一级黄片| 亚洲欧美综合网站| 天天看,天天做| 亚洲女优有码无码高清| 99色热| 青草成人免费视频一COm| 91N欧美| 国产无码久久高清| 99色婷婷中文字幕乱色| 国产最新小视频在线播放下载| 亚州高清色综合| 成人免费福利网站国产| 色欧美色交综合| 亚洲综合五月天| 97在线观看免费视频| 大香蕉色网| 久久久久久久国产视频| AV在线播放网址| 五月天激情小说| 久久精品国产亚洲AV先锋| 草蕉影视亚洲无码| 日韩欧美午夜视频在线| 亚洲天在线| 久操黄色视频| 欧美精品一区二区少妇免费A片| 久久久久斤小| 99只有精品| 亚洲中文字幕精品一区| 国产天美传媒精品| 精品国产肉丝袜在线拍国语| 亚洲se91| 亚洲欧洲色情高清| 黑人精品成人一区二区三区| 超碰97COm中文| 闷骚老熟女15P| 天堂8在线新版官网| 色噜噜狠狠色综无码久久合欧美| 久久视网78| 澳门特级毛片免费观看| 清纯唯美亚洲综合| 亚洲在高跟鞋自慰久久在色线| 日韩精品亚洲专区在线影视| 天天影视亚洲| 中文字幕神马久久| 人妻熟女午夜精品在线| 久久精品国产亚洲妲己影视| 久草成人影片| 密臀在线免费观看| 秋霞一级视频在线观看免费| 成人精品在线免费视频| 午夜精品人妻二区三区| 水澄无码AV| 人人操人人摸人人看人人干| 青草地一本线一区二区三区| 91在线色| av大香蕉| 激情无码日韩| 国产熟妇 码视频户外直播| 狠操91,com| 色综合中文字幕不卡| 亚洲蜜桃V妇女| yw尤物av无码点击进入麻豆| 精品二区三四区五电影| 67194无码不卡| 日韩人妻一区二区精品| 色黄污美女啪啪啪免费网站| 久久国产精品一区二区| 国产偷人妻精品一区二区在线| 亚州宗合另类| 欧美极度丰满熟妇hd| 久久久久久久九九九九九九| 亚洲性天堂| 天天影视网色欲色香| 中文字幕视频2区| 97人人草| 激情综合二| 91亚洲色人| 97久久久| 99re这里只有| 色777999综合| 诱惑人妻欧美一区在线播放| 欧美后进式| 色欲久久综合| 人妻人人做人人澡人人爽欧美一区| 日韩成人私密一级精品av| 午夜九九九九九九| 夜夜国自区| 中国的操老妇女| 精品国产99| 亚洲情色婷婷五月天| 91操人| 国产一区二区啪啪视频| 在线A日本| 亚洲图片日本AⅤ欧美在线| 伊人影院日本| 色噜噜国产精品视频一区二区| 玖玖资源视频一区二区三区| 日韩综合97P| 久久骚少妇| 超碰97玖玖爱| 熟女一区二区| 亚洲欧洲小说图片视频| 熟女精品一区二区三区| 日本岛国黄色网址| 色综合久| 在线啊v一区| 大地资源在线观看中文第二页 | 免费啪啪一级视频| 久久人人爽爽人人爽人人片αV| 国产精品麻豆成人av| A 天堂| 插入逼91| 熟女乱3伦999| 亚洲乱码精品一区二区| V A在线| 午夜小电影在线插入淫高潮| 久久久久久九九九九| 97视频免费播放| 91bbbbbb| 色噜噜国产精品视频一区二区| 岛国天天午夜影院传媒网| 日韩欧美~中文字| 精品二区久久| 超碰久超碰久| 欧美 亚洲精品首页| 欧美综合网A| 91另类| 特污精品女优骚货黄色视频在线免费观看| 男人天堂最新手机版在线青青草| 舔人妻中文免费视频| 一区二区三区男人的天堂| 超碰久草| 少妇淫妇久久久久久久| 69一区二区三区 | 欧美乱色| 天天插天天舔舔天天干| 欧美性暴力猛交XXXX| 日本999精品| 国产精品久久久久久夜夜夜夜| 91精品免费| 日本布卡一区二三区| 91精品老女人| 一级毛片电影免费看| 成人av福利在线观看| 国产自产一区视频在线| 亚洲Av无码成人精品国产| 人人透人人操| 操狠狠| 欧美一二在线| 精品久久九| 亚洲清纯综合| 91色色网站| 欧美日韩亚洲一区二区在线观看| 大香蕉专区| 久久婷婷五月综合| 伊人97色天使| 九九九九九九九九九五码| 亚欧美综合| 亚州91| 久久人人爽爽人人爽人人片αV| 国产家庭乱伦网址| 99这里只有精品| 第四色亚洲色图| 在线观看午夜婷婷久久久久清性观看| 日夜尻逼网| 神马久久久久久| www.av在线视频| 九九色影院| 一区二区首页| 啊啊啊轻点在线观看| 欧美色图色综合| 亚洲一区二区三区播放在线| 五月丁香激情综合| 99天天超碰| 免费国产| 色综合一本| 色青青久久影视| 国产有码一区| 亚洲三级网址久久最新| 蜜桃一区二区三区| 国产农村妇女毛片精品久久| 国产女人视频三四五区| 自怕偷自怕亚洲精品| 激情五月天丁香社区| 视频在线观看一二三区| 插入粉嫩少妇视频| 一起草在线视频| 国产精品无码久久久久2028| 激情五月婷婷| 青青草日本无码| 高清肉丝中文无码| 友优传媒精品在线一区二区| 99久久国产精品免费高潮| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 精品视频在线观看| 丰满岳乱妇一区二区三区| 欧美激情综合| 伊人色综合超碰| 九九九久久久W精品| 中文字幕精品日韩中文字幕| 久久a久久| 91模特在线观看| 亚洲成aⅴ人片不卡无码| 亚洲国产精品成人久久蜜臀| 国内精品99999| 老熟女乱子伦中文字幕一区二区 | 另类亚洲图色| 人妻精品一区二区| 国产浮力影院第1页| 天天看少妇| 综合网亚洲在线| 围产精品一区二区三区视频播放| 狠肏骚人妻| 亚洲中文sv| 丰满少妇乱子伦精品无| 97超碰天天爱天天爱| 97亚洲欧美| 无遮挡h肉动漫在线观看| 日本人妻天堂网站在线播放| 97免费在线视频| 色综合五月天| 夜夜青青无码影院| 欧美五十路熟| 精品一区二区三区最新| 96久久久久久久| 玖玖爱免费观看视频| 97超级欧美| 不卡中文字幕aⅴ在线| 后入美女国产| www欧美91|