亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
色月天AV导航| 亚洲图片日本AⅤ欧美在线| 五月丁香六月激情综合| 欧美色图片| 天美一二三在线观看Av| 伊人99热| 国产精品久久久久无码A√| 91熟女熟妇视频网站| 日本一级特级毛片视频| 超碰97综合在线| 自拍盗摄一区| 色啪网| www熟女乱伦com| 亚洲综合射| 美女尤物福利视频| 日韩三级一区| 男女真人网18| 黄色人人| 五月天综合| 涩涩涩综合| 一二三四区电影| 69精品人人人人| 99色在线观看| 日本精品成人无码| 三级网色| 91三级理论片播放器| 亚州综合网| 少妇久久久免费| 18精品一区| 日韩探花精品在线视频| 欧美日韩国产中文精品字幕自在自线| 亚洲人妻中文在线视频| 欧美日韩国产一区二区小黄片大全| 久热99999| 综合一区中亚洲国产成人综合精品| 人妻另类 专区 欧美 制服| 国产青青综合伊人| 尤物视频偷拍免费| 欧美韩国你懂得在线 | av线电影| 亚洲日韩狠狠撸视频| 日韩天天本| 国产精品女同| 欧洲免费一区二| 综合熟女| 五月丁香影院| 久久精品人体| 黑丝内射一区二区三区| 免费观看的黄色的网站| 成人a大片在线观看| 91久久青青草原精品| 色约约一区=区三区| 男人天堂最新手机版在线青青草| 天天爽天天操啊啊啊| 欧美色图自拍| 欧美成人免费在线观看| 日韩AV无码网站| 三级日本一区二区三区| 欧美日韩性爱电影在线| 福利操逼| 99精品在线| 欧美少妇熟女| 青青草色情网站视频| 你草精品在线视频| 亚洲AV色图一区| 日韩精品影视| 一级性爱视频免费观看| 国产视频一区二区免费| 99热这里只有精品1| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 国产高清吃奶免费视频网站| 伊人五月天激情| 亚洲中文一区二区三区| 啊…啊…操我用力操我| 亚洲欧洲久久天堂| 色九九九九九九| 99re免费| 国产9 9在线 | 亚洲| 日本十八禁免费看污网站| 家庭乱伦国产| 亚洲、日韩、综合、另类| 日韩钢筋无码高清啾啾啾| 美女让帅哥通她小鸡鸡| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 67914在线兔费成人视频| 中文字幕第7页| 日韩精品一二三| 人妻性爱一区二区| 丁香五月激情综合国产| 不卡九肏| 91成人亚洲色图| 人妻少妇久久中文字幕一区二区 麻豆 | 精品久久久久瑟瑟| 9I1性色影院| 国产精品内射婷婷一级二| 亚洲最新av无码成人精品区| av九九| 91天美传媒精品| 九九热精品视频六| 亚洲男人久久综合天堂| 色色五月婷婷| 91久久久老司机| 欧成人精品H无码| 1024人妻熟女一区二区三区| 日本999精品| 肥臀熟女一区二区三区视频| 超碰久热| 四虎在线视频| 伊人97色天使| 精品蜜乳AV免费观看| 99久久9| 97热视频在线观看| 草草影院日本第一页| 色婷婷影院| 久久日本熟妇熟色高清 | 深爱激情五月天| 久久久精品久久| 国模无码人体一区二区三| www.99热| 夜夜做夜夜爽精品视频| 懂色av色欲av蜜臀av| 欧美天天谢综合网| 亚洲色图欧洲| 黄污污污污| 可乐操在线| 国产成人久久久精品免费AV| 天天干夜夜肏| 日日夜夜精品| 色综和网| 中文字幕一区电影在线观看| 亚洲性少妇| 99老司机精品视频在线观看| 偷拍亚洲高清图片| 午夜a成v人电影| 欧洲免费一区二| 精品国产乱码久久久久久网站入口| 色色色色网站| 9I1性色影院| 国产久久成人| 深夜啪啪啪视频免费| 色图综合网| 日夜久久久九九九久| 乱伦熟女论坛| 九九碰九九爱97超碰| 亚州欧美另类| 国产熟女二区| 青青草日本无码| 近亲乱伦一区二区| 免费av在线播放二区| 久久一区二区加油站| 一区二区日韩欧美久久| 欧美五十路熟| 91丝袜美女视频| 日韩天堂av电影在线观看| 午夜啪| 男人天堂网手机版婷婷| 欧美综合骚| 精品国产自在在线99| 夜夜躁狠狠躁日日躁av| 无卡一区=区| 欧美熟妇精品黑人巨大一二三区| WWW黄片COM| 日韩中文字幕视频| 九月伊人中文字幕| 一区二三区四区视频大全套| 超碰免费人人| 国产AV久久野战精品| 黄视频免费| 久久大| 青青草在线视频美女| 大香蕉欧美日韩| 97干色天堂| 中文字幕在线观看第二页| 九九色影院| 91社区拍啪人妻| 欧美性爱第一区| 日韩人妻中文视频| 天天天天操| 欧美色图天堂在线| 啊啊啊啊二区好大| 欧洲大香蕉| 欧美在线视频观看一二三四区高清| 中文啪啪视频| 婷婷三区| 欧美爆操91| 超碰色97| 美女裸体无遮挡永久免费观看网站| 国产精品久久久亚洲第一牛牛_在线观看 | 在线a v| 亚洲精品中文字幕一区在线视频| 日韩探花精品在线视频| 六月婷婷色综合| 激情综合五月| 91在线美女| 国产11页| 91在线/欧洲| 久久专区| 九色精品视频导航1| 欧美中文字幕日韩在线| 国产情侣自拍在线播放| 欧美一级欧美三级在线观看 | 麻豆亚洲AV成人无码久久精品| 啊啊啊免费| 亚洲精品国语在线播放| 国产精品无码论坛| 国产精品九9| 人妻黑丝袜电影| 97资源亚洲| 中日韩久久久| 九九久久99| 噜噜噜噜天天狠狠| 亚洲天堂AV在线播放| 日韩性爱再线视频| 久久伊人网视频一区二区三区| 日韩欧美~中文字| 国产精品午夜福利亚洲综合网| 久草免费福利在线播放| 成人色女网| 色97欧美| 射丝袜大香蕉| 青椒国产97在线熟女| 91黑丝在线播放| 精品乱码在线观看| 国产1769在线| 蜜臀99久久精品久久久久久| 很很热性爱视频| 二三四区精品| 一区二区三区激情在线观看| 亚洲综合在线91| 国内毛片免费h片在线| 中国熟女91| 日本www操操操| 亚洲怡春院| 操逼网站视频漫画国产| 久久久久久少妇| www.av在线观看| 自拍第一页| 深夜激情无码| 久久久一二三四区| 蜜臀久久久久久999| 日本操逼视频免费| 欧美72网页| 国产亚洲精品农村妇女| 黑白配性爱AV成| 黄片不用下载在线观看| 日夜精品| 欲香欲色天天天综合和网| 2023天天操夜夜操| 久久少妇人妻| 亚洲欧美日韩精品久久久一区二区| 亚洲www91| 三级片网站在线播放| 久久久极品| 欧美一二三区四五区| 伊人五月天激情| 成人怡红院| 色哟哟1区2区| 久久发布国产伦子伦精品| 国产不卡免费在线视频| 日本人妻最新在线中| 99re6在线视频精品免费完整版安卓版| 99在线免费观看| 久久社区一区二区三区| 久草在线| 中国和日本人色哪个不下载能放| 亚洲瓯美色图| 天天影视网综合少妇| 中文字幕一区二区韩| 国产老太乱伦一区| 精品97久久| 97频视在线| 97干日韩| 天堂精品在线| www.色婷婷| 精品黑人一区二区| 爱av免费| 国产精品成人蜜臀AV在线| 欧美一区二区三区四区综合| 黄色免费网| 天天综合中文字幕 91| 激情久久日韩精品中文字幕麻豆| 欧美亚洲20p| 国产高潮AA片免费看| 欧美丰满熟妇XXXX性ppX人交| 精品国产乱码久久久久久口爆网站 | 久久久久国产| k频道色撸撸| 330dv亚洲成年视频网| 婷婷色一区| 91成人社区| 97在线欧| 国产精品不卡av免费在线观看| 国产一级高清免费观看| 国产精品极品美女视频| 性爱av网站| 日本色婷婷| 亚洲熟女乱熟乱熟妇综合网二区| 极品一区二区三区免费| 夜夜爽夜夜爽| 亚洲啪啪视频一区二区| 女人的久久久| 99精品人人爽| 激情小说亚洲| 校园春色综合色| 欧美大香蕉97| 黑人在线91| 青娱乐福利99| 人人爱人人操人人性| 国内毛片无码一级毛片| 亚码激情| 97超碰欧美精品| 无码天天操| 久无码| 全国男人天堂网| 黄色片一区二区三区四区五区 | 97超碰伊人| 国产精品人妻一区二区| 伊人久久婷婷| 91天美传媒在线观看| 欧美顶级黄色大片免费| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 色色香蕉| 97精品视频网站| 超碰午夜| JULIA人妻风俗店中出电影| 日本2020一区二区| 秋霞一级视频在线观看免费| 亚洲综合校园春色| 99久久精品无码一区二区毛片免费 | 国产尤物在线三区| 免费看黄视频亚洲网站| 大香蕉综合| 久久亚洲不卡一区二区三区| 九久精品| 九九色色| 做爱A级亚欧| 亚州国产成人精品女人久久| 伊人AAA| 狠狠操狠狠操操| 亚洲a色| 日本3级一区二区免费| 东京热,男人的天堂| 91精品国产高清久久久久久,亚洲成人| 国产成人天堂| 粉嫩国产精品久久粉嫩| 男人天堂最新手机版在线青青草| 国产伦精品一区二区三区在线观| 亚州性色| 大香蕉综合久久| 色伊人91| 亚洲无码精品AV久久久| 少妇三P| 国产农村一一级特黄毛片| 亚洲欧美日产国产91毛片| 青椒国产97在线熟女| 夜夜欧美| 美女主播色欲91抠b在线播放| 午夜亚洲国产理论秋霞| www.av不卡中文字幕| 人妻AV 中文字幕的| 丝袜亚洲综合| 日韩一级二级三级免费看完整版国语版 | 91美女丝袜诱惑视频| 九九九不卡| 精品一区二区亚洲国产| 嗯嗯啊啊操我| 麻豆尤物视频网| 91路www| a在线观看| 欧亚日韩综合精品国产| 狠狠干综合| 欧美传媒| 国产400孕妇孕交群| 久久久96精品| 男人的天堂久久狠| 97超色| 欧美色图 人妻| 色综合色综合网| 欧美麻豆成人同性GⅤ在线| 蜜乳视频网站| 影音先锋每日最新资源在线观看| 91在线视频国产网站| 最新AV在线| 国产精品69久久久久久久| 安徽熟妇视频| 人妻少妇精品久久久| 青青草玖玖爱| 国产一区二区在线看| 色女免费在线观看视频网址| 五月天人妻综合| 99爱久久视频频| 老司机深夜影院18未满| 国产精品人人爽人人做可爱福利| 久草网站免费在线观看| 91精品91久久久中77777| www.av在线观看| 久久精彩视频| 精品白丝一区| 被男人吃奶很爽的毛片| 麻花传媒免费网站在线观看| 婷婷伊人网| 国内精品999| 中文97国产| 亚洲日韩乱码中文无码蜜桃臀网站| 中文字幕少妇色| 蜜桃网熟妇| 亚川综合视频| 人妻在线臀日韩| 成人夜夜| 嗯啊视频免费在线观看| 亚洲有薄码区日本系列中文字幕| 国产91会所女技师在线观看| 9久精品| 999在线电影香蕉| 亚洲情色婷婷五月天| 婷婷15月天青娱乐| 欧美精品三级黄片| 色情综合| 夜夜高潮夜夜爽国产伦精品| 中文字幕91页| 亚洲欧洲色情高清| 强被迫伦姧在线观看无码网站| 入口操逼网站| 搞中出视频在线观看| 精品蜜乳AV免费观看| 欧美综合站| 啊啊在线| 亚洲精品色| 蜜汁欧美| 亚洲精品人妻吞精av | 国产色产精品在线观看| 江都AV在线| 啊啊嗯嗯好爽| 密臀在线免费观看| 亚洲熟女性高潮久久久| 久久久精品九| 久久亚洲影院一区二区| 岛国片在线播放| 99xav| 日韩精品在线观看网站| 无码九九九九| 嗯啊啊啊轻点视频| 在线国产一区二区av| 亚州Av天美传媒| 翔田千里av一区二区三区| 91中文字幕制服丝袜免费视频| 欧美日韩国第一区| 日欧亚洲二三区大片不卡| 精品无码久久久久| 欧洲色色| 亚欧毛片基地国产毛片基地| 亚洲影视高清第一页| 91干熟女| 91丝袜视频在线观看| 99爱久久视频频| 亚洲aV无码成人在线观看| 校园春色美腿丝袜 | 加勒比五月天| 大香蕉婷婷| 日韩激情毛片一级久久久| 91 亚洲情侣偷拍 久久| 日本一区二区三区精品| 日韩性爱再线视频| 一个人免费视频观看在线WWW| 中文在线视频| 成人综合视频久久| 婷婷五月丁香五月| 91精品国产91久久青草| 亚洲一区二区三区婷婷| 熟女久久| 嗯啊不要在线观看嗯啊| 综合熟妇一区二区三区| 精品综合久久久久久五月天| 黄色欧美性爱视频| 久久99精品九九久久久婷婷| 超碰97人妻免费在线| 97综合激情| 欧美黑人日韩少妇色情| 天天躁夜夜躁狠狠躁AV| 91爰爱欧美| 国产人伦精品一区二区三区| 日本一区二区电影网站| 嗯嗯啊啊操死我| 亚洲美女精品| 91jk色拍| 香蕉大久久久| 亚洲色欧| 国产家庭乱伦表演| 久久超碰com| 2020中文字幕在线观看| 亚洲资源站| 日本一级真人黄色性爱视频| 国产大陆天天艹| 三级网色| 大香蕉在线视频15| 白丝少妇一区二区| 性色AV网站| 国产美女在线精品免费看| 日韩欧美操逼xxx| 巨爆乳一区二区爆乳区| www超碰| 东北黄色电影| 超碰97资源大奶| jk白丝没脱就开始啪啪| 色色99| 狠狠干91| 欧美日韩色综合网| 白丝被操91| 国产精品一级毛片不卡视| 综合婷婷| 久婷婷一区| 制服诱惑亚洲一区二区三区在线观看| 男人的天堂三级| 亚洲欧美另类小说| 中国亚洲呦女专区| 九一性生活免费视频| 18精品一二区| 亚洲无码国产精品久久| 婷婷综合在线观看| 亚洲欲色| 色五月婷婷在线| 丝袜熟女2P| 欧美自拍网| 午夜亚洲国产理论秋霞| 亚洲五区熟女| 久久久蜜桃臀无码视频| 亚洲蜜桃V妇女| 伊人久久久日韩一区| 日韩操啪| 97网址97| 唐山老熟妇露脸啪啪叫| 暴力av在线| 蜜桃无码AV一区二区| 嗯嗯啊好大| ,成人免费啪啪视频| 国产夜夜艹| 日韩十八禁| AAA久久| 亚洲高清91| 天天爽天天爽| 中文字幕精品一区二| 曰本精品久久久| 国产二区三区免费视频| 五月色网| 久草视频观看视频在线| 四虎影视永久在线观看精品免费网站| 婷婷五月天久久久| 国模无码人体一区二区三| 看黑丝美女操逼青青网站| 国产精品久久久久久照片| AV丝袜少妇| 欧美性巨大╳╳╳╳╳高跟鞋| 黄色片G G G| 一区在线国产播放| 另类亚洲一区二区三区| 国产第11页| 超踫中文字幕| 亚洲精品美女久久久久久久久| 啊啊啊好想要| 欧美亚洲韩国视频十五区| 九九成人| 婷婷综合五月天| 操逼操网| 国产黄片精品在线| 99热在线只有精品| juliaann丝袜大战黑鬼| 人妻精品4K4K4K4K4| 少妇超碰在线| 欧美激情综合| 8x福利精品第一福利视频导航| 一本色道久久综合精品婷婷| 日欧美色| 人妻精品综合中文字幕在线| 国产乱码精品一区二区三区四川| 午夜成人爽爽爽爽A片李冰冰| 国产精品一区二区麻豆| 亚洲 欧美 另类 综合 偷拍| 亚码激情| 97这里都是精品| 91在线限制级| 欧美熟爽综合| 国产怡红院| 色色婷| 国产99 中文字幕日韩小视频| 欧美性爱日韩性爱| 日韩国产成人自拍视频| 操逼啊啊啊91| 久久亚洲AV成人精品无码| 蜜乳性色无码专日粉嫩骚逼AV| 国产精品黄色三级av| wwwxxx日本爽| 午夜福利免费福利视频| 91在线精品| 2020视频1区2区3区| 久热久一区二区三区| 99久在线精品99re8a| 黑人与人妻| 18精品一二区| 欧美少妇高潮视频| 天天综合网91| 思思热在线cao| 欧美婷婷五月天| 九色97| 91挑色欧美| 五月天九九日国产精品一区二区三区| 91色宗合| 性爱乱伦一区| 日韩 欧美 校园一区| 国产成人主播| 97超碰日韩| 精品高清av中文字幕| 亚洲成人在线播放| 国产欧美成人精品| 麻豆综合一区av| 996热| 日韩人人精品| 凹凸久久人人| 日韩肏逼视频| 日韩综合97P| 亚洲天天自拍| 91爱| 国产女人操逼视频| 91中文精品日韩欧美在线| 亚洲影视高清第一页| 久久久性少妇| 91c色| 成人久久精品| 久久久久久亚洲中文| 色老汉色| 亚洲囯产精品女人久久久| oumeisetupian| 久久啊啊啊| 免費黃色視頻觀看一| 九九超碰综合网| 青青操狠狠撩| 三级三级三级日本99| 伊人丝袜美腿高跟在线观看高清| 五月综合久久| 国产久久成人| 97操B| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 欧美乱欲| 久久亚洲不卡| 国产黄色剧情影片麻豆免费播放| 91麻豆一二三区| 色噜噜综合在线| 欧洲精品欧洲精品| 欧洲综合视频| 18禁超污无遮挡无码免费网| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 亚洲涩涩| 6080yy午夜理论三级一区二区三区无码| 欧美性爱第1 页| 强奸a片网| 家庭乱伦国产| 高清无码国产亚洲| 操逼无码操逼| 国产美女91| 欧美中文狠| 亚洲一区二区久久久久| 91成人无码| 久久爽爽精品| 国产熟女少妇一区| 中文字幕av乱伦| 日韩中文字幕视频| 91精品在线播放| 四虎国产成人精品免费一女五男| 日韩三级一区| 日韩av不卡在线观看| 亚洲欧洲av影音| 伊人网高清| 夜夜福利| 色色色欧美| 最新国产亚洲精品精品国产亚洲综合| 成人自拍三级在线观看| 日韩人妻丝袜中文字幕| 亚洲 日本 不卡| Julia Annxxxxx| 啊啊啊不要啊啊受不了了视频在线 | 欧美Ⅴ性爱| 97情超碰色| 久久久久ab| 97色视频在线| 欧美精品丝袜久久久中文字幕| 大胆91| 99综合网| 五月天激情小说| 五月天激情影院| 午夜精品久久久久久久99蜜桃一| 偷偷人人精品女女久久| 一区二区播放| 男人天堂无码| 后入式在线免费观看60秒| 国产亚洲 中文欧美久久| 日韩在线观看字幕精品| 人人干人人操人人..com| 99re视频在线播放青草| 少妇大屁屁| 天天久久久久久| 另类一区| 黄色一级视| 国产精品三级视频网站| 欧美丰满熟妇XXXX性ppX人交| 1禁看欧美黄片免费看| 日韩一性一交一A片俄罗斯| 人妻一区视频| 午夜福利在线合集| 黄网色一区二区三区四区精品| 欧美日韩性爱操大逼| 久久婷婷六月综合| 美女啊啊啊啊pc| 欧美高清性猛交| 2019亚洲男人天堂| 国产精品69久久久久久久| 中出91视频| 久久超碰97| 黄色工厂这里只有精品| 久久大香蕉97| 超碰97亚洲| 欧美精品二区视频在线| 麻豆天美91| 熟女这里只有精品6| 久久久国产亚洲精品系列| 久久鲁干| 亚洲熟妇乱女区二区三区| 91久久堂| 97精品网| 免费a v| 免费一级a毛片久久久久久鸭绿欲| 久久亚洲欧美中文字幕国语| 国产精品老师| 天天色香欲综合网| 欧美高潮| 91精品无码久久久久久久| 韩日性爱av| 欧美美女自慰一区二区三区| 欧美中字二区| 性一级黄色录像片网站导航| 无码二级三级| 亚洲一卡二卡在线免费| 在线播放中文字幕| 四虎884a| 超碰美国| 成 人片 黄色大片| 日韩欧美麻豆大片| 久久久一二三四区| 激情小说图片亚洲首页| 五月天伊人| 麻豆国产av网| 亚洲97精品| 久久精品国产72国产精品福利| 人妻夜夜爽天天爽麻豆三区网站 | 强奸乱伦大香蕉网| 天美国产精品| 丰满人妻-区二区三区免费看 | 人人艹亚洲| 凹凸久久人人| 精品91摸| 黄页av| 99色天堂| 91在线/欧洲| 情趣丝袜无码操逼视频| 97干在线| 美女爽爽爽刺痛洞洞| 久久男人精品| 91骚熟女| 密桃99999| 亚州色图欧美| 亚洲欧洲自拍图片专区满春格| 伊人成人中文字幕久久网| 天海翼久久| 国产日韩精品人妻久久久久色欲网站 | 三久久久四久久久久| www久久99| 97在线资源| 亚洲av综合色区无码一| 人人污日韩一区二区| 操逼无码操逼| 欧色综合| 无码精品久久久久久亚洲| 美女人妻色网站| wuyechaopeng| 日韩黄色一区二区三区| 色婷五月| 97av,com| 色97综合中文字幕| 天天天堂影视日韩亚洲91| 成人午夜高潮av猛片| 97精品国产97久久久| 91网站18| 啊好大好舒服| 草草草视频在线免费看| 97色伦欧美| 粉嫩av在线| 国产无遮挡| 强奸乱伦AV一天堂网| 欧色综合| 成人午夜高潮av猛片| 天天舔九色婷婷| 欧美日韩色综合网| 1二区9| 国产高清成人mv在线观看| 曰本道人妻久久久在线不卡色视频| 精品久久在线区一区| 亚洲人久久久网| 日韩不卡网操逼中文字幕日韩| 樱花蜜乳av| 青娱乐大香蕉| 2021久久国产综合精品青草| 国产精品69久久久久久久| 日韩另类| 日本一区二区中文字幕久久| 老女人日韩美91| 人妻中文字幕精品无码| 91少妇通奸网站| 免费a在线播放v| 国语精品av| 丁香五月av| 国产精品久久| 97久久久精品| 日韩成人性爱电影在线播放| 国产一区二区三区,在线观看观看| 亚洲国产精品成人久久蜜臀| 精品网站9999| 亚洲av综合色区图片亚洲| 亚洲色图 图片| 可以免费观看的日韩av毛片| 精品人妻1区| 五月天激情影院| 精品国产乱码久久| 91骚妇| 日韩午夜啪啪视频| 被窝影院午夜看片无码| 插入粉嫩少妇视频| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲se电影| 女人妻一区| 九色在线熟女国产黑人| 蜜臀在线视频| 精品少妇人妻一区二区三区| 婷婷色一区| 亚洲最新a在线观看| 国产 丝袜 欧美中文 另类| 黑人在线91| 久日91在线| AV女优男人的天堂| JULIA一区二区三区在线播放| 欧美日韩高潮喷水91| 亚洲免费在线探花| 久久久精品中文字幕麻豆| 日本精品第一视频在'| 蜜桃无码AV一区二区| 午夜小电影在线插入淫高潮| 狠日操| 欧美色图天堂网m| 91精品无码人妻系列| 免费成人自拍视频在线| 91M一社| 人妻超碰青青草98| 清纯唯美激情四射| 亚洲综合网电影91| 国产成人精品日本亚洲语言| 色哟哟 日韩精品| 无套后入双马尾| 久久久性爱视频| 五月婷婷影院| 日本中文字幕在线电影| 69少妇一区二区| 色色毛片| 91天天综合| 蜜桃香蕉久草精品在线| 亚州国产成人精品女人久久| 97久久精品国产| AA丁香综合激情| 激情五月婷婷综合| 午夜精品久久久久久久99蜜桃一| 激情五月综合开心五月| 国产高清亚洲日韩一区| 九九九精品一区二区无码| 91精片| 久久久久久亚洲精品不卡人乳| av网站在线看| 91美女视频在线观看| 日韩91网| 9999久久久久| 91超碰碰在线| 清清草影| 夜夜嗨av午夜成人| 欧美日韩夜夜| 欧美视频一区二区在线| 久久久久久精| 67914在线兔费成人视频| 亚洲精品蜜桃久久久久久久| 日本日日色视频| 99精品网站| 97 九色| 五月丁香六月| 95精品在线| 日本天天人人狠狠在线日美女 | 91熟女丨老女人| 91色宗合| 久久久久久九九九| 999热这里只有精品| 91人妻人人澡人人爽人人精品| 外国免费性情大片| 91热| 精品免费一区| 香港澳门日本三级网站| 久操91视频| 少妇人妻好深太紧了vr91| 国产精品久久久久无码A√| 婷婷激情一区二区三区俺也去| 曰本精品久久久| 91超碰在线播放| 女上位精品在线| 91宗合网| 精品久久久久久无码| 亚洲性爱电影| 一区二区三区精品视频| 欧美极品女人的天堂| 天天看天天综合成人网| 九九成人精品| 国产精品动态一区二区三区四四| 久久9精品网站| 好爽视频在线观看视频 | 夜夜嗨TV| 亚洲欧美人妻| 26uuu国产亚洲综合| A片 AV一级在线播放观看免费| 亚洲五月婷婷| 一二三区视频在线观看| 免费看污网站| 亚洲综合97中文网| 欧美熟女丝袜| 欧美性夜| 翔田千里A片一区二区| www.超碰| 欧美性爱视频免费一区一A| 99热最新网址| 一区二区 电影 亚洲| 超碰免费欧美7| 97视频免费播放| 天堂俺去俺来也www久久婷婷| 日韩色| 91天天日| 99999亚洲另类| 日本性一区| 97亚洲精品| 精品国产精品一区二区| 亚洲最大的黄色电影网站。| 久久精品电影| 18禁止看精品中文字幕| 狠狠色综合网| 国模不卡一本二本三电影| 欧美激情内射| 97人妻免费中文字幕| 9 9精品一区二区三区| 欧美男人亚洲天堂| 欧美精品宗合| 成人美女av| 骚乳在线| 精品夜夜澡人妻无码AV| 色欲Av人妻精品一区二| 色婷婷影院| 亚洲性综合| 七月婷婷综合| 国产亚洲在线观看| 亚洲亚洲亚洲天堂天堂| 精品无码少妇| 色呦呦呦在线观看视频| 激情综合av| 国产精品人妻无码久久久互動交流| 欧美日韩性爱无码| 伊蕉97蜜桃97狠狠综合干| 久久久蜜桃臀无码视频| 亚洲av影院在线观看| 人妻精品一区二区全免费| 黄骗免费网站| 中文字幕jul-617人妻熟女| 91久久久老司机| 100啪啪视频大全| 东京日日夜夜| 婷婷丁香人妻 | 欧美日产国产在线成人第一区| 国产精品九9| 丰满人妻一区二区三区免费 | 91视频精品| 亚洲91av| 97国产|免费| 国产精品成人无码av| 伦理日韩国产久久| 伊香蕉综合久久久久久久噜噜噜 | 老司机午夜精品福利视频一区二区| 日本人妻中文字幕| 久久久久久91香蕉国产| 性综合网| 爆乳免费黄网站| 久久性爱视频免费看| 亚洲成人碰碰| 97超碰欧美中文字幕| 懂色综合久久久| 大干人妻| 日韩人妻一区二区精品| 人澡逼| 26uuu国产免费观看| 蜜桃色院一区久久| 国产精品视频麻豆入口| 歐美性天天| 中文人妻av高清一区| 国产中文福利| 欧美人妻久久精品二区三区| 91/欧美| 日本国产高清色www视频在线| 免费草草草草草视频| 亚洲国产午夜真人一级片中文字幕精品黄网站 | av天天在线观看| 色臀av| 日韩情色AV| 蜜乳性色无码专日粉嫩骚逼AV| 青青操在线亚洲视频观看欧美在线| 美女裸体无遮挡永久免费观看网站 | av网站免费线看| 亚洲欧洲久久天堂| 欧美亚洲日本视频久久久| 欧美日本天堂| 免费a在线播放v| 中文字幕制服诱惑| 欧美性爱一内片一区二区三区| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 久久亚洲AV无码白度| 爱欲AV| 日韩欧美中文日韩欧美色| 欧美青青草视频| 日本在线一二| 天天懆天天日| 操91| 男人兔费天堂| 色翁荡息又大又硬又粗又爽| 9997se| 婷婷五月天AV| 一级人妻性爱视频| 免费男人的天堂| 大香蕉综合在线| 美女天天干| 亚洲自拍青操视频| 欧美性天天影视| 中文?日韩?免费?精品| 亚洲999综合| 大香蕉色十月| 影视综合无码少妇| 抽插一区二区视频| 中文字幕在线观看第二页| 福利在线观看一区二区| 清纯唯美激情| 精品人妻一区春色| 日本熟妇一区二区三区| 精品少妇999| 亚av顶级裸体一区二区三区四区五区| 亚洲精品美女久久久久久久久| 欧美国产精品久久九九| 亚洲成人妻日韩在线| 日日干夜夜干| 久干9操| 成人五月天丁香激情综合| 亚瑟国产精品久久无码| AV中文字幕三四五| 日本蜜桃| 国产精品久久久久久久久AV大片 | 久草电影网| 啊啊啊好湿国产一二| 999岛国大片| 天天草夜夜草高潮片| 97精品在线| 欧美性,色九九| 久久思思热| 亚洲欧美日韩精品久久久一区二区| 极品色综合| 日韩淫色网| 精品999日本| ,国产乱人伦精品一区二区三区| 国产AV毛片| 精品久久久久久无码| 亚洲色狠| 天天做天天爱天天爽AV| 夜夜爽77777| 丁香五月激情啪啪| 伊人黄色视频免费观看| 美国一区二区免费视频| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚洲区限制级| 天天看片青娱乐| 麻豆a'v电影| 精品精品精品| 99热这里是精品| 国产麻豆一级精品视频| 黄片视频,下载| 国产高清自拍视频| 神马久久久久久| 香蕉综合网| 蜜臀网址在线| 色97欧美| 久热精品在线| 日本黄色精品| 九九热午夜欧亚国产视频| 欧美日韩天堂| 欧美在线中M| 精品国产乱码久久久兰草影视| 无码一区二区三区四区五区六区七区八区九区十区视频 | 国产熟女精品区| 看黑人AV不卡| 欧美中文字幕一区 | 人人操人人摸人| 尤物av网站免费在线播放| 在线视频亚洲无码| 婷婷超| 大香蕉一级黄色片久久| 欧美双插| 精品九九九九九| 亚洲无码视频免费在线观看网址!| 人妻少妇精品| 亚洲国产97| 日本操逼视频免费| 激情黄色片在线观看| 小日子操bb在线看| 黄片www视频免费| 你懂的在线观看区国产| 婷婷在线视频在线观看| 搞中出久久| 欧美黄片欧美黄片xxx| 欧美强奸乱能| 高清无码国产亚洲| www.色婷婷| 香蕉一区二区三区在线视频| 偷拍 精品 另类 四区| 亚91亚洲网| 热热色色综合| 在线播放欧洲免费av| 理论久久婷婷网8| 97香蕉网| 丰满人妻一区二区三区四区| 久久九九国产精品| 国产懂色精品国产av| www.99热| 日韩人妻网站| 欧洲一区二区三区四区在线观看| 精久久久| 极品色| 国产最新小视频在线播放下载| 一级啊性爱在线视频| 亚洲国产无码精品首页久久久| 在线观看AV不卡| 高潮综合网| 水滴偷拍| 爱妃国产亚洲视频中文字幕| 一区二区三区四区久久视1| 伊人四虎综合| 97爱综合| 精品久久在线区一区| 屁屁影院一区二区三区国产 | 久久国色天香香蕉|