亚洲有码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
返回資訊列表
91大神电影天堂| 亚洲污污网站| 五月丁香久久| 東南亚性呦成人伦理资源在线视频| 国产精品秘 福利姬在线观看| 人人操人人93| 97在线资源| 色噜噜综合在线| 亚洲国产综合图区中文字幕 | 翔田千里A片一区二区| 国产精品福利资源在线尤物| 国产粉嫩蜜臀av一区二区三区| 色色色99| 久久久久久中文版| 亚洲男人天堂视频| 97色操| 国产日本久久免费精品| www欧美91| 黑人精品久久97| 成人免费毛片| 亚洲欧美性生活| 日韩精品午夜操呦呦不卡影院| 2018天天干在线视频| 综合欧美激情网| 五月天激情婷婷| 亚洲九月丁香| 夜夜爽77777| 曰韩精品九九无码| 欧美玖玖爱免费玖玖| 日韩欧美女优电影| 美女91在线观看| 蜜臀亚洲综合一二三四区| 超碰91在线| 亚洲一二三| 国产超碰AV在线精品| 开心五月深爱五月| 日本 色 导航| 久草男人天堂| 97网址97| 日本3级一区二区免费| 国产在线视频午夜精华在| 色图四区| 欧美九九九| 97er欧美性| 97在线国产精品| 92福利社视频| 欧美最婬乱婬爆婬性视频| 又大又白奶子| 亚洲图片视频小说| 夜夜爽爽夜夜精品视频| 超碰97综合网| 亚州综合在线| 欧美日产国产在线成人第一区| 国产福利视频精品视频| 色综合V| 热99这里有精品综合久久| 日日骚网站| 青青草好吊色| 亚洲av综合伊人久久| 网站A V在线| 国产女s强制榨精视频| 亚洲精品一区二区精品| 青草园大香蕉| 日本综合色图| 久久偷拍人| 国产久久久| 久热一区二区| 啊啊啊好湿国产一二| 中国AAAAAA黄色片| 久久精品人妻一区| 尤物AV免费网站| 久久9久久| 久久久久久九九九九| 亚洲欧美首页| 一区二区三区亚洲| 久99视频| 人人妻人人色| japan日本高清乱xxxx| 播播亚洲小说亚洲| 色999人与兽| 欧美色日本| 欧美色交| 亚洲av无码国产精品字幕| 精品欧美А∨无码黑人大荫蒂| 国产亚洲精品av一区| 四虎影院成年人片| 男人 天堂 日 亚洲| 天天干天天日天天射黄色片| 精品制服美女中文一区二区三区| 日少妇视频| 久久啊啊| 很黄很色的视频在线观看| 欧美一区二区观看在线| 97操97干| 欧美 亚洲 偷拍自拍| 日本一二区免费| 2019亚洲男人天堂| 国产av激情无码久久天堂| 欧美很很操视频| 国产偷仑| 欧美一区二区三区互相| 蜜臀久久99精品久久久老,,| 0755午夜福利视频| 极品尤物女神在线观看| 欧美色综合图片| 97免费在线| 国产99 中文字幕日韩小视频| 影音综合网| 少妇蹲下露出大唇5| 成年人黄色小视频网站| 激情文学欧美| 9色国产精品一区粉嫩| 制服乱伦| 欧美色图校园春色| www.色操逼| 破处bbq| 欧美成人亚洲精品| 五月婷婷六月丁香网址| 少妇六月天| site:sinbotex.com| 欧美在线视频99| 欧美成人精品一区二区男人蜜臀| 亚洲 一区二区 自拍| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 国产无码精品久久久久久| 啊视频在线| 97 国产精品| 1024人妻熟女一区二区三区| 亚洲日本天堂| 日韩在线观看中文字幕视频| 日日骚AV| 综合网欧| 国产h片在线观看视频| 九九久久99| 中文字幕五月婷婷免费| 97er欧美性| 岛国大片在线观看网站入口| 天天综合网~91综合网| 日韩成人免费电影| 国产精品不卡av免费在线观看| 日本超碰在线国产一区| 一级性爱视频免费观看 | 少妇天堂| 嗯嗯,啊啊,国产精品| 久久久久久97| a片亚洲一本通视频| 97精品熟女少妇一区| 四虎在线观看网站| www.91色综合| 色呦呦呦在线观看视频| 加勒比综合88| 久久99草| 欧亚综合一卡二卡中文字幕| 无码久久亚洲高清,| 加勒比综合九九99视频在线播放| 色色操| 国产资源中文字幕在线| 99久在线精品99re8热视频在线| 日本天天操| 天天干夜夜鈤| 桃色人妻在线视频| 五月丁香综合| av午夜影院在线播放| 日曰骚久久精品| 天天日老熟妇| 深夜激情无码| 日韩簧片免费看| 丰满人妻-区二区三区免费看 | 色哟哟 日韩精品| 中国黄色特级精品一区二区三区片| 久久精品国产亚洲AV成人直播| 久久久无码视频| 91国产丝袜美女| 97在线免费看| 久久五月丁香| 91精品大奶人妻| 久久久久97| 蜜臀久久精品久久久久视频| 人妻无码后入| 91原创在线观看| 久久久无码av精| 国产捆绑一区| 日韩有码中文字幕女同性恋| 啊啊啊啊好大好硬啊啊啊啊啊| 欧美综合站| 国产精品久久久无码AV网站| 激情五月天插| 日韩操逼性鲍| 中文字幕熟女人妻丝袜| 国产91丝袜 在线播放| 蜜臀99久久精品| 精吧天堂| 久久有码视频| 亚洲天堂少妇| 99日视频在线免费| 成人精品水蜜桃久久久久久久| 青青草在线成人视频| 巨爆乳肉感一区二区三区竹菊影视| 日韩操逼性鲍| 亚洲AV成人精品网站在AV| 久九色| 99热一区二区三区四区| 中文字幕第二页| 亚洲青色欧美| 91天美传媒在线| 九九玖玖精品| 精品无码一区二区| 色眯眯射| 亚洲精品蜜桃久久久| 久久精品男人的天堂| 伊人精品视频| 国产三级中文字幕粉嫩 | 玖玖色综合| 手机看av网站在线看| 全免费a敌肛交毛片免费| 尤物视频一区| 狠狠干,狠狠操| 伊人久久88国产女| 国产乱码久久| 亚洲色9| 久久综合女优| 欧美偷偷网| 91熟女视频网| 国色综合天| 日韩大香蕉AV影片| 在线观看一级α片刺激高潮视频| 日韩三A大片在线观看| 一级岛国大片| 很很热性爱视频| 熟女突然公开看18禁影片| 粉嫩av在线一区二区| 婷婷久月| 97超碰天天爱天天爱| 西西美女视频网| 97爱碰| 欧中美三级一区二区三区| 91久久婷婷| 婷婷五月天激情四射| 涩综合导航| 国产人妖的免费的视频| 婷婷丁香六月| 97超碰逼| 风韵犹存大大大大香蕉| 日熟女| 久草免费在线一区二区| 蜜臀少妇一区二区| 亚洲色图综合网| 上床啊啊啊| 豆花视频操逼网址 | www.成人无码| 色欲天天婬色婬香WWW夜色| 中文字幕国产| 91neishe| 免费草草草草草视频| 亚洲欧美另类图片| 强奸乱伦av电影| 2020中文字幕| 欧美成人精品一区二区男人蜜臀| 亚洲天堂久久久久久粉红视频| 二男一女成人A片| 亚洲操操操| 黄色不卡视频| 亚洲天天操| 色成人Www精品永久观看| 亚洲第一页色| 国产suv精品一区二六| 成人午夜视频免费播放| 97美日韩视频| 巨乳特殊服务按摩| 欧美日韩岛国大片在线观看| 日韩/97| 激情欧美97| 强奸乱伦亚洲第一页| 九九热免费国产视频婷婷伊人五月 | 欧美日韩国产黄色片| 亚洲天堂中文字幕无码男同| 大香蕉淫人网| 五月婷婷久久综合| 国产深喉| 操逼操操操91| 久草久日| 色嗨嗨在线| 九九拍拍精品视频在线播放| 欧美一区二区三区互相| 91扒丝袜综合在线| 日韩偷拍一区二区三区| 大香蕉手机在线视频| 深爱伊人影院| 久久人妻丝袜一区二区三| 97在线视频观看免费| 国产AV毛片| 粉嫩少妇自慰在线| 日日噜噜夜夜狠狠视频无| 国产黄色动态精品| 日韩人妻播放| 久久视频少妇美女| 国产精品久久久久久无码红治院| 婷婷五月天无码 | 中文字幕第23区| 在线播放免费av福利片| 欧美91网站| 巨爆乳一区二区爆乳区| 国产二区三区粉嫩在线| 欧美性爱日韩性爱| 99精品丰满人妻无码| yellow网站免费观看日韩高清无码| 少妇人妻无码| 亚洲最大的综合性av| 嗯嗯啊啊啊啊轻点视频| 性吧在线视频| 91肉片| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 舔人妻中文免费视频| 日韩女模中文造逼| 大香蕉欧美| 啊啊啊不要啊啊受不了了视频在线| 午夜人人操| 二对二中文字幕。| 三级片网站在线播放| 我要色综合网站| 丁香五月av| 精品免费视频国产一区| 丰满人妻一区| 欧美色偷拍| 欧美不卡在线一区二区| 是还免费视频1727我| 精品人妻美妇91job| 91高潮| 性色中出| 大香蕉久| 精品黑人一区二区| 欧美日韩插逼视频| 久久久无码精品人妻二区| 久久久98网站免费视频| 国产天美欧美| 思思热久久成人| 人妻91少妇| 精品国产99| www.超碰在线| 亚洲自拍天堂| 91狠狠| 美女91色黄18| 日日干日日操五月天伦理视频| 天天做日日做| 国产传媒日韩| 国产午夜福利合集| 激情终合网| 激情久久久| 天天色天天干天天射| 美女久久久久久久久久久| 激情终合网| 伊人久久88国产女| 青青操狠狠撩| 国产免a费看黄片在线| 久9精品| 国内精品久9| 久久久久78| 高清不卡国产| 天天综合色| 金莲网址| 亚洲 自拍偷拍 欧美| 男人亚洲天堂| 综合欧美亚洲| 99热这里都是精品| 新怡红院| 97在线视频观看免费| 97操在线| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 国产精品久久久亚洲一区| 少妇干B| 国产v片在线免费观看| 久久二| 91插B网站| 污电影在线观看| 打av高清| 国产av热热色| 激情视频一二三| 97自拍一区| 久久视网78| 日少妇亚洲版| 久久大线蕉一区| 爱欲AV| 中文字幕在线观看AV| 最新加勒比丝袜在线| 天天摸,夜夜摸| 伊人五月天| 日本在线不卡一二区| 日本高清一区二区在线| 中文字幕精品区先锋资源| 激情小说成人日本无码一| 国产亚洲女v在线观看| 国内毛片无遮挡国产| 欧美18 在线观看| 日本色色色网站免费看不卡| 久96热在线观看视频| 精品国产av一区二区三区四区入口| 欧美乱欲| 亚洲不卡三级手机播放| 亚洲第一狼人丝袜美女另类| 无码高清专| 熟女被操视频网址| 蜜臀久久久久久999| 亚洲成人一二三区| 伊人国产视频| 日韩精品资源| 日韩欧美性爱电影在线观看| 在线一道啪| 玖玖爱免费观看视频| 人人操人人狠狠操| 午夜久久一区二区无码中出| 男人把坤坤插入女人的下体| 亚洲好色人妻| 青青草国产欧美非洲黑人| 午夜舔阴达高潮视频免费看| 国产精品干干干| 日韩一级片在线看| 国产精品视频电影| 天天天操天天天爱| 久久二| 五码视频在线观看| 国产欧美一区激情交| 偷窥自拍亚洲色图| 搡老女人老91妇女熟女| 丝袜综合网| 另类小说综合网| 婷婷久热| 久久久专区| 9丨久久九九九| 欧美亚洲色图另类国产| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 强奸乱伦亚洲第一页| 黄色视频特级毛片| 97天天操天天干| 91操熟女视频| 91精品亚洲内射孕妇| 无码伊人久久大杳蕉中文无码| 日本熟妇一区二区三区| 九九九九热| 在线免费观看日韩一区| 97超碰69| 91 偷| 日本欧美中文字幕| 日本123区操B视频| 欧美色图成人网一区二区| 清纯唯美综合亚洲| 国产高清成人mv在线观看| 欧美操人| 综合九九| 啪一啪免费视频| 国产女上位好爽在线| 99日免费视频中文字幕| 亚洲色图尤物视频| 中文字幕91综合| 国产三级中文字幕粉嫩| 在线看的av| 亚洲天堂女优在线| 日本大香蕉综合网红本杳社区| 性爱Av免费| 艾草av| 久久久久久久9| 欧美成人性爱视频大全| 人妻熟女一区二区| 久久久一区二区三区三州| 婷婷五月天网| 蜜桃av色偷偷av老熟女| 久操热线| 高清视频一区| www99热| 久久久久久无码人妻中文字幕| 久久久一区二区三区三州| 中文字幕av一区二区三区人妻少妇 | 97国产精品久久久久| 麻豆久久一区二区三区| 在线女人91| 欧美色狠| 亚洲AV乱码专区国产噜噜亚洲| 亚洲欧美伦综合| 午夜精品视频777| 国产精品电| 操逼网站视频漫画国产| 国产精品另类一区大香蕉| 欧美性爱1080p| 欧美91网站| 日韩精品人妻一| 久久久久斤小| 亚洲aV性爱| 久肏视频字幕| 99精品在线观看| 超碰97丝袜| 精品人人| 色在线综合| 国产性感骚丝袜在线| 欧美不卡五十路| 英伦大奶子熟妇吊带| juliaann欧美丝袜办公室| 亚洲中文字幕噜噜噜久久久| 女性91网站| 啊啊啊啊啊操我视频| 日日噜噜夜夜狠狠视频无| 欧美激情久| 无码聚合| 久久久999| 日韩精品熟妇| 国产亚洲色婷婷久久99精品91葵花宝典 | 无码操逼视频一下| 无码人妻精品一区二区三区九九| 91成人精品在线播放| 大香蕉视频啪啪啪啪| 盗摄 精品 另类 一区| 人妻无一区二区三区| 99热日| 九九亚洲视频| 国产强奸91| 中日韩久久久免费看| 色穴精品| 日韩乱伦视频| 色在线视频导航| 人妻熟女一区二区| 嗯嗯嗯嗯啊啊啊好紧好大| Sekablack无码一区| 亚洲有薄码区久久在线一区| 精品久久在线区一区| 午夜视频好爽啊| 四虎精品一区二区| 日日噜噜夜夜久久亚洲一区二区 | 四虎精品亚洲| 久久免费看高潮毛片韩国| 亚洲高清无码在线桃色| 日韩三级伦理中文字幕| 99日免费视频中文字幕| 99爱久久视频频| 97香蕉碰碰人妻国产欧美| 不卡av免费在线网址| 丁香7月婷婷| 久久一二三四不卡| 欧亚综合一卡二卡中文字幕| 久久毛卡| 精品成人亚洲午夜电影| 亚洲中文字幕在线视频一区二区| 97欧美日韩精品| 伊人网在线观看| 麻豆久久视频在线地址| 丁香五月色情| 在线观看综合精品亚洲| 亚洲啪啪视频一区二区| 国产无码三级视频在线观看| 91美女视频在线观看| 欧美啪啪啪91| 欧美综合传媒| 欧美在线色| 狠综合网| 中文字幕久久精品一区| 99re9在线| 嗯嗯嗯好爽| 成人午夜无码视频| 无码av永久免费专区网站| 日韩免费av片高清无码| 成人怡红院| 人人妻人人澡人人爽人人精品浪潮| 欧美超碰人妻97| 亚洲97P| 欧美夜色| 一区二区首页| 强奸乱亚洲| 曰韩欧美国产传媒麻豆第一区| 激情四射五月天| 激情专区综合| 日本丝袜美腿人妻九九| 日本一区二区成人在线| 中文字幕交换人妻| 亚洲精品aa久久伊人| 日韩精品中文字幕一| 国产蜜臀在线| 永久免费观看的毛片的网站| 日本免费专区| 久久精品成人| 欧美一级久久久丰满| 91女优在线观看| 亚洲午夜福利视频| 老司机天天操| 先锋色眉乱伦资源| 精品国产久热在线观看| 日韩一级欧美一级在线观看| 超碰人人超在线观看| 亚洲av强奸乱伦| 九九性爱网| 欧美1727免费观看视频| 二区熟妇韩日| 97超碰免费人人性爱| 美女网站黄页| 伊香蕉综合久久久久久久噜噜噜| 日日骚AV| 亚洲免费在线探花| 亚欧韩av| 欧美激情 日韩精品| 青青草啪啪网| 欧美,日韩,中文,另类| 色与欲影视| 日本伦乱九九九综合| 中国一级操逼视频| 99精品网| 久久国99999| 亚洲色图片区| 国产精品麻豆成人av| 国产精品久久久久久久久AV大片 | 色yeye成人免费视频| 丁香五月天堂网| 熟女日韩| 欧美啪啪啪91| 东北女人高潮视频| 黄片国产精品一区二区| 骚逼高潮久久精品| 97精品国产97久久久久久免费| 神马久久网| 97色操| xxxx网站亚洲精品| 炮色五月| 96国产精品| 国产99精品一区二区三区免费| 欧美99| 99re这里| 国产欧美日本亚洲精品| 成功精品影院| 囯产精品强| 98人妻精品一区二区色欲| 91九色在线| 秋霞一区二区三区四区五区六区七区| 猛猛干| 国产欧美亚洲精品a第2页| 伊人久久大香蕉线AV五月天| 清纯唯美亚洲综合| 亚洲精品无码少妇久久| 美女主播色欲91抠b在线播放| 国际精品久久久| 国产亚洲精品av一区| 青青草伊人久久| 91亚洲综合| 日本网色| 99re在线视频这里只有精品| 亚洲天堂综合AV| 亚洲资源一区| 一级黄色性爱裸体视频| 东北女人av| 黄站在线免费观看| 日韩成人精品| 成人av毛片在线观看| 欧美亚州综合图片| 67914亚洲精品| 亚洲国产成人综合碰碰三级经典| 久久精品店| 激情抓乳插进去啪啪啪日韩| 夜夜操美女| 九九九九九九亚洲| 九九碰九九爱97超| 日韩伦理视频| 亚洲欧美人妻| 久久国产精品一级二级三级| 久9无限国产| 精品人妻伦一二三区久久| 久久香蕉国产线看观看亚洲女人 | 国产极品999| 青春草莓视频在线观看网址| 青青国产精品在线| 男人久久天堂| 嗯嗯嗯啊啊啊操的我好爽| 99人妻| 欧美黑人猛交春色影视大全| 综合情欲网| 免費黃色視頻觀看一| 日夜尻逼网| 综合免费无码中文| 干妹子| 久久曰曰| 99久久国产精品免费高潮| 内射日韩大臀美女| 亚洲?V无码专区在线电影| 青草园大香蕉| 亚洲精品视频在线播放| 国产精品操| 亚洲黄日韩无码专区| 免费精品中文字幕| 人妻第一页| 色妺妺在线视频| 色色网91| 玖玖无码超碰| 青青草天天亲夜夜操网| 精品对白久久不卡| 久久人妻办公室视频| 黄片www视频免费| 绑缚麻绳人妻寝取完整版| 婷婷视频在线免费观看| 男人天堂新| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 天美av在线| 男人夜色天堂ss| 91天美免费| 欧美 中文字幕 一区| 熟女这里只有精品6| 婷婷精品久久av影视| 国产伦精品免编号公布| 欧日a| 精品综合久久久久久五月天| 久日综合网| 97超碰美国| 黄在线| 91大神精品长腿在线观看网站| 91性| 欧美丝袜激情| 中国探花熟女| 久草精品国产99| 欧美精品二区视频在线| 啪啪啪综合网| 欧美肥臀在线| 色九月婷婷| 色黄污美女啪啪啪免费网站| 欧美色图电影| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚熟hd视频在线| 香蕉免费一区二区三区不读 | 久久精品72| 天天看人人操屄犊摸阴| 国产和美国毛片| 俞拍久久国应视频| 国产丝袜美女在线一区| 日韩精品视频在线观看一卡二卡| 日本人体九九九九九九| 97 国产一区| 亚洲资源吧| 手机午夜电影神马久久| 深夜激情无码| 日韩一999精品| 欧美日韩另类字幕中文| 婷婷爽人人婷婷爽视频| 另类TS人妖一区二区三区| 欧美日韩国内不卡| 最新亚洲风情电影| 少妇熟女视频一区二区三区| 国产精品不卡高清在线观看| 国产熟女乱论| 91在线限制级| 色婷婷日韩精品一区二区三区| 三久久久四久久久久| 久久高清欧美国产| 九九久久久久久爱| 久九九九九九九九热| 免费成人在线观看91| 综合久| 久久大线蕉一区| 国产综合久久久麻桃个| 思思热久久成人| av优播| 中文字幕av一区二区三区人妻少妇 | 人妻喷水| 久久人人爽爽人人爽人人片αV| 色色色综合网| 一个人在线看的黄色电影网站| 91处女在线视频| 久久这里只精品免费福利| 成人在线视频网| 97在线观看免费视频l| 欧美日韩资源| 国产一区二区欧美日本| 综合天天网| 久久久久久97| 骚逼高潮久久精品| 91精品91久久久久77777| 強姦亂倫a| 美腿色图| 亚洲在线a| 四虎免费视频| 国产午夜福利专区综合| www鬼畜国产男人的天堂| 精品无码一区二区三区| 日本Xx性爱| 久久一二三四五六七八九区区| 国产精品96| 久久久爆乳翘臀一线天伦理视频| 久久后入制服| 亚洲少妇中文字幕网址| 久久少妇人妻| 日本视频在线观看污污污| aaa淫乱视频| 特级特黄一级毛片免费| 一区麻豆 高清中文字幕| TS人妖另类精品视频系列| h在线看免费版在线看| 亚洲人精品午夜不卡| 亚洲成人av电影在线| 久久精品夜色国产亚洲AV| 涩涩涩综合| 久久久中文版| 亚州免费啪啪视频| 亚洲综合性网址| 国产亚洲日韩在线三区黑人| 亚洲吊色| 日韩在线观看字幕精品| 国产精品动态一区二区三区四四| 黄色av片三级三级三级免费看| 青草视频人妻在线观看| 欧美黄色大片在线观看 | 日本不卡一区二区三区| 国产亚洲中文不卡二区| 国产av色网| 超碰成人国产| 久久久久久久唑| 日韩欧美亚洲国产日韩| 在线观看亚洲成人精品| 精品97精品97| 亚洲黄色a级片| 国产少妇内射| 青青草视频久久| 日韩av性爱在线播放| 天天日天天屌天天操| 97人人操人人摸人人爱| 黑人与人妻| 99999无码| 久久性爱免费送| 熟女精品日韩一区二区三区| 日韩pv中文| 国产日韩欧美操逼视频| 欧美精品久久| 国产玖玖| 国产家庭乱伦表演| 99热国产| 亚洲老熟妇xxx| 国产视频一区二区三区在线免费观看| 综合视频91| 黄色AV影视| 你懂的在线观看区国产| 亚洲男人天堂2| 私色综合网| 久久精品中文字幕观看| 久肏视频字幕| 日日夜夜国产综合| 午夜国产成人福利视频| 亚洲欧美日韩免费观看| 成熟熟女国产精品一区二区| 色噜噜狠狠色综合日日| 成全动漫视频观看免费下载| 超碰97人人乐| 色呦呦、国产精品| 欧美一级黄片视频在线| 欧美色干| 丰满翘臀美女影院视频| 欧美久久伊人| 精品免费视频国产一区| 亚洲风情综合网| 抽查国产福利主播| 男人的天堂不卡一区二区 | 欧美传媒一区| 男人的天堂在线有码| 18禁免费视频| 色波多| 亚洲少妇自拍中文字幕懂色| 你草精品在线视频| 99热综合| 91人妻做a观看视频| 鸥美中出| 日产成人久久| 天天综合网在线| 99热精品在线观看| 日韩人妻一二三区视频 | 日日夜夜青青草母狗| 韩国三级理论在线| 亚洲精品乱码线路中文字幕 | www久| 草草影院最新网址| 欧美成年人性爱视频免费观看| av2014 日韩在线中文字幕| 伦理弟一页| 国产人伦精品一区二区三区| 中文字幕高清20页视频 | 国产操逼网站亚洲一级黄色| 好爽视频在线观看| 五十路熟女在线不卡观看一区二区| 麻豆一区在线| 亚洲男人的天堂一区二区| 欧美1727免费观看视频| 婬女免费一二三区A片| 殴美在线AⅤ| 高潮毛片无遮挡高清免费| 欧美黄色手机在线观看| 欧美天天综合在线| 日日摸日日碰夜夜爽视频| 久久精品无码不卡| 男人天堂最新手机版在线青青草| 操死我了嗯嗯嗯| 一区| 日韩午夜国产| 日本最新免费韩国1区2区视频播放| 啊啊啊com| 蜜色网色哟哟| 日韩人妻少妇中文字幕| 欧美色图天堂在线| 长长久久88视频| 看日韩美女二区三区免费操逼视频 | 伊人麻豆传媒| AV中文字幕三四五| 欧美激情在线观看视频| 精品人妻15区| 人人操人人肉久久精品| 极品肉射| 精品久久久av无码免费| 91中文字幕| 国产又粗又大硬免费色网视频| 日本一区二区不卡| 高清无码久操视频| 久久精品国产亚洲妲己影视| 亚洲国产欧美一区二区潘金莲| 91搞逼视频| 日韩精品中文字幕一| 日本高清_区二区三区| 手机看av网站在线看| 免费观看性欧美一级| 中文字幕日韩人妻视频一区二区三区 | 中出91视频| 久久香蕉国产线看观看亚洲女人 | 午夜九九九九九九| 亚洲情欲| 被男人添B超爽视频| 可以免费观看的日韩av毛片| 麻豆这里只有精品| 五月天综合网| 欧美精品偷拍| 中文字幕av丝袜| 亚洲色交| 香蕉黄色一级视频| 日本123区操B视频| 国产又爽又黄| 久久亚洲不卡一区二区三区| 97视频在线视频| 天天天干977| 久久欲| 在线v中文字幕一区二区三区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产精品久久久久久片| www久久久| 天天享受天天看| 热久久无毒不卡| 免费在线看黄片av| 二男一女成人A片| 欧洲色| 亚洲精品97在线| 91亚.色| 激情黄色片在线观看| 在线强奷到舒服的无码视频| www.狠狠干.coom | 麻豆九九九| 9ⅰ久久久天天| 精品人妻中文字幕高清| 亚洲 欧美 手机在线观看| 91黑丝少妇| 亚洲AV不卡在线观看| 久草尤物| 丁香五月大香蕉| 天堂亚洲精品久久老牛| 国产精品剧情| 五月综合婷婷久久网站| 蜜桃精品一区二区三区ww| 自拍啪啪视频| 人人操人人操人人操人人操人人操人人人11.CM| 亚洲九区| 99在线啪| 无码久久亚洲高清,| 99色视频| 九9热伊人| 久草尤物| 五月天成人综合| 职场同事知名国产国产精品久久欧美日韩| 精品亚洲| 久99热| 97伦乱| 久久受www免费人成| 亚洲情色第一页| 玖玖资源视频一区二区三区| 久久精品日韩| 花野真衣| 美女91AV| www.色五月| 日韩毛片9| 综合欧美激情网| 97超碰逼| 欧美日韩大香蕉| 1024久久高清视频| 精品国产乱子伦一区二区三区,精品一| 欧亚性爱视频免费看| 99九九久久| 清纯唯美亚洲另类| 国产视频一区二区免费| 大香蕉综合在线| 人妻一区二区三区视频| 顶级少妇BT天堂| 91人妻在线视频| 久久久久13| 亚洲综合嫩| 天天做天天爱| 欧美 亚洲| 亚洲激情在线| 蜜臀久久99精品久久久久久成人小说 | 少妇精品| 超碰久热| 校园激情狠狠四射| www.夜夜操| 粉嫩av一区二区三区天美传媒 | 国产精品呦一区二区三区| 蘋果手機免費看成人Av| 欧美亚洲色图另类国产| 九九九九九九九九九九九九九九九女| 国产美女口爆吞精视频| 伊人青青草久久| 婷婷涩嫩草鲁丝久久午夜精品| 日本熟妇熟色97一本在线观看| 中文字幕三四区| 天天肏美女| 国产无马在线| 偷拍超碰| 91人妻做a观看视频| 超碰9 7女人| 在线国产探花| 国产久久久久久| 丰满人妻一区二区三区在线| 韩国三级一线观看久| 日本美女性生活久久久久久久| 九九综合九九综合| 99抽插| AA特级绝黄| 少妇天堂| 99啪啪视频| 天天日天天干少妇日| 长长久久免费视频| 久96热在线观看视频| 天天舔九色婷婷| 欧美日韩国产三级黄色| 久久激情视频| 国产伦精品免编号公布| 青青免费在线视频一区| 天天天做天天天爱天天天爽| 亚洲操操操| 久久久人妻| 歐美性天天| 日亚韩精品视频二区三| 亚洲综合999| 欧美色图 人妻| 五月天婷婷综合网| 欧美A片中文字幕| 国内成人圈中文字幕无码视频 | 久久AV无码AV| 99热18这里只有精品| 天天日天天操心| 色y情视频免费看| 91四海无码日韩欧美| 98一区二区精品| 乱伦1色页| 91成人无码| 成人一区二区三区四区| 69人妻精品一区二区绯色| 国产无码精品高清| 日本高清视频在线观看黄已三辽| 最新一二三区视频| 亚洲精品亚洲人成在线麻豆| 91狠狠综| 亚洲极品| 色婷婷成人综合| 性一交一乱一交A片久久四色| 成人性交免费视屏| 日本欧美色| 九色97| 日本五十路熟女一区二区| 免费人成毛片乱码| 亚洲中文字幕av | 丰满精品人妻少妇久久字幕| 99热啪啪| 亚洲最新a在线观看| 特色a在线上| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 国产伦精品一区二区三区在线观| 91成人高清在线观看| 超碰97伊人| 啊啊啊轻点在线观看| 久久久久久久78| 免费视频在线观看啊啊啊啊啊| 一区二区三区视频在线观看免费| 精品无码一区二区三区| 精品天堂| 日韩99神马视频片| 夜夜夜久久| 99国产人成精品| www网站黄| 欧美一级A片不卡视频。| 天天干天天操天天操夜夜操天天操| 人妻色情天天操| 97频视在线| 91天天综合网,天天综合网| 日本在线一二 | 草草网站影院白丝内射| 99久久精品无码一区二区毛片免费| 久久精品电影在线| 天干天干天干天天做| 91美女视频电影| 最新精品久久蜜桃| 国产污视频麻豆传媒一区二区 | 免费看A片毛毛片在线播| 国产美女裸体秘 永久无遮挡| 玖草在线视频| 三久久久四久久久久| 久久久亚洲精品中文字幕人妻| 亚欧美综合| 久久精品91| 亚洲 欧美 综合 91| 欧美综合 站| 亚洲凸凹超碰成人| 久久日本熟女精品一区| 亚洲www91| 91欧美丨精品丨入口| 国产嫩草精品A88AV在线| 97硬碰| 91原创在线观看| 黄色二级片网站| 久久99手机免费视频| 少妇同性| 北条麻妃性愛视频| 久草精品一区| 日韩大香蕉精品在线视频| 欧美熟女丝袜| 国产AV线| 成人区人妻精品一| 亚洲精品人体| 91东北熟女| 水多多映视AV| 日婷婷| 亚洲最新a在线观看| 色综合久久88色综合久久天天| 不卡啪啪视频| 男人的天堂2010| 亚洲天堂性爱| 欧美A√综合网 | 欧美后入式| 亚州一区二区| 中文字幕在线免费观看 | 在线综合网| ji熟女.com| 国产小黄片在线免费观看| 大香蕉人妻| 一区二区三区四区姦女| 亚洲色香| 成人精品久久| 91欧洲国产成人久久精品网站| 大二网站亚洲| www成人啪啪18秘 免费| 婷婷五月天激情网| 嗯嗯啊啊操死我| 91精品亚洲内射孕妇| 蜜臀一二三区| 超碰2017| 亚洲欧洲中文日韩女优乱码| 国产精品一二三在线看| 能看的AV| 亚洲综合影片| 91天堂丝袜美腿| a男人的天堂久久一级A毛片|