日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【联盛德W806上手笔记】三、MCU系统与时钟结构

發布時間:2023/12/9 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【联盛德W806上手笔记】三、MCU系统与时钟结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 總線結構
    • AHB-1 總線
    • AHB-2 總線
  • 時鐘與復位
    • 主要特性
    • 時鐘結構
    • 功能描述
      • 時鐘門控
      • 時鐘自適應關斷
      • 功能復位
      • 時鐘分頻
      • 寄存器描述
        • 寄存器列表
        • 軟件時鐘門控使能寄存器
        • 軟件時鐘掩碼寄存器
        • 軟件復位控制寄存器
        • 時鐘分頻配置寄存器
        • 調試控制寄存器
        • I2S 時鐘控制寄存器
        • 復位狀態寄存器
      • 調試功能控制
    • 參考時鐘電路設計
    • 啟動配置
  • 地址空間
  • SRAM
  • Flash
    • QFlash
    • SPI Flash
  • PSRAM
  • 庫函數
    • wm_cpu.h
      • 函數
      • 參數
    • wm_gpio_ex.h:引腳復用相關
    • wm_rcc.h:時鐘相關
    • wm_it.h:中斷服務函數的聲明

Windows 10 20H2
HLK-W806-V1.0-KIT
WM_SDK_W806_v0.6.0


???????摘自《W806 芯片設計指導書 V1.0》、《W806 MCU 芯片規格書 V2.0》

總線結構

???????這里沒有找到W806的,不過找到了與之差不多的W800的:
???????W800 芯片由兩級總線構成,如下圖所示

AHB-1 總線

???????本級總線有四個主設備-即 XT804,DMA,GPSEC 以及 5 個從設備。
???????XT804 是面向控制領域的 32 位高能效嵌入式 CPU 核, 采用 16/32 位混合編碼指令系統,設計了精簡高效的 3 級流水線。
???????XT804 提供多種可配置功能,包括硬件浮點單元、片上高速緩存、DSP 加速單元、可信防護技術、片上緊耦合 IP 等,用戶可根據應用需要進行配置。此外,XT804 提供多總線接口,支持系統總線、指令總線、數據總線的靈活配置。XT804 針對中斷響應做了特殊的加速,中斷響應延時僅需 13 個周期。
???????總線時鐘最快工作在 240MHz 頻率,可以配置為 240/160/120/80/40MHz,或更低。


AHB-2 總線

???????本條總線有 4 個主設備,3 個從設備,使用 crossbar 連接結構,能夠實現不同主設備對不同從設備的同時訪問,從而加大帶寬。總線時鐘最快工作在 40MHz 頻率,可以根據需要配置為更低。

???????各主設備采用固定優先級,自上而下優先級遞減。

時鐘與復位

???????支持芯片時鐘和復位系統的控制,時鐘控制包括時鐘變頻,時鐘關斷以及自適應門控;復位控制包括系統以及子模塊的軟復位控制。

主要特性

支持各模塊時鐘關斷
支持部分模塊時鐘自適應關斷
支持各模塊軟件復位
支持 CPU 頻率設置
支持 ADC/DAC 回環測試
支持 I2S 時鐘設置

時鐘結構

???????這里沒有找到W806的,不過找到了與之差不多的W800的:
???????W800 使用 24/40MHz 晶體作為 SoC 時鐘源,片內內置 1 個 DPLL 輸出 480MHz,供給CPU,系統總線,數據總線及 WiFi 系統使用;片內另外內置 32.768KHZ RC 振蕩器,供 PMU 及 LCD 模塊使用。時鐘結構概括圖如下圖所示。

功能描述

時鐘門控

???????通過配置時鐘門控使能寄存器 CLK_GATE_EN 可以控制指定功能的時鐘關斷,從而達到關斷某一模塊功能的目的。
???????為了提供固件對系統功耗控制的靈活性,時鐘與復位模塊提供了系統內各模塊的時鐘門控功能。當關閉相應模塊的時鐘時,該模塊的數字邏輯與時鐘樹將停止工作,能夠降低系統的動態功耗。
???????具體各模塊的開關對應寄存器 SW_CLKG_EN 的詳細描述。

時鐘自適應關斷

???????芯片依據內部的某些狀態的遷移,自適應關斷某些功能模塊的時鐘。
???????用戶請不要更改配置,否則可能會在配置 PMU 功能時導致系統異常。

功能復位

???????芯片提供了各子系統的軟復位功能,通過設置 SW_RST_CTRL 相應 BIT 為 0 可以達到子系統復位。
???????但是,復位狀態不會自動清除,要恢復正常工作需將 SW_RST_CTRL 相應 BIT 位置 1。
???????軟復位功能并不會復位 CPU 及 WatchDog。
???????該寄存器中,對 APB/BUS1/BUS2(對應 APB 總線,系統總線及數據總線)的復位操作不推薦,會導致系統訪問設備異常。

時鐘分頻

???????W800 系統采用 40MHz/24MHz 晶體作為系統時鐘源,系統內置 DPLL,固定輸出 480MHz 時鐘作為全系統的時鐘源(如下圖)。

