国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲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
返回資訊列表
91丝袜人妻| 国产精品高清2021在线| 五月综合色| 亚洲国产精品成人综合| 高清无码91| 天天欧美欧美亚洲网| 91P0RNY大屁股人妻| 大香蕉日韩欧美| 五月丁香久久| 日本黄色大片一级视频免费麻豆| 一二三区视频在线观看| 色97干| 操b网站亚洲无码| 永久免费发布性爱网| 91欧美经典| 97在线资源| 中文字幕在在线观看网站| 免费毛片在线播放| 一区二区三区欧美激情| 色就色综合| 亚洲日韩精品一区二区| 国产熟码AV| 欧美性爱一内片一区二区三区| 在线观看黄色电话| 午夜乱轮操逼视频免费看| 欧美性色网| 亚洲爱爱视频一区二区| 色色99| 日日噜噜夜夜狠狠视频无| 天堂性色| 中文 人妻 制服| 99福利社| 哑洲在线| 91亚洲影视| 久久精品人妻一区二区三区| 中文字幕成人乱码熟女精品国50| 伊人国产AV| 欧美成人国产精品| 少妇人妻无码| 精品人妻一区春色| 大香蕉伊然在亚洲91| 超碰99热中文字幕| 91伊人大香蕉| 69久久久久久久久久久久久| 97在线观视频免费观看| 伦理弟一页| 天美欧美国产| 蜜臀色乳| 日本国产二线女色| 偷拍精品一区二区三区| 中文?日韩?免费?精品| 91色综合| 国产v片在线免费观看| 日韩兔费看黄片| 中文字幕99999| 精品久久久av无码免费| 美国日韩黄片| 国产家庭乱伦性爱视频| 青椒国产97在线熟女| 国产福利电影| 色人久久| 91色五月俺来也| 中文字幕在在线观看网站| 亚洲美女30b| 91欧美长吊| 麻豆一区二区三区精品| 亚洲人码13| 亚洲欧美综合网| 久久9精品| 久久男人的天堂| 婷婷久月| 日本在线视频导航| 国产自产91区13区| 99热销国产这里有精品| 襙一襙| 国产亚洲精品av一区| 美女操逼福利视频| 欧美激情超碰777| 91色综合激情| 亚洲交换| 国产一区二区成人av在线播放| 日韩在线性爱免费视频| 婷婷色网| 天天夜夜久久| 亚州欧美在线| 久久久久久久九九九九九九| 国产精品无码在线| 操人91| 六九九九| 性色avv| 久久久蜜桃一区二区三区| 国产精品一区二区 尿失禁| 天天爽天天| 97精品综合久久网| 天天综合网~91| av一区二区三区四区| 亚洲蜜桃V妇女| 九九无码久久精品视频| 久久久久亚洲一区女同性恋中文字幕| 欧美色干| 1024人妻熟女一区二区三区| 日韩 欧美 国产 麻豆| 亚洲高清欧美总合| 黄片aaaaa一区| 首页亚洲国产高跟丝袜诱惑视频| 久久久久成人蜜桃精品| 97伦乱| 伊人影院日本| 天天干天天拍| 人人操人人肉久久精品| 婷婷伊人綜合中文字幕| 懂色av中文字幕一区二区三区天美| 久久久久久精| 人妻天天爽夜夜爽爽| 深夜激情| av一区二区三区 中文| 超碰 97国产熟女| 麻豆AV一区二区天美传媒| A 在线网址| 99999无码| 夜夜嗨一区| 亚洲乱色熟女一区| 91麻豆天美传媒HD| 中文字幕第9页萱萱影音先锋| 国产高清成人传媒影视| 老色鬼成人精品视频下载大在线观看| 被男人添B超爽视频| 婷婷五月天成人| julia ann久久| 日韩乱伦AⅤ| 91最新综合| 亚洲国产精品V?在线播放| 99操| 国产精品天堂| 成人夜夜爽| 久久区| 婷婷丁香五月综合| 人妻久久一区二区三区| 嗯啊不要在线| 欧美色网| 成人五月天色网| 欧美爱三级日韩久久| 少妇500双飞99| 亚洲精品国产精品成人| 91 国产丝袜在线放观看| 无码一区免费在线不卡| 啪啪综合网| 射 色综合| 欧美日韩精品久久久久久久久东北老熟妇| 久久精品三级影视| 抽插亚洲无码| 久久婷婷五月天| 男人的天堂VA| 日本在线一二| 精品成人无码| asc国产精品| 欧美成熟性爱精品| 人妻天堂综合网| 啊啊啊好想要| AV在线播放网址| 五月丁香综合啪啪| 干我久操| 亚洲天堂一二| 亚洲成人一二三区| 久久久久久电影| 视频在线中文字幕| 九九热最新| 久久91| 狠狠狠一区二区三区| 丰满美女一级毛片在线播放| 国产精品无码av在线| 婷婷激情五月综合| 久久精品一区| 99视频内射三四| 夜草网站| 综合少妇网| 精品国产一区二区三区久久久蜜臀 | 免费99精品国产自在在线| 人人操AV| 国产区性爱在线视频秋霞豆| 人妻精品视频一区二区三区 | 四虎影库国产精品免费| 日本福利二区视频| 人人操人人插人www| 97综合国产| 日韩av三四区| 日韩人妻大香蕉| 欧美探花网| 欧美色图电影| 日本二三四区| 久久久久久无码人妻中文字幕| 99视频在线| 久久久97| 午夜福利免费福利视频| 欧美成年人性爱视频免费观看| 亚洲国产丝袜在线观看| 日韩精品人妻一| 欧美天天弄| 91亚洲丝袜熟女| 四虎视频在线观看| 国产精品网站免费| 国产视频三区四区| 日夜啪电影| 制服乱伦| 久久99视频| 久草这里只有精品| 人人操超碰在线| 日日日大屁股骚女人精品| 伊人大香蕉在线| 一块操欧美| 亚欧视频在线| 国产女人高潮嗷嗷嗷叫小说| 亚洲国产91精品一区二区久久| 免费观看一区| 久久久久九九九| 国产精品欧美在线观看| 欧美色就是色| 国产狂喷潮在线精品| 成人性交免费视频| 亚洲超碰97| 国产精品香蕉| 欧美成人性爱视频在线播放| 2021国产成人精品久久| 中国AAAAAA黄色片| 欧美激情 一区| 亚洲欧美激情小说| 日韩精品人妻中文字幕久久久| 欧美有码亚洲中文字幕一区二区三区四区| 久久久草成人网站久久久草成人久久久草久久久 | 色欧洲| 精品熟女呻吟久久91| 欧美色图另类图片| 九七超碰人人乐| 亚洲高清欧美总合| 日韩免费福利在线观看| 国产无码精品成人| 乱伦a片视频| 亚洲欧美在线观看2021 | 亚洲日本韩国在线| 久久黄色网址| 亚洲射综合网| 久久成人午夜狠狠| 超碰色97| 国产亚洲福利第一页丝袜| 男女性无套 免费九一| 97色亚洲| 中文字幕日本久久| 荡小穴在线观看| 久久精品72| 人人妻人人色一区二区三区| 亚洲97精品| 最新av网站在线观看| 97超碰超碰| 欧美爱爱97| 国产操伦| 日韩有码一区三区| 在线97在线| 在线情色电影 91大 | 成人AV在线电影| 中文字幕精品丝袜| 尤物视频偷拍免费| 五码视频在线观看| 99精品在线| 欧美高潮在线| 日韩欧视频| 日韩啪啪视频| 操我无码| 天天爽夜夜欢视| 国产精品另类一区大香蕉| 噜噜瑟| 91粉芽高清在线一区二区| 在线视频一区二区传媒| 人人妻人人爽| 欧美1区二区三区公司 | 色欲色香天天天综合网www-亚洲综合国| 亚洲A色| 国产精品嫩草久久久久| 美女久久久久久久久久久| 84YTCOM性无码| 人人妻人人狠人人| 91爽啪| 免费99精品国产自在在线| 无遮挡男女激烈动态图| 日本三级大片| 国产精品白丝AV| 操逼啊啊啊91| 人人超碰在线观看黄| 色香综合天天影视综合| 日韩精品一区二区日韩| 日本女厕偷拍| 久久久96精品| 日韩无码黄色片| 嗯嗯嗯啊啊啊操的我好爽| 黑人性欧美| 久久AV无码网址| 午夜福利在线合集| 91人妻精华帖| 亚洲精品视频在线| 国产精品农村妇女精品| av凤凰久久久| 精产品久久| 国产真实野战在线视频| 欧美91久久久久| 日韩亚洲中文有码视频| 人妻熟女一区二区三区在线| 最新国内自拍av免费| 好淫网一二三视区| 热热色综合网| 开心五月深爱五月| 亚州性9| 天天日夜夜| 精品人妻一区二区三区四区| 久久久久久国产精品| 欧美日韩小说| 97精品国产97久久久久久| 亚洲午夜精品久久久中文影院| 精品人妻美妇91job| 一级免费精品| 成人精品在线| 97啪啪| 免费AV播放| 色九九九九九九| 日韩精品中文字幕一| 欧美日韩免费专区在线| 中文字幕中文字幕一区二区| 国产乱不卡| 99热婷婷| 日本操逼视频在线| 老女人老91妇女老热女| 婷婷色色五月天| 人妻少妇无码 | WWW黄片COM| 台湾佬大香蕉| 麻豆影音天美视频| 精品无码一区二区三区| 亚洲丝袜色图| 一类av片在线看| 综合大香蕉美。| 去干网最新版| 另类小说综合网| 亚洲综合色在线| 色色婷婷五月| 操逼天美3区| www.久久超碰| 东北老女人的激情视频| 夜夜骑操视频| 91超碰人人| 最新中文字幕精品在线| 中国AAAAAA黄色片| 欧日韩一二三f区| 国产亚卅97| 亚洲欧美另类小说| 亚洲骚男同com| 99久久久久| 97超碰磁| 久久久久白虎| 欧美日韩小说| 操淫穴亚洲五月丁香| 黄色av一区二区在线| 中英熟女操女| 后入式999| 九九久久综合| 国产92麻豆天美精品色欲5| 91天堂网| 亚洲精品黑丝| 青青草成人视频在线观看二区| 黄网在线播放| 深夜国产一区二区三区在线看| 91制服丝袜中文字幕| 97超碰资源网| 人妻大相焦在线| 大香交伊人网| 性爱av网站| 日韩操逼HD| 亚洲色图欧美一区二区不卡| 99re视频这里只有精品| 综合亚洲网| 美女爽爽爽刺痛洞洞| 亚洲色图a| 久久精品欧美一区蜜桃| 97干在线| www.超碰在线| 久久精品三级影视| 懂色av色欲av蜜臀av| 亚洲色天| 久久黄片国产一区二区| 久热一区二区| 亚洲色图欧美| 亚洲国产97| 日韩啪啪视频| 日韩成人高清一区二区| 亚洲无线观看久久| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 98人妻精品一区二区色欲| 九七超碰| 九九九九九精品| 亚洲丝袜在线观看| 欧美日韩少妇色情| 婷婷四五区| 天美国产精品| 99青青草国产视频| 日韩精品9999| 欧美亚洲涩涩| 国产精品粉嫩福利在线| 色噜噜人妻av中文字幕| 亚洲性刺激| 亚洲欧洲日韩中文字幕一区| 美女91网| 精品人妻一区二区三区日产乱码| 久久国产在线一区二区| 五月丁香啪| 色色色色综合网| 亚洲综合中文字幕有码| 这里只有精品视频在线| 国产少妇与亚洲av| 色情亚洲日本成人| 一级免费精品| 免费操逼91| 国产又黄又爽又刺激久久久久久| 亚洲欧美综合区自拍另类| 免费精品中文字幕| 亚洲欧美精品福利在线| 插入综合网| 欧美在线色图| 久久亚洲天天做| 97丝袜亚洲在线播放| 日韩人人精品| 香港澳门日本三级网站| 美國A片| 婷婷五月色| 乱色视频中文字幕| 激情综合五月婷婷| 91色女| 加勒比AV网| 久久伊人网视频一区二区三区| 色月天AV导航| 人人操人人精品影片| 日韩欧美~中文字| 一区二区三| AV女优男人的天堂| 一个色导综合| 超碰免费在线| 日产123区精品免费观看| 欧美天堂在线| 久久av一级av少妇av高潮| 最新国产精品久久精品| 亚洲 欧美 91| 大香蕉一人| 熟妇xxxxx性春色| 成人欧美一区二区三区黑人一| 色婷婷综合久久久久中文一区二区| 青青草玖玖爱| 精品无码久久久久久久久果冻糖心| 欧美中文字幕日韩在线| 色婷婷五月综合激情中文字幕| 婷婷三区| 精品国产乱码久久久影院| 五码视频在线观看| 91 在线亚洲| 亚洲极品| 92人人操人人| 97国产精品久久久久| 久久久国产av美女私房| 厕所偷拍在线| 99999精品| 五月婷婷爱六月丁香色| 91熟女综合| 综合另类| 91九久| 天天综合中文字幕 91| 美女写真| 蜜桃AV天堂| 少妇高潮对白在线观看| 九区国产| 你想操日本小逼吗| 中文字幕综合人妻| 天天操天天干一区二区| 老熟妇综合| 午夜福利无毒不卡| 97视频620| 啊啊啊啊好多水| 九九色逼| 久久宗合亚洲| 国产乱码精品一区二区三区四川| 日韩精品三级片长长久久| 精品无码欧美三级| 亚洲综合图文| 国产精品视频91久久| 国产精品久久久久久夜夜夜| 91国产操逼视频| 国产老熟女| 黄色免费一级在线毛片| 欧美丝袜激情| 久久社区一区二区三区| 操香逼| gogogo免费高清看中国国语| 使劲用力艹少妇视频一区二区| 亚瑟国产精品久久无码| 丁香五月天久久精品视频一区二区三区| 国产黄色剧情影片麻豆免费播放| 最新av在线| 色综合av男人天堂| 成人国产二区三区在线,男女精品。| 色播五月丁香| 日韩性爱免费观看视频| 自拍亚洲综合| 九九热精品在线| 精品国产自在在线99| 国产精品99999| 久草精品国产蜜臀| 国产一级特黄大片处女| 国产综合久| 国产精品白虎| 亚洲欧美日韩中文播放| 亚洲欧美大香蕉| 乱伦色图网址是多少| 99色在线| 超碰在线974| 国产特级毛片AAAAAA高潮流水| 青青草国产一区二区三区| 中文字幕永久在线| 看免费的黄片| 日韩欧美中文字幕搭讪巨乳美人妻视频| 一区二区三区在线资源| 91爱| 欧美色自拍| 日本91白丝| 亚洲 一区二区 自拍| 91老熟女| 伊人欧美大香蕉视频| 伊人久久国产免费观看视频| 蜜臀AV网站| 18禁看网站一区| 97资源站国产精品| 国产精品不卡一区二区三区| 亚洲另类综合欧美| 天天干天天操天天干天天操| 欧美大波激情xxxx| 欧美天天搞| 热热热热日日漂亮永久永久国产日| 久久香蕉网| 草草影院最新网址| 啪啪综合网| 亚洲熟女乱色一区二区三区久久久 | 偷看洗澡一二三区美女| 色欧美亚洲| 亚洲系列欧美| 日韩国产品视频中文字| 国产一区在线观看无码AV| 极品少妇久久久久| 欧美在线啊啊啊| 色五月激情网| 熟女六十路| 欧美老妇曰批的视频| 国产精品视频91久久| 久久久成人免费av电影| 国产久久一区二区| 色爱综合网| 一级黄色性爱A级片| 高清无码91| 五月天黄色av| 色爱综合网| 777AV电影| 加勒比综合网| 精品无码少妇| 99热18这里只有精品| 欧美老妇女内射网址| 亚洲精品色| 日韩色| 欧美区亚洲区偷拍区| 天天色欧美| 欧洲一区二区三区四区在线观看| 日韩欧美天天爽爽爽天天爽爽| 一区,二区,三区网站| www四虎| 91爱综合| 欧美有码激情视频一区二区三区| 综合久| 久热九九| 91亚洲人| 91天天看| 亚洲欧洲日本精品中文a∨| 26uuu成人影片| 中国AV美女| 国产精品亚洲无码| 欧美偷拍区| 啪啪视频亚洲第一| 亚洲乱码精品一区二区| yaouchengrenav| 亚洲欧美日韩偷拍色图| 少妇精品久久| 亚洲欧美日韩免费观看| 久久亚州精品成人Av无| 五十路六十路七十路熟婆| 9色国产精品一区粉嫩| 日本熟女不卡视频| 17c在线成人免费A片观看| 色色毛片| 亚洲情欲| 久久婷婷电影网| 久久性生大片免费观看性| 青青草久草| 9精品久久久久| 综合亚洲网| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国产AV激情无码久久无码| 99热这里只有精品地址| 黄页大片在线观看| 啊啊啊好大好湿| 欧美淫乱视频| 日韩小电影| 在线色导航| 97色婷| 美女主播色欲91抠b在线播放| 精产国品一区二三产品| 亚洲骚男同com| 超碰97网站| 在线无码视频| 青青草中文-久久青草精品一区二区三 | jiujiujiujingpin| 九九九九九九成人| 欧美黑人168页欧美黑人167| 91网九色蝌蚪操熟女| 久久99人妖视频国产| 欧洲中文字幕| 国产熟女精品区| 大香蕉伊人75| 免费观看性欧美一级| 婷婷色婷婷| 国产成人主播| 国产吹潮女在线观看| 久久偷偷色综合蜜桃| 日本操逼视频在线| 久热91| 综合久草| 欧美精品久久| 日本在线伊人啪啪| 岛国激情视频在线观看| 丝袜 亚洲 偷拍| 一区二区三区蜜桃成人撸久久东京热| 2017天天操天天日| 国产精品宅男免费| 久久夜色一区二区| 夜夜欧美| 久久女婷| 亚洲欧美综合网 | 99re在线视频国产| 人妻丰满熟妇一区二区三| 亚码激情| 东京热天堂网| 久久久999日本大片| www.男人的天堂| 亚洲欧美经典一区二区| 国产精品69久久久久孕妇欧美| 18一区二区三区| 日本男人天堂| 欧美日韩色图片| 少好三P| 色噜噜人妻丝袜a∨先锋影| 性色avv| 91综合天天| 国产99 中文字幕日韩小视频| 国产丸一视频| 色牛牛AV| 日韩本不卡视频在线观看 | 国产人妻精品一区二区三区秋霞| 亚洲日韩美国人妻| 玖玖爱综合| 亚洲97成人在线观看| 欧美中文字幕一区| 午夜无遮挡男女啪啪视频| 亚洲天堂第一页| 欧美一级美片在线观看免费| 久久超碰免费的| 在线播放免费av福利片| 免费成人在线熟妇网| 黄色电影观看久久9| 亚洲黄色网址| 国产成人久久久精品免费AV| 九九九精品美女| 亚洲色图超碰在线| 国产午夜在线观看| 欧美国产视频| 国产真实野战在线视频| 97精品在线| 天天干夜夜一操| 97超碰免费生活| 五月婷网站| 中文字幕av一区二区三区人妻少妇| a v网站在线播放| 内射中国少妇高清视频免费视频 | 色香伊人| www色色色com| 日少妇视频| 色五月婷婷中文字幕| 亚洲不雅视频1区二区| 婷婷三区| 日韩探花精品在线视频| 台湾佬大香蕉| 中文字幕在在线观看网站| 久久αⅴ| 一区二区视频你懂的| 中文字幕熟女人妻丝袜| 神马午夜久久久| 亚洲乱码国产乱码精网站| 国产AV人人夜夜澡人人爽麻豆| 久精品无码av一区二免费国产在线观看| 欧美少妇高潮| 激情综合av| 激情网色| 亚洲自拍偷拍视频在线| 国产后入内射| 96爱综合| 乱老女人一区二区视频| 国产无马在线| 久久αⅴ| 舔舔啊| 欧美日韩电影一区二区| 丁香六月啪| 岛国大片在线观看网站入口| 亚洲精品99999| 欧美黑人168页欧美黑人167| 久久视网78| 五月天激情国产综合婷婷婷| 夜间福利片1000无码| AAAA级日本片免费视频| 亚洲女人毛茸茸91| caopeng97人妻| 熟女丰满人妻一区| av凤凰久久久| 黄页视频网站野外| 乱伦熟女专区| 日本不卡一区| 都市激情人妻一区二区青青操视频 | 国产精品69久久久久久久| 日本在线一二| 国产h片在线观看视频| 综合亚州欧美| 情侣操 逼视频99| 熟妇亚洲一区二区三区| 又黄又爽在线观看视频| 99热精品在线播放| 美女黄频a美女大全免费皮| 免费无码国产精品v片在线观看| 东北女人操逼| 欧美96精品在线| 午夜传煤十二区精品| 精品少妇人妻一区二区三区| 日本一久是| 亚洲一区日韩精品中文字幕| 人妻插插人妻人| 蜜臀久久久国产| 色综合久久88色综合久久天天| 一起草欧美| 超碰97男女| 97超碰精品成| 最新欧美色网| 2020视频1区2区3区| 欧美成人四级在线播放| 日韩欧美aⅴ综合网站发布| 眼镜人妻101.com| 日韩在线一区二区| 欧美性爱三区二区| 色爱三区| 看一级黄色视频| 色九九综合| 97在线精品| 精品久久視頻在线| 香蕉一区二区三区在线视频| 色婷婷综合久久久久中文一区二区| 99免费在线视频| 大香蕉操久久| 久久人妻办公室视频| 欧美成人9797| 国产精品肉丝自拍| 国产精品熟女九九九| 国产欧美第五页| 日韩精品三区四区| 97网址www| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 欧美三级一级| 很黄很污的免费网站| 吉田爱美AV在线| 亚洲成人妻日韩在线| 九九这里只有精品| 99热婷婷一区二区三| 极品另类| 色欲av一区二区三区蜜芽| 精品亚洲黄色片 国产精品导航一区二区| 国产亚洲精品A在线观看下载| 性爱Av免费| 亚洲囯产精品女人久久久| 亚洲 欧美日韩 另类| 天天操天天插| 蜜臀久久在线视频| 黄色一区三区| AV色女综合| 校园春色五月天| 92久久| 日韩性爱小视频| 久久这里只精品| 久久久涩| 久久久久久久综合,国产| 久久m| 性爱欧美五月| 啊啊啊啊啊好多水| 无码逼| 久妇网| 破处bbq| 欧美性生活男人的天堂| 这里都是精品在线观看| 偷拍亚洲高清图片| 97久久超碰日韩精品| 激情小说图片亚洲首页| 激情专区综合| 高清不卡国产| 日韩日韩日韩-国产乱码精品一区二区| 97日韩超碰超碰中文字幕| 丰满熟女一区二区三区在线播放| 国产黄片精品在线| 欧美综合骚| 国产吹潮女在线观看| 中文字幕精品一区二| 色哟哟的毛片| 久久日本熟女精品一区| 天天综合网合集91| 久久只有精品| 国产精品自在自拍视频| 婷婷丁香五月激情啪啪| 久久久9品一区二区三区| 天天欧美97| 国产偷拍自拍在线视频| 久操高青| 久久精品国产亚洲av水密被窝| 精品亚洲国产成人精品| 欧美情色男人的天堂| 婷婷久月| 丁香六月综合激情| 90后后入| 三级AV入口| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产专区路线| 国产在线激情| 国产福利在线视频网站| 日韩钢筋无码高清啾啾啾| 青娱乐老司机视频| 日本欧美成人片AAAA| 91色欧美| 亚洲 欧美 天天| 97国产精品一区二区传媒公司| 韩国一级婬片A片AAAAA| 五月天AV资源| 综合色99| 网友自拍第1页 | 激情综合亚洲| 97 超碰 人人做 人人爱| 9精品久久久久| 五月激情小说| 97日韩| 色哟哟-国产专区| 久久97超碰| 亚洲天堂女优在线| 国产精品成久久久久午夜午夜| 厕所偷拍在线| 欧美伊人久久综合网| 久久久久久久久久久人妻| 日韩成人性日韩成人性爱视频在线免费观看| 亚洲 综合 欧美| 麻豆久久精品亚洲精品88| av婷婷色网| 天天懆天天日| 精彩久久中文| 男女一级A片大黄,一进一出| 天天干人人乐| 3p国产色噜噜一区| 亚洲免费97免费| 国产60页| 精品九九九九九九九| 人人干黄色| 97色色色综合网站| 国产毛片在线| 欧美性少妇| 超91综合网| 久久久久久电影| 国产中午字一暮区| 亚洲综合网电影91| 免费无码国产精品v片在线观看| 97网址97| 69人妻精品一区二区绯色| PMv在线观看| 国产精品色哟哟| 大香蕉一级黄色片久久| 欲色影视综合吧| 96久久精品一二三区色欲| 欧美日韩久久精品爱爱| 久草婷婷| www.久久久久| 国产日韩在线播放av| 素人伊尹大香蕉免费下载视频| 另类图片五月| 日韩卡一卡二卡三在线| 91宗合网| 97碰碰日本乱偷人妻中文的| 天天干天天干天天干| 久久久久久久久9| 97免费视频在线观看视频| 九九九九九九精品| 中日韩久久久免费看| 97免费在线观看| 成人性爱视频在线看| 日本丝袜美腿人妻九九| 日本成人电影资源网| 九九碰九九爱97超| 日韩钢筋无码高清啾啾啾| 久热这里| 高清无码一区二区三区| 国产精品96久久久久久| 蜜臀久久精品久久久久视频| 在线观看十八禁| 天天躁日日躁AAA片李宗瑞| 亚洲色图欧美色18直播在线| 后入式在线免费观看60秒| 亚洲91少妇| 开心五月激情网| 日韩性爱毛片操骚逼| 97爱爱爱| 亚洲极品| 天天干天天日天天射黄色大片| 2021久久国产综合精品青草| 日韩精品人妻中文字幕不卡乱码| 中文字幕免费观看| 99人人干| 成人免费福利网站国产| 欧美一二三级精品在线| 97这里只有精品| 欧美在线电影| 2020中文字幕在线| 91美女色视频亚洲| 91九九九逼| 亚洲欧洲日韩国产自在线| 夜夜爽夜夜| 久久久天美| 9l视频自拍9l九色成人| 日本人妻中文字幕精品| V A在线| 激情五月天中文字幕色| 神马久久午夜| 国产熟妇 码视频户外直播 | 午夜精品久久久久久久男人的天堂 | 久久精品国产97欧美精品亚洲| 亚洲色欲天天天堂色欲网女| 日韩性爱啪啪视频| 久久精品日韩专区免费观看| 思思热在线视频精品| 午夜精品久久久久久久久久蜜桃| 99久久国产精品免费高潮| 亚洲成a人v欧美综合天堂下载 | 国产精品久久9| 亚洲……91| 青青操97| 免费人人搞97| 欧美日韩亚洲高清不卡一区二区三区| 用力操死我| 色精品极品| 精品v日韩欧美国产| 欧美视频一| 久思思热视频在线观看| 天天草夜夜草高潮片| 伊人久久综合精品欧美| 无码精品一区二区三区潘金莲| 久久黄色视频一区二区三区| 顶级丝袜熟女一区二区三区 | 熟女人妻一区二区三区免费看| 96一区二区| 人人操人人摸人人骑| 国产福利合集| 色综合一本| 乱伦av麻豆| 国内毛片无码一级毛片| 五月婷婷激情| www.色婷婷| 思思性爱| 午夜人妻精品综合在线| 久久9久9久99久9久9| 青青草密桃在线播放| 色月天AV导航| 91欧美性| 午夜在线播放| 在线观看亚洲成人精品| 强奸乱伦亚洲第一页| 国内自拍 日韩激情 99| 伊人激情五月天一区二区| 97人人模人人爽人人| 国内精品不卡无毒99999| 看看小穴| 久久久久久久久久久97| 97在线青| 婷婷五月天激情四射| 午夜福利无毒不卡| 丁香啪啪| 国产91精品久久久久久久网曝门| 精品亚洲俞拍视频一区| 亚洲情色一区二区三区| 久久久免费高清中文视频| 女性91网站| 久久高清欧美国产| 99自拍B亚洲| 亚洲女人毛茸茸91| 国产精品爆乳懂色蜜乳| 久久鲁干| 熟女色图在线| 全国男人天堂网| 99视频这有这里有精品| 亚洲伊人a线观看视频| 亚一综合久久久久久久久久| 男人的天堂亚洲| 97se综合| 夜夜操美女| 校园春色制服丝袜中文字亚洲| www.AV有限公司一区| 91n免费处女| 欧美天天射| 9久9久| 亚洲啪啪综合?v一区综合精品区| 影音先锋中文字幕日本好一区二区| 精品国产精品一区二区| 久操视频免费在线观看| 男人的天堂2000| 久久线上视频免费看| 91亚洲网| 色婷婷九月| 91久久久久久久| 久久久久久久人妻丝袜| 精品国产乱码久久久影院| 欧美精品成人一区二区在线观看 | 欧美v亚洲v综合v国产v妖精| 亚洲精品国产专区在线观看| 午夜精品99久久久久传媒| 激情五月天校园春色网| 懂色av一区二区三区天美传媒| 人人考人人摸人人干| 天色综合网| 91香蕉国产尤物视频| 色综合五月天| 美女高潮国产高清| 99ri视频| 天天欧美| 丰满人妻av一区二区三区| 欧美狠狠操| 先锋女优在线观看视频| 国产最新小视频在线播放下载| 操久久久久久| www亚洲欧美| 欧美色视频在线| 欧美日韩黄片精品在线| 中文字幕一区二区三区人妻少妇在线| 青草地一本线一区二区三区| 99视频内射三四| 日韩无码服务区| 九九九一二三| 婷婷综合五月天| 四虎在线免费视频| 日逼国产| 国产精品色| 大但人体久久久久| 狼人久草| 四虎免费视频| 日本网色| 久久少妇人妻| 亚洲第一无码播放立川理惠| 美性中文综合网| 国产操操日韩三级黄| 九热超碰| 九九精品无码专区免费| 大香蕉伊人亚洲| 亚洲性综合11| 婷婷午夜| 绯色一区二区三区不卡少妇 | 美女91| 五月天综合在线| 黑人粗大V S日韩女优视频| 色情综合| 蜜桃狠狠色伊人亚洲综合| 99国产精品视频尤物| 精品国产一区二区久久| 国产精品毛片?v一区二区三区| 国产日韩欧美| 亚洲五月婷婷| 老女人综合网| 品亲网欧美品亲网| 97久久超碰| 日本不卡高清免v欧美日韩在线观看| 亚洲色图欧洲| 欧美亚涩| 秋霞成人做爱| 天天日天天舔东京热| 最新日产中文在线麻豆| 亚洲AV不卡在线观看| 97在线视频免费观看| 国产精品欧美激在线| 牛黄色久午久| 国产强奸乱伦第1页| 亚洲97p| 婷婷五月天影院| 国产亚洲精品A在线观看下载| 国产女主播视频在线观看| 超踫中文字幕| α√在线| 天天舔日美女视频| 一二三四免费视频| 91久久精品中文字幕| 欧美色偷偷| 色亚州人久干视频在线观看免费版| 欧洲色色| 成年人黄色视频免费| 精久久久| 精品少妇一区二区三区免费观看| 亚洲色阁| 亚洲宗合网| 91free福利| 日本操逼aaaaa| 亚洲性少妇| 五月天婷婷基地| 日韩亚洲欧美中文字幕| 亚洲男人天堂视频| 91美女在线视频| 中文字暮97| 五月丁香综合| 国产高清免费不卡av| 香港澳门日本三级网站| 久久原创中文| 欧美性暴力猛交XXXX| 丰满人妻一区二区三区| 凸凹视频在线观看| 亚洲图片91| 韩日精品福利视频一区不卡在线免| 老鸭窝亚洲毛片| 九九Av| 91欧美大片| 夜夜欢天天干| 天天插夜夜爽| 蜜桃久久久久久| 精品少妇一区二区三区免费观看| 久久久久久久国产视频| 人人九九精| 另类专区加勒比| 亚洲欧洲第二视频在线观看色图| 欧美男女午夜啪啪| 91超级碰| 婷婷亚洲综合| 色色色色电影网| 人人摸人人干人人拍97| 日韩免费在线观看不卡| 国产精品第一页国产大屁股视频免费区| 97久久久久久久久久| 啊啊啊啊,啊啊好多水| 九九九九97| 人人九九精| 天天操福利视频综合网站|