???????系統總線的時鐘與 CPU 時鐘一致,數據總線的時鐘固定為 WLAN 根時鐘的 1/4。
???????WLAN 根時鐘同時也是整個 WLAN 系統的時鐘源頭。
???????此模塊中提供了設定 CPU 時鐘與 WLAN 根時鐘的功能,供固件調節系統性能及功耗使用。
???????設置 SYS_CLK_DIV 寄存器的 BIT[7:0]可以調整 CPU 時鐘分頻系數。CPU 時鐘分頻的源時鐘為 DPLL 的輸出,固定為 480MHz。CPU 時鐘分頻系數默認值為 6,即 CPU 默認工作頻率為 480MHz 的 6 分頻,即 80MHz。當需要調整 CPU 所需時鐘時,可以重新配置本參數。
???????CLK_PERI 時鐘提供 SoC 系統中加密模塊的運行時鐘的根時鐘,以及某些接口的運行時鐘的根時鐘,比如 PWM 接口,I2S 接口,Flash 接口時鐘。此時鐘也由 DPLL 輸出的 480MHz 分頻得出。正常工作情況下應固定為 3 分頻,得到 CLK_PERI 根時鐘 160MHz。由 CLK_PERI 根時鐘進行 2 分頻,4 分頻得到80MHz 和 40MHz,提供給加密模塊和接口模塊使用。
???????設置 SYS_CLK_DIV 寄存器的 BIT[15:8]可以調整 WLAN 時鐘分頻系數。默認分頻因子為 3,即對 DPLL的 480MHz 輸出 3 分頻,得到 160MHz 時鐘,作為根節點時鐘送給 WLAN(WLAN 再繼續分頻得到更為詳細的低頻時鐘供 WLAN 系統使用。
???????注意:如果希望 WLAN 系統正常工作,WLAN 根時鐘需要保持在 160MHz,否則 WLAN 系統將失效。
???????當不需要 WLAN 系統工作的時候,可以將 WLAN 根時鐘降低,降低系統動態功耗。
???????在改變系統時鐘配置的時候,需要注意:系統總線與數據總線的比例需要維持在 M:1,其中 M 為整數,最小為 1。在改變系統時鐘配置時,也需要同時更新寄存器 SYS_CLK_DIV 的 BIT [23:16], 設置正確的比例系數。否則,訪問數據總線將得到異常數據。
???????SYS_CLK_SEL 的[15:8]提供了設置 SAR_ADC 工作頻率的分頻因子,以 40M 為時鐘源進行分頻。分頻系數即為所配分頻值。
???????SYS_CLK_SEL 的 BIT[4]為配置 RSA 模塊核心運算的時鐘頻率選擇,可以選擇 80MHz 或者 160MHz。
???????BIT[5]為配置 GPSEC 模塊核心運算的時鐘頻率選擇,可以選擇 80MHz 或者 160MHz。
???????BIT[6]為配置 FLASH 模塊對外總線的時鐘頻率選擇,可以選擇 40MHz 或者 80MHz。
???????當需要重新配置 cpu_clk_divider,wlan_clk_divider,bus2_syncdn_factor,sdadc_fdiv 時,需要置位 SYS_CLK_DIV 的 BIT[31],硬件自動更新上述四個參數到分頻器,然后清零 BIT[31]。
???????I2S_CLK_CTRL 提供了 I2S 模塊的時鐘配置功能。

寄存器描述

寄存器列表

軟件時鐘門控使能寄存器




軟件時鐘掩碼寄存器

軟件復位控制寄存器




時鐘分頻配置寄存器



調試控制寄存器


I2S 時鐘控制寄存器


復位狀態寄存器

調試功能控制

???????用戶可以通過設置 DEBUG_CTRL 的值(SYS_CLK_SEL- BIT[16])來達到使能和禁用 JTAG 功能的目的。

參考時鐘電路設計

???????芯片參考時鐘選用 40MHz 頻率,用戶根據實際產品需求選用不同溫度等級、穩定度、負載電容值的晶體。晶體兩端所接負載電容根據不同廠家晶體及頻偏情況需要調整。

???????晶體擺放盡量靠近芯片,走線盡量短,并且遠離干擾源,時鐘周圍多地孔隔離。時鐘下面各層禁止其它走線穿過,防止干擾時鐘源。

啟動配置

???????W800 芯片上電后,CPU 會啟動執行 ROM 中的固件,加載 Flash 中指定地址的用戶 Image。ROM 固件在開始運行時會讀取 BootMode(PA0)引腳,根據引腳的信號判斷進入啟動狀態:

???????通常,BootMode 引腳應該用于生產或者調試階段。在生產階段,用戶通過將 BootMode 引腳持續拉低 30ms 以上,進入功能模式,可以快速進行燒錄 Flash 工作。
???????在產品返工或者維修的場景中,在芯片未進入“最高安全等級”(關于安全等級的描述請參考《WM_W800_ROM 功能簡述》)時,可以通過該引腳進入功能模式,擦除舊的 Image,寫入新的Image。
???????在調試階段,無論固件出現任何故障,都可以通過將 BootMode 引腳持續拉低 30ms 以上,進入串口下載功能,燒錄新的固件。

地址空間

???????這里沒有找到W806的,不過找到了與之差不多的W800的:

???????XT804 支持 4G 存儲空間,如上圖所示分為 6 個 block,分別為代碼區,內存區,片上外設,片外存儲區,片外外設和系統外設區。根據需求,w800 片內存儲空間如圖三所示映射到前三區。



SRAM

???????W800 內置 288KB SRAM。其中 160KB 掛載一級 AHB 總線上,128KB 掛載在二級 AHB 總線上。CPU等一級總線設備可以訪問所有內存區域,但是二級總線上的設備只能訪問二級總線上 128KB 的內存。

Flash

QFlash

???????W800 內部集成 2MBytes QFlash。通過芯片內部集成 32KB cache 實現 XIP 方式在 QFlash 上執行程序。 程序運行過程中,CPU 首先從 Cache 中讀取指令,當不能獲取指令時,以 8Bytes 一行的方式從QFlash 讀取指令,存入 Cache 內。因此,當持續運行代碼大小小于 32K 時,CPU 將無需從 QFlash 讀取指令,此時 CPU 可以運行在更高的頻率。上述方式為讀取指令操作方式,整個 Image 的 RO 段都會以這種方式操作。此過程用戶無需干預。
???????QFlash 也可以存儲數據,當用戶程序需要讀寫 QFlash 內數據時,需要通過內置的 QFlash 控制器進行操作,QFlash 提供了相應的地址、指令等寄存器來協助實現用戶想要的操作。
???????用戶需要注意的是,程序進行讀取或者寫入數據時,無需進行狀態判斷、等待等操作,因為 QFlash 控制器本身會進行判斷。當 QFlash 控制器返回時,表明讀取或者寫入已經完成。

SPI Flash

???????W800 芯片除了支持 6PIN 的 QFlash 接口之外(內置 PIN,未封裝),還支持低速 SPI 接口訪問。該 SPI接口的最高工作頻率可達 20MHz,支持主從功能。

PSRAM

???????W800 內置 SPI/QSPI 接口的 PSRAM 控制器,支持外置最大容量 64Mb 的 PSRAM 設備訪問,提供總線方式的 PSRAM 讀寫擦操作。最高讀寫速度 80MHz。當存儲容量需要擴充時,可以使用片外 PSRAM 擴充代碼存儲空間或者數據存儲空間。PSRAM 同樣支持 XIP 方式執行程序,CPU Cache 同樣支持緩存PSRAM 中數據。

庫函數

wm_cpu.h

函數

???????打開wm_cpu.h,有如下的函數聲明:

void SystemClock_Config(uint32_t clk); //該函數用于設置CPU時鐘,如SystemClock_Config(CPU_CLK_160M); void SystemClock_Get(wm_sys_clk *sysclk); //這個函數用來獲取CPU時鐘HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority); void HAL_IncTick(void); uint32_t HAL_GetTick(void); void HAL_Delay(uint32_t Delay);void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t Priority); //設定中斷優先級,Priority為0~15的值,值越小,優先級越高。如HAL_NVIC_SetPriority(GPIOA_IRQn, 0); void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); //使能中斷通道,如HAL_NVIC_EnableIRQ(GPIOA_IRQn); void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); //失能中斷通道

參數

結構體和枚舉類型

enum CPU_CLK{CPU_CLK_240M = 2,CPU_CLK_160M = 3,CPU_CLK_80M = 6,CPU_CLK_40M = 12,CPU_CLK_2M = 240, };typedef union {struct {uint32_t CPU: 8; /*!< bit: 0.. 7 cpu clock divider */uint32_t WLAN: 8; /*!< bit: 8.. 15 Wlan clock divider */uint32_t BUS2: 8; /*!< bit: 16.. 23 clock dividing ratio of bus2 & bus1 */uint32_t PD: 4; /*!< bit: 24.. 27 peripheral divider */uint32_t RSV: 3; /*!< bit: 28.. 30 Reserved */uint32_t DIV_EN: 1; /*!< bit: 31 divide frequency enable */} b;uint32_t w; } clk_div_reg;typedef struct{uint32_t apbclk;uint32_t cpuclk;uint32_t wlanclk; }wm_sys_clk;typedef enum {HAL_TICK_FREQ_10HZ = 10,HAL_TICK_FREQ_100HZ = 100,HAL_TICK_FREQ_1KHZ = 1000,HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ } HAL_TickFreqTypeDef;

宏參數

/**BASE PLL CLOCK*/ #define W805_PLL_CLK_MHZ (480)#define UNIT_MHZ (1000000)

#define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= (IRQn_Type)0x00U)

wm_gpio_ex.h:引腳復用相關

#define __AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->AF_S1, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->AF_S1, __IOPOSITION__); \SET_BIT(__HANDLE__->AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \SET_BIT(__HANDLE__->AF_S1, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \SET_BIT(__HANDLE__->AF_S1, __IOPOSITION__); \SET_BIT(__HANDLE__->AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT5(__HANDLE__, __IOPOSITION__) do{ \CLEAR_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT6(__HANDLE__, __IOPOSITION__) do{ \CLEAR_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->DIR, __IOPOSITION__); \SET_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->PULLDOWN_EN, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT7(__HANDLE__, __IOPOSITION__) do{ \CLEAR_BIT(__HANDLE__->AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->DIR, __IOPOSITION__); \SET_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \CLEAR_BIT(__HANDLE__->PULLDOWN_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_SPI_CLK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_24)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_SPI_CS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_23)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_SPI_MISO(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_16)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_25)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_SPI_MOSI(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_26)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_UART0_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_27)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART0_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_28)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART0_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_21)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_29)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART0_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_22)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_30)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART1_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_31)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART1_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_16)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART1_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART1_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART2_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART2_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART2_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART2_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART3_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART3_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART3_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART3_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART4_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_8)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART4_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART4_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART4_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_UART5_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_08)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_18)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART5_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__->PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART5_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART5_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_ADC(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && \((__IOPOSITION__ == GPIO_PIN_1) || (__IOPOSITION__ == GPIO_PIN_2) || \(__IOPOSITION__ == GPIO_PIN_3) || (__IOPOSITION__ == GPIO_PIN_4))) \{ \__AFIO_REMAP_SET_OPT6(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM0(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM1(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM2(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_24)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM3(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_25)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM4(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_16)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_26)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2C_SCL(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_I2C_SDA(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_TOUCH(__HANDLE__, __IOPOSITION__) do{ \if (((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_7)) || \((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_9)) || \((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_10)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_0)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_1)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_2)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_3)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_4)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_5)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_6)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_7)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_8)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_9)) || \((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_12)) || \((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_14)) || \((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_29))) \{ \if ((__HANDLE__ != GPIOA) || (__IOPOSITION__ != GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT7(GPIOA, GPIO_PIN_7); \} \__AFIO_REMAP_SET_OPT7(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_EXT_MCK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_MCK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_WS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_CK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_8)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_8)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_MOSI(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_MISO(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOA) && (__IOPOSITION__ == GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ == GPIOB) && (__IOPOSITION__ == GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_SWJ_ENABLE do { \__AFIO_REMAP_SET_OPT1(GPIOA, GPIO_PIN_1); \__AFIO_REMAP_SET_OPT1(GPIOA, GPIO_PIN_4); \} while(0)#define __HAL_AFIO_REMAP_SWJ_DISABLE do { \__AFIO_REMAP_SET_OPT5(GPIOA, GPIO_PIN_1); \__AFIO_REMAP_SET_OPT5(GPIOA, GPIO_PIN_4); \} while(0)

wm_rcc.h:時鐘相關

打開wm_rcc.h,有如下宏

#define RCC ((RCC_TypeDef *)RCC_BASE)#define __HAL_RCC_ALL_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_ALL)#define __HAL_RCC_SPI_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_LSPI)#define __HAL_RCC_SPI_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_LSPI)#define __HAL_RCC_PWM_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_PWM)#define __HAL_RCC_PWM_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_PWM)#define __HAL_RCC_ADC_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_ADC)#define __HAL_RCC_ADC_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_ADC)#define __HAL_RCC_GPIO_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_GPIO)#define __HAL_RCC_GPIO_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_GPIO)#define __HAL_RCC_UART0_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_UART0)#define __HAL_RCC_UART0_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_UART0)#define __HAL_RCC_UART1_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_UART1)#define __HAL_RCC_UART1_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_UART1)#define __HAL_RCC_UART2_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_UART2)#define __HAL_RCC_UART2_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_UART2)#define __HAL_RCC_UART3_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_UART3)#define __HAL_RCC_UART3_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_UART3)#define __HAL_RCC_UART4_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_UART4)#define __HAL_RCC_UART4_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_UART4)#define __HAL_RCC_UART5_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_UART5)#define __HAL_RCC_UART5_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_UART5)#define __HAL_RCC_TIM_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_TIMER)#define __HAL_RCC_TIM_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_TIMER)#define __HAL_RCC_I2C_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_I2C)#define __HAL_RCC_I2C_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_I2C)#define __HAL_RCC_TOUCH_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_TOUCH)#define __HAL_RCC_TOUCH_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_TOUCH)#define __HAL_RCC_DMA_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_DMA)#define __HAL_RCC_DMA_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_DMA)#define __HAL_RCC_I2S_CLK_ENABLE() SET_BIT(RCC->CLK_EN, RCC_CLK_EN_I2S)#define __HAL_RCC_I2S_CLK_DISABLE() CLEAR_BIT(RCC->CLK_EN, RCC_CLK_EN_I2S)

wm_it.h:中斷服務函數的聲明

#ifndef __WM_IT_H__ #define __WM_IT_H__void CORET_IRQHandler(void); void GPIOA_IRQHandler(void); void GPIOB_IRQHandler(void); void UART0_IRQHandler(void); void UART1_IRQHandler(void); void UART2_5_IRQHandler(void); void WDG_IRQHandler(void); void TIM0_5_IRQHandler(void); void ADC_IRQHandler(void); void PMU_IRQHandler(void); void TOUCH_IRQHandler(void); void I2S_IRQHandler(void); void DMA_Channel0_IRQHandler(void); void DMA_Channel1_IRQHandler(void); void DMA_Channel2_IRQHandler(void); void DMA_Channel3_IRQHandler(void); void DMA_Channel4_7_IRQHandler(void);#endif 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【联盛德W806上手笔记】三、MCU系统与时钟结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久草男人天堂 | 国产视频高清 | 久久免费视频在线观看6 | 亚洲天堂视频在线 | 日韩成人看片 | 亚洲天堂社区 | 欧美黄色特级片 | 黄色小说视频网站 | 久久亚洲影视 | 超碰人人舔 | 日日干天夜夜 | 日韩中文字幕免费 | 国产免费观看久久 | 亚洲婷婷伊人 | 黄色小说免费观看 | 国产在线美女 | 中文在线字幕免费观 | 成人小视频在线观看免费 | 久久久免费毛片 | 欧美综合久久 | 丰满少妇在线观看网站 | 国产亚洲无 | 久久久亚洲精品 | 麻豆一二 | 日韩理论 | 久久久99国产精品免费 | 伊人中文网 | www.成人精品 | 亚洲六月丁香色婷婷综合久久 | www.久久99| 91久久奴性调教 | 欧美性生活久久 | 精品国产精品一区二区夜夜嗨 | 91成人黄色 | 亚洲精品视频一二三 | 97热在线观看 | 国产麻豆视频免费观看 | 99tvdz@gmail.com| 免费国产在线精品 | 色爱成人网 | 亚洲视频在线观看网站 | 久久精品国产精品亚洲 | 久久久黄色av | 天天插天天操天天干 | 91亚洲在线 | 99视频免费看 | 日韩亚洲精品电影 | 国产又粗又猛又爽又黄的视频免费 | 日韩在线视频播放 | 久久国产精品二国产精品中国洋人 | 日韩中文字幕a | 91亚洲在线 | 最新av网站在线观看 | 91视视频在线直接观看在线看网页在线看 | 国产成人精品久久久久蜜臀 | 国产福利一区二区三区在线观看 | 97人人艹 | 免费高清男女打扑克视频 | 国产免费片 | 久久不卡日韩美女 | 在线电影 你懂得 | 国产成人在线免费观看 | 99久久婷婷国产综合精品 | 不卡的av电影在线观看 | 天天操欧美 | 精品视频99| 一级黄色电影网站 | 91福利视频久久久久 | 久久这里只有精品视频首页 | 视频91在线 | 久久久久久黄 | 韩国av免费看 | 丁香久久久 | 美女久久网站 | 国产精品麻豆果冻传媒在线播放 | 久久久久久久久久久久久久电影 | 国产精品私拍 | 成人av片在线观看 | 成人毛片在线视频 | 99视频偷窥在线精品国自产拍 | 成人小视频在线观看免费 | 国产精品videoxxxx | 精品在线小视频 | av九九九 | 99久久日韩精品视频免费在线观看 | 欧美精品在线观看免费 | 日韩精品字幕 | 欧美亚洲另类在线视频 | 亚洲第一av在线播放 | 久久久久激情 | 久久这里只有精品视频首页 | 亚洲男模gay裸体gay | 97人人模人人爽人人少妇 | 国产精品99久久久久久小说 | 91麻豆精品国产91久久久无需广告 | 免费观看国产精品视频 | 亚洲精品久久久蜜桃直播 | 天天操天天摸天天干 | 亚洲免费不卡 | 狠狠gao| 国产成人一区二区三区电影 | 婷婷综合电影 | 免费观看福利视频 | 久久成人国产精品 | 亚洲国产精品视频在线观看 | 国产又粗又硬又长又爽的视频 | 成人91视频 | 91高清免费在线观看 | 久久在草 | 精品国产精品国产偷麻豆 | 91亚洲精品国偷拍 | 99在线视频免费观看 | 成人va在线观看 | 成人午夜剧场在线观看 | 久久综合操 | 在线观看蜜桃视频 | 成年人天堂com | 蜜臀aⅴ国产精品久久久国产 | 日本久久久久久久久 | 麻豆国产网站 | 2019国产精品 | 日韩av影视在线 | 丁香影院在线 | 亚洲第一区在线观看 | 国语精品视频 | 久久午夜免费视频 | 久草视频在| 天天玩天天干天天操 | 激情婷婷 | 黄色片免费看 | 久久久久久久久久久网 | 久久草av | www最近高清中文国语在线观看 | 欧美日韩精品在线观看视频 | 亚洲综合视频在线 | 国产剧情一区在线 | 日韩乱码中文字幕 | 又长又大又黑又粗欧美 | 久久福利精品 | 久久久久久99精品 | 国产情侣一区 | 日韩免费在线看 | 91香蕉国产| a级国产乱理论片在线观看 伊人宗合网 | 成人丝袜 | 91.dizhi永久地址最新 | 午夜黄色 | 免费看国产视频 | 亚洲成人一区 | 亚洲japanese制服美女 | 亚洲精品字幕在线观看 | 中文字幕免费一区 | 成人毛片网 | 精品视频在线免费观看 | 又粗又长又大又爽又黄少妇毛片 | 91在线一区二区 | 2018精品视频| 国产一区二区成人 | 91成人区 | 国产精品高 | 中文字幕麻豆 | 97免费在线观看视频 | 手机在线免费av | 色在线中文字幕 | 91精品一| 亚洲欧美国产精品久久久久 | 久久er99热精品一区二区三区 | 亚洲精品视频在 | 久草资源在线观看 | 99精品国产视频 | 婷婷六月丁香激情 | 中文字幕超清在线免费 | 中文字幕在线国产精品 | 免费看的黄色小视频 | 黄色大片视频网站 | 亚洲精品视频免费观看 | 欧美色精品天天在线观看视频 | 日本在线观看中文字幕 | 国产精品手机在线观看 | 99精品在线视频播放 | 青草草在线 | 午夜精品一区二区三区免费 | 美女视频是黄的免费观看 | 国产精品va在线观看入 | 欧美日韩国产在线观看 | 欧美一区视频 | 精品免费观看视频 | 日本bbbb摸bbbb | 日韩欧美精品一区 | 色偷偷888欧美精品久久久 | 免费亚洲一区二区 | 高清不卡一区二区在线 | 狠狠综合 | 日日操天天爽 | 欧美人牲| 4hu视频 | 福利视频导航网址 | 成人免费观看完整版电影 | 人人玩人人添人人澡97 | 激情欧美国产 | 国产区精品在线观看 | 国产手机视频精品 | 91精品国产99久久久久久久 | 久久免费精品国产 | 亚洲男人天堂a | 伊人中文在线 | 欧美色黄| 国产成人专区 | 丁香激情综合久久伊人久久 | 精品一区二区三区四区在线 | 在线精品视频免费观看 | 久久国产精品色婷婷 | 一级精品视频在线观看宜春院 | 成人黄色大片在线观看 | 成人影视免费 | 丁香婷婷激情五月 | 成人av免费看| 国产精品午夜av | 欧美aaa级片 | 欧美一级艳片视频免费观看 | 97在线观看免费视频 | av电影一区二区三区 | 亚洲精品xxxx | 国产精品久久久久久久久久久久久 | 久av电影| 福利片免费看 | 欧美一级特黄aaaaaa大片在线观看 | 久久久久久久久久电影 | 1000部国产精品成人观看 | 中文字幕在线观看的网站 | 超碰av在线播放 | av在线a| 国产一级在线看 | 天天弄天天干 | 久久都是精品 | 97人人爽| 中文字幕123区 | 国产日产精品一区二区三区四区 | 91精品国自产在线观看欧美 | 亚洲天天在线日亚洲洲精 | 日韩成人xxxx | 午夜美女网站 | 黄色av电影一级片 | 午夜国产在线 | 色婷婷欧美 | 特级大胆西西4444www | 特级西西444www高清大视频 | 欧美不卡视频在线 | 看av免费网站 | 久久久在线观看 | 久久精品这里都是精品 | 天天操天天干天天插 | 国产最新视频在线 | av综合网址| 天天插日日操 | 激情亚洲综合在线 | 欧美日韩免费一区二区三区 | 亚洲视频大全 | 在线观看资源 | 亚洲欧美日韩国产一区二区三区 | 色香蕉在线 | 五月婷婷色 | 国产精品福利小视频 | 夜夜躁狠狠躁日日躁视频黑人 | 欧美大片在线观看一区 | 国产在线精品观看 | 国产成人精品一区二区三区网站观看 | 久久久国产精品一区二区三区 | 日韩欧美视频免费在线观看 | 国产精品久久久久久久久久久久冷 | 丁香六月伊人 | 综合网av| 欧美黑人巨大xxxxx | 黄色毛片在线 | 麻豆视频在线 | 人人爽人人片 | 91| 亚洲国产成人精品电影在线观看 | 国产精品久久久久永久免费 | 精品美女在线视频 | 成人黄色片在线播放 | 91丨九色丨蝌蚪丨对白 | 麻豆久久精品 | 亚洲精品高清在线观看 | 国产尤物在线 | 91一区啪爱嗯打偷拍欧美 | 国产欧美日韩视频 | 成人久久18免费网站麻豆 | 91九色最新 | 国产精品久久久久久久午夜片 | 天天色成人 | 天天干天天操 | 深爱五月激情五月 | 成人国产网站 | 久久伦理电影 | 免费成人黄色av | 国产免费高清 | 一级黄色av| 91免费在线播放 | 九九激情视频 | 久久成年人视频 | 97国产精品久久 | 免费观看91| 久久国产精品免费看 | 激情视频国产 | 久久久久99精品成人片三人毛片 | 欧美一级久久久久 | 99久久免费看| 91视频91自拍 | 日韩一二三在线 | 久久久久久在线观看 | 91黄色影视| 精品久久一区二区 | 中文字幕一区二区三区精华液 | 一区二区三区四区在线 | 日韩精品视| 99精品观看| 免费一级日韩欧美性大片 | 九九精品视频在线看 | 日韩在线资源 | 精品亚洲男同gayvideo网站 | 男女啪啪网站 | 天堂av免费在线 | 中文字幕日韩一区二区三区不卡 | 欧美性生活免费看 | 免费中文字幕在线观看 | 午夜黄色 | 久久综合狠狠综合久久狠狠色综合 | av在线播放免费 | 日韩欧美视频免费观看 | 成人在线免费视频观看 | 国产精品免费久久久久久久久久中文 | 亚洲aⅴ在线观看 | 中文字幕视频在线播放 | 亚洲激情网站免费观看 | 日本中文在线 | 国产资源免费 | 91色吧 | 2021国产在线视频 | 国产精品一区二区免费在线观看 | 成人国产亚洲 | 少妇bbw撒尿 | 91成人在线视频观看 | 成年人视频免费在线播放 | 成人禁用看黄a在线 | 美女天天操 | 最近中文字幕高清字幕免费mv | 国产精品久久99 | 一本一道久久a久久精品蜜桃 | 国产中文字幕网 | 日韩电影中文字幕在线观看 | 亚洲激情在线视频 | 久久久综合精品 | 欧美一区影院 | 人人添人人澡 | 精品免费久久久久 | 超碰免费97 | 四虎www.| 99久视频| 国产一区二区在线播放视频 | 久久夜色精品国产欧美一区麻豆 | 最新真实国产在线视频 | 亚洲欧美激情插 | 91九色蝌蚪视频 | 亚洲精品日韩av | 亚洲午夜久久久久久久久电影网 | 九九色视频| 久久看片 | 日韩在线欧美在线 | 久久久私人影院 | 黄色免费观看 | 高清一区二区三区av | 欧美精品在线观看一区 | 欧美精品二 | 亚洲成av人片在线观看香蕉 | 毛片视频网址 | 亚洲国产手机在线 | 亚洲九九爱 | 色婷婷av一区二 | 精品黄色片 | 黄色小说视频在线 | 久久久久成人精品亚洲国产 | 国产精品久久久久久久午夜片 | 综合网伊人 | av在线免费在线 | 一级免费片 | 久久这里精品视频 | 国产精品国产三级国产不产一地 | 最近最新中文字幕视频 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 免费视频国产 | 91大神精品视频在线观看 | 国产精品一区二区中文字幕 | 高清不卡毛片 | 国色综合| 欧美精品第一 | 伊人伊成久久人综合网站 | 色婷婷久久久综合中文字幕 | 最新国产福利 | 国产福利免费在线观看 | 婷婷六月网 | 久久伦理电影 | 91精品网站| 超碰97成人 | 国产成人精品亚洲精品 | 欧美日韩高清在线观看 | 天天综合天天综合 | 成人精品国产免费网站 | 手机在线观看国产精品 | 在线亚洲高清视频 | 天天综合亚洲 | 日本mv大片欧洲mv大片 | 91丨九色丨国产女 | 正在播放日韩 | 四虎在线观看视频 | 久一久久 | 18做爰免费视频网站 | 999精品视频 | 99re久久精品国产 | 久久久久免费视频 | 亚洲片在线 | 久久人人添人人爽添人人88v | 久久极品 | 精品久久久久免费极品大片 | 精品高清美女精品国产区 | 国产麻豆果冻传媒在线观看 | 天天射天天拍 | 国产精品一区二区三区免费看 | 国内成人综合 | 精品视频999| 亚洲精品麻豆视频 | 国产精选在线 | japanese黑人亚洲人4k | 日韩免费看的电影 | 亚洲精品久久久久中文字幕m男 | 久久不卡国产精品一区二区 | 香蕉影院在线观看 | www激情com | 国产一级一片免费播放放a 一区二区三区国产欧美 | 中文字幕一区三区 | 在线 国产一区 | 日本性生活免费看 | 久草在线手机视频 | 中文字幕人成乱码在线观看 | 天天狠狠 | 日韩二区在线播放 | 麻豆国产视频下载 | av看片网址 | 天天天天天天天操 | 久久日本视频 | 久久久久国产精品厨房 | av免费在线播放 | 成人天堂网 | 亚洲免费不卡 | 国产精品久久久区三区天天噜 | 天天做综合网 | 中文字幕免费不卡视频 | 免费看国产曰批40分钟 | 日本性xxx | 国产高清在线免费 | 亚洲最大的av网站 | 在线免费观看视频你懂的 | 久草视频在线免费 | 狠狠的日| 在线视频手机国产 | 国产精品久久久久久久免费观看 | 国产精品成人品 | 五月开心婷婷网 | 亚洲成色777777在线观看影院 | 日韩高清在线一区 | 日韩av影视在线观看 | 国产 视频 高清 免费 | 99精品国产一区二区 | 成年人电影免费在线观看 | 久久精品中文字幕 | 久久国产精品视频免费看 | 亚洲欧美国产精品 | 国产福利在线免费 | 亚洲精品中文字幕视频 | 欧美日韩亚洲一 | 久久久久国产成人精品亚洲午夜 | 麻豆系列在线观看 | 在线观看亚洲成人 | 曰本免费av | 久久中文字幕导航 | 国产精品毛片久久久久久久 | 黄色小网站免费看 | 又粗又长又大又爽又黄少妇毛片 | 日日爱av| 国产亚洲字幕 | av资源中文字幕 | 久草电影在线观看 | 91麻豆精品国产91久久久无需广告 | 999色视频 | 久久99精品久久久久久三级 | 99re8这里有精品热视频免费 | 欧美亚洲国产日韩 | 免费在线观看的av网站 | av福利在线导航 | 97福利视频 | 国产精品一区二区久久 | av在线免费播放 | 中文字幕日韩精品有码视频 | 91桃色在线免费观看 | 在线观看午夜av | 黄色av免费 | 久久国产精品视频观看 | 亚洲欧美国产精品久久久久 | 性色va| 久久婷婷一区二区三区 | 91av精品 | 高清精品在线 | 精品国产免费观看 | 国产 日韩 中文字幕 | 亚洲国产精品视频 | 91精品人成在线观看 | 激情丁香月 | 国产乱码精品一区二区三区介绍 | 国产在线精品一区 | 久草久草视频 | 国产精品久久久久一区二区国产 | 一二三区视频在线 | 天天操天天色天天射 | 亚洲 欧美 变态 国产 另类 | 免费视频你懂的 | 2018亚洲男人天堂 | 波多野结衣网址 | 在线观看免费中文字幕 | 人人澡人人爽欧一区 | 久久手机视频 | 成人免费视频在线观看 | 男女激情片在线观看 | 亚洲精品mv在线观看 | 久久免费视频网 | 亚洲精品字幕在线 | 五月婷婷开心 | 欧美精品少妇xxxxx喷水 | 久久在线一区 | 欧美 日韩精品 | 日韩欧美国产精品 | 国产成人高清 | 国产精品v欧美精品v日韩 | 天天色天天色天天色 | 久久伊人精品一区二区三区 | 午夜视频在线观看欧美 | 国产特级毛片aaaaaa毛片 | 久久不卡国产精品一区二区 | 欧美一级电影免费观看 | www99精品 | 精品国产亚洲一区二区麻豆 | 久久精品99国产精品酒店日本 | 97国产超碰 | 日韩精品在线一区 | 最新国产一区二区三区 | 在线观看精品视频 | 91精品1区 | 国产日韩视频在线 | 在线精品亚洲一区二区 | 色91在线视频 | 久草亚洲视频 | 久久久久国产成人免费精品免费 | 99久久婷婷国产综合精品 | 久久成人亚洲欧美电影 | 久久久免费国产 | 久草精品在线播放 | 玖草影院 | 国产欧美日韩一区 | 激情五月看片 | 天天干天天拍天天操 | 在线视频 国产 日韩 | 一区二区三区免费在线观看 | 欧美在一区| 亚洲成人欧美 | 国产精品不卡一区 | 亚洲日本激情 | 久久精品亚洲综合专区 | 欧亚日韩精品一区二区在线 | 久久精品一区二区三区中文字幕 | 一区视频在线 | 在线观看一区 | 免费a级毛片在线看 | 中文字幕中文字幕在线中文字幕三区 | 在线看一级片 | 免费在线播放视频 | 一区二区三区在线免费观看视频 | 五月天堂网 | 天天色天天射综合网 | 国产一区二区三区高清播放 | 美女久久久久久久久久久 | 97视频资源 | 2019免费中文字幕 | 伊人天天狠天天添日日拍 | 免费在线激情视频 | 一区 二区电影免费在线观看 | 国产99区 | 黄色免费大片 | 不卡的av | 久久国产精品免费 | 精品麻豆入口免费 | 五月天婷婷免费视频 | 欧美激情精品久久久久久免费印度 | 亚洲 成人 欧美 | 91高清完整版在线观看 | 亚洲午夜大片 | 又黄又刺激视频 | 国产 亚洲 欧美 在线 | 亚洲综合视频在线 | 中文字幕在线观看三区 | 色网站在线观看 | 欧美日韩三级 | 国产精品视频免费观看 | 懂色av一区二区三区蜜臀 | www.久久com| 99久久婷婷国产综合亚洲 | 婷婷丁香自拍 | 玖玖玖国产精品 | 中文字幕在线不卡国产视频 | 日日摸日日碰 | 亚洲天天综合网 | 国语麻豆 | 日韩免费av片 | 国产成人亚洲在线观看 | 国产精彩视频一区二区 | 天天色天天射天天综合网 | 99久久精品免费看国产四区 | 91久久黄色 | 日韩av男人的天堂 | 国产成人av网 | 夜夜视频资源 | av在线免费观看黄 | 九九在线视频免费观看 | 99热99热 | 国产日韩欧美在线影视 | 天天看天天干 | 天天综合天天做 | 热久久视久久精品18亚洲精品 | 日韩av电影一区 | 九月婷婷色 | 超碰97国产在线 | 国际精品久久久久 | 人人爽人人爽 | 毛片www| 99久久精品国产一区二区三区 | 玖草在线观看 | 丰满少妇一级 | 日韩字幕在线观看 | 成人精品国产免费网站 | 久久综合婷婷综合 | 一级成人在线 | 精品免费久久 | 国产二区精品 | 亚洲h色精品 | 国产精品麻豆三级一区视频 | 国产精品久久久久永久免费 | 国内揄拍国产精品 | 99在线免费视频 | 91视视频在线直接观看在线看网页在线看 | 99这里只有精品视频 | 午夜av一区 | 99久精品视频 | 中文字幕视频网站 | 在线观看日本高清mv视频 | 久久精选 | 国产二级视频 | 欧美日韩后 | 美女久久99| 亚洲最大成人免费网站 | 综合色中文 | 久热超碰| 欧美日韩三级在线观看 | 人人爱人人舔 | 韩国av一区二区 | 视频一区二区精品 | 国产资源在线播放 | 国产精品一区二区美女视频免费看 | 四虎免费av| 久久r精品 | 国产精品久久网站 | 性日韩欧美在线视频 | 精品在线一区二区 | 天天综合久久综合 | 日韩精品欧美专区 | .精品久久久麻豆国产精品 亚洲va欧美 | 精品久久久久久国产91 | 中文字幕av在线 | 91av社区| 天天曰天天射 | 一区二区三区三区在线 | 91热视频| 久久综合在线 | 欧美另类xxxxx | 亚洲视频免费在线观看 | 九热在线| 97在线视频观看 | 人人舔人人舔 | 免费视频久久 | 国产做a爱一级久久 | 久久国产品| 国产精品18久久久久久久网站 | 日韩大片在线播放 | 国产精品18久久久 | 麻豆国产精品va在线观看不卡 | 日韩精品一区二区三区中文字幕 | 99精品国产免费久久久久久下载 | 免费av的网站 | 粉嫩av一区二区三区入口 | 亚洲成人精品在线 | 国产精品美女久久久久久久久 | 欧美成人手机版 | 欧美男女爱爱视频 | 欧美激情第十页 | 成人性生交大片免费看中文网站 | 午夜影视一区 | 狠狠色丁香久久婷婷综 | 国产精品99久久久久久有的能看 | av一区在线播放 | 日韩av影片在线观看 | 波多野结衣最新 | 日韩视频在线不卡 | 婷婷丁香视频 | 国产精品国产三级国产 | 日韩精品中文字幕在线观看 | 国产精品a久久 | 色狠狠操 | 日韩精品视频免费看 | 黄av免费| 日本二区三区在线 | 黄色国产大片 | 看国产黄色大片 | 91香蕉亚洲精品 | 九九久久久久久久久激情 | 国产不卡毛片 | 午夜精品福利一区二区三区蜜桃 | 99免费在线观看视频 | 激情网综合 | 国产不卡一二三区 | 精品伦理一区二区三区 | 国产精品免费观看网站 | 97视频总站| 日韩黄在线观看 | 国产免费大片 | 黄视频色网站 | 成人免费视频观看 | 在线观看午夜av | 色综合狠狠干 | 狠狠色丁香婷婷综合视频 | 91禁在线看| 天天射天天干天天操 | 欧美性成人 | 国产黄色a | 久草视频看看 | 亚洲欧美日韩精品久久奇米一区 | 在线视频 亚洲 | 超碰个人在线 | 黄色成人在线 | 国产高h视频 | 激情深爱五月 | 国产一级片视频 | 99国内精品久久久久久久 | 麻豆影视网站 | 91在线视频在线观看 | 黄色官网在线观看 | 亚洲欧美视屏 | 久久精品99国产精品酒店日本 | 98精品国产自产在线观看 | 日韩精品在线免费观看 | 国产专区在线播放 | 国产精品青青 | 国产精品理论片 | 黄色av网站在线观看免费 | 日本中文字幕在线免费观看 | 久久综合中文字幕 | 欧美粗又大 | 99精品久久99久久久久 | 日韩精品久久一区二区 | 日本狠狠色 | 高清不卡免费视频 | 欧美日韩天堂 | 99久久精 | 久黄色| 国产高清福利在线 | 亚洲人成人天堂h久久 | 亚洲成成品网站 | 久久久久久久久久久电影 | 亚洲精品18p | 亚洲黄色软件 | 9在线观看免费 | 高潮久久久久久久久 | 亚洲欧洲国产精品 | 亚洲三级网 | 色婷婷精品大在线视频 | 日韩精品久久一区二区 | av网站免费看 | 91九色免费视频 | 麻豆影视网 | 精品1区二区 | 国产伦精品一区二区三区四区视频 | 国产精品视频地址 | 日本最新中文字幕 | 九九热免费精品视频 | 亚洲最新视频在线 | 国产一区二区三区 在线 | 亚洲精品国产品国语在线 | www.久久久.com | 麻豆av一区二区三区在线观看 | 成片免费观看视频999 | 欧美a视频在线观看 | 日韩乱理 | 国产丝袜一区二区三区 | 免费高清在线视频一区· | 久草视频观看 | 日韩激情久久 | 999久久久久久久久久久 | 国产成人精品一区二区在线观看 | 免费看一级特黄a大片 | 国产精品高清免费在线观看 | 日韩免费观看一区二区三区 | 免费大片黄在线 | 丁香视频五月 | 亚洲精品一区二区18漫画 | 日本丰满少妇免费一区 | 激情丁香综合五月 | 一区二区三区av在线 | 成人在线免费视频观看 | 亚洲自拍偷拍色图 | 五月天综合色 | 久久综合国产伦精品免费 | 91精品国产麻豆 | 国内亚洲精品 | 久久96国产精品久久99软件 | 色综合天天狠狠 | 国产高清永久免费 | 操操操人人 | 国产护士hd高朝护士1 | 亚洲午夜不卡 | 天天激情综合网 | 久草免费福利在线观看 | 国产精品不卡视频 | 国产精品免费不卡 | 激情偷乱人伦小说视频在线观看 | 亚洲欧美视频在线 | 精品久久久久一区二区国产 | 日韩大片在线播放 | 黄色电影网站在线观看 | 蜜臀精品久久久久久蜜臀 | 久久99久久99免费视频 | 91九色国产 | 成人在线你懂得 | 99国产精品免费网站 | 色综合夜色一区 | 人人看黄色 | 欧美一级久久久 | 久久午夜影院 | 五月婷婷视频在线 | 日韩精品一区二区在线 | 久久久久观看 | 黄色av网站在线免费观看 | 国产在线国偷精品产拍免费yy | 不卡视频国产 | 久久国产精品99久久久久久丝袜 | 九九免费精品视频 | 超碰免费成人 | 中文字幕国产精品一区二区 | 午夜av电影| 日韩婷婷| 亚洲小视频在线 | 黄色精品一区二区 | 天天综合日 | 99久久精品国产亚洲 | 欧美二区视频 | 国产精品美女久久久久久久 | 日韩激情在线 | 久久精品在线 | 色综合久久88色综合天天 | 欧美成人久久 | 最近日本字幕mv免费观看在线 | av理论电影 | 西西4444www大胆艺术 | 国产.精品.日韩.另类.中文.在线.播放 | 91中文在线观看 | 国产福利91精品一区二区三区 | 在线观看电影av | 天天操比 | 成人av电影免费在线观看 | 久久久久福利视频 | 国产精品久久三 | 国产精品一区二区吃奶在线观看 | 97狠狠干 | 国产精品麻豆91 | 就要干b | 91在线91拍拍在线91 | 一区久久久 | 一本色道久久综合亚洲二区三区 | 在线黄色免费 | 4438全国亚洲精品在线观看视频 | 在线精品视频免费播放 | 91av视频播放 | 麻豆av一区二区三区在线观看 | 就操操久久 | 国产精品一区二区久久国产 | 日韩在线观看你懂得 | 日韩欧美一区视频 | 精品久久久久久久久中文字幕 | 99久久精品免费看国产一区二区三区 | 欧美精品久久久久久久久久久 | 97成人在线观看 | 97色狠狠 | 久久免费在线观看 | 成人免费网站在线观看 | 狠狠操天天射 | 婷婷在线网站 | 欧美日韩亚洲在线 | 国产在线欧美在线 | 国产精品一区二区av | www.亚洲激情.com| 中文一区二区三区在线观看 | 国产尤物在线观看 | 精产嫩模国品一二三区 | 亚洲一区美女视频在线观看免费 | 久久老司机精品视频 | 久久亚洲影院 | 久黄色| 日本黄色免费电影网站 | 在线中文字母电影观看 | 国产精品久久久久久久久蜜臀 | 天天爱天天舔 | 日韩高清无线码2023 | 国产精品免费观看视频 | 手机在线看片日韩 | 超碰夜夜 | 久久成人高清 | 国产精品视频永久免费播放 | 成人全视频免费观看在线看 | 97精品国产97久久久久久免费 | 操操日 | 欧美日韩aa | 中文字幕在线电影 | 日韩高清 一区 | 天天操夜夜操天天射 | 欧美日韩免费视频 | 精品一区二区av | 顶级bbw搡bbbb搡bbbb| 欧美网址在线观看 | av中文字幕第一页 | 欧美网址在线观看 | 亚洲午夜精品一区二区三区电影院 | 久久久久在线视频 | 久久久久久久亚洲精品 | 国产专区免费 | av九九九| www.伊人网 | 中文字幕在线免费97 | 日本爱爱免费视频 | av免费片| 黄色大片中国 | 精品国产诱惑 | 日韩二区在线观看 | 欧美日韩国产一区二区在线观看 | 天天爽天天碰狠狠添 | 日本精品在线视频 | 最近中文字幕免费 | 中文字幕免费在线 | 国产亚洲精品久久久久久久久久久久 | 久久综合久久综合久久 | 国产精品毛片一区视频 | 日韩女同av | 久久亚洲福利 | 国产一级精品绿帽视频 | 麻豆传媒视频观看 | 成人免费视频播放 | 日韩理论影院 | 国产一级三级 | 国产一区二区播放 | 亚洲综合小说电影qvod | 久久免费视频国产 | 国产精品白浆视频 | 激情深爱.com| 一区二区三区高清在线观看 | 91高清在线| 亚洲精品免费观看视频 | aaa亚洲精品一二三区 | 97在线观看视频国产 | 日韩精品高清不卡 | 国产精品毛片一区二区 | 色网站在线免费观看 | 日韩欧美在线观看 | 狠狠色丁香婷婷综合橹88 | 日日夜夜狠狠操 | 成人污视频在线观看 | 久操视频在线观看 | 国产精品久久毛片 | 久久久久久黄 | 涩涩网站在线播放 | 欧美性极品xxxx做受 | 国产五月婷 | 91av在| 婷婷色综合色 | 91高清不卡 |