IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> HC32L17x的LL驱动库之GPIO -> 正文阅读

[嵌入式]HC32L17x的LL驱动库之GPIO

?? ?#define FLASH_BASE?? ??? ??? ??? ?0x00000000U
?? ?#define FLASH_END?? ??? ??? ??? ?0x0001FFFFU
?? ?#define FLASH_BANK1_END?? ??? ??? ?0x0001FFFFU
?? ?#define SRAM_BASE?? ??? ??? ??? ?0x20000000U
?? ?#define SRAM_ENDsss?? ??? ??? ??? ?0x20003FFFU
?? ?#define PERIPH_BASE?? ??? ??? ??? ?0x40000000U
?? ?//#define SRAM_BB_BASE?? ??? ??? ?0x22000000U
?? ?//#define PERIPH_BB_BASE?? ??? ?0x42000000U
?? ?#define DBGMCU_BASE?? ??? ??? ??? ?0x04002038U?
?? ?#define GPIO_SEL_OFFSET?? ??? ??? ?(0x100/4)

?? ?//===产品身份标识
?? ?#define UID_BASE?? ??? ??? ??? ?0x00100E74U?
?? ?//===产品型号
?? ?#define PRODUCT_BASE?? ??? ??? ?0x00100C60U?
?? ?//===Flash容量
?? ?#define FLASH_SIZE_BASE?? ??? ??? ?0x00100C70U?
?? ?//===SRAM容量
?? ?#define SRAM_SIZE_BASE?? ??? ??? ?0x00100C74U?
?? ?//===引脚数量
?? ?#define PIN_COUNT_BASE?? ??? ??? ?0x00100C7AU?

?? ?//===总线基地址
?? ?#define APB0PERIPH_BASE?? ??? ??? ?PERIPH_BASE
?? ?#define APB1PERIPH_BASE?? ??? ??? ?(PERIPH_BASE + 0x00004000U)
?? ?#define AHBPERIPH_BASE?? ??? ??? ?(PERIPH_BASE + 0x00020000U)

?? ?//===外设基地址
?? ?#define UART0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000000U)
?? ?#define UART1_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000100U)
?? ?#define LPUART0_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00000200U)

?? ?#define I2C0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000400U)
?? ?#define SPI0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000800U)

?? ?#define TIM0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000C00U)
?? ?#define TIM1_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000D00U)
?? ?#define TIM2_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000E00U)
?? ?#define LPTIM0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000F00U)
?? ?#define LPTIM1_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000F40U)
?? ?#define WDT_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00000F80U)
?? ?#define PCA_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00001000U)
?? ?#define RTC_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00001400U)

?? ?//===时钟校准
?? ?#define TRIM_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00001800U)
?? ?#define RCC_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002000U)
?? ?#define BGR_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002400U)
?? ?#define ADC0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002404U)
?? ?#define ADC_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002404U)
?? ?#define VC_BASE?? ??? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002410U)
?? ?#define OPA_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002430U)
?? ?#define LVD_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002428U)
?? ?#define DAC0_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002500U)
?? ?#define DAC_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00002500U)
?? ?#define TIM4_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00003000U)
?? ?#define TIM5_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00003400U)
?? ?#define TIM6_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00003800U)

?? ?#define LPUART1_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00004000U)
?? ?#define I2C1_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00004400U)
?? ?#define SPI1_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00004800U)
?? ?#define RNG_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00004C00U)
?? ?#define PCNT_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00005400U)
?? ?#define TIM3_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00005800U)
?? ?#define LCD_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00005C00U)
?? ?#define UART2_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00006000U)
?? ?#define UART3_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00006400U)

?? ?#define FLASH_CTR_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020000U)
?? ?#define RAM_CTR_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020400U)
?? ?#define CRC_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00020900U)
?? ?#define DMAC_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00021000U)
?? ?#define AES_BASE?? ??? ??? ??? ?(APB0PERIPH_BASE + 0x00021400U)

?? ?//===端口功能选择寄存器
?? ?#define GPIOA_SEL_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020C00U)
?? ?#define GPIOB_SEL_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020C40U)
?? ?#define GPIOC_SEL_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020C80U)
?? ?#define GPIOD_SEL_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020CC0U)

?? ?#define GPIOE_SEL_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00021C00U)
?? ?#define GPIOF_SEL_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00021C40U)

?? ?//===端口特殊功能,辅助功能寄存器
?? ?#define GPIO_AF_BASE?? ??? ??? ?(APB0PERIPH_BASE + 0x00020F04U)

//===定义端口功能
?? ?#define GPIOA?? ??? ??? ??? ??? ?((GPIO_TypeDef *) GPIOA_BASE)
?? ?#define GPIOB?? ??? ??? ??? ??? ?((GPIO_TypeDef *) GPIOB_BASE)
?? ?#define GPIOC?? ??? ??? ??? ??? ?((GPIO_TypeDef *) GPIOC_BASE)
?? ?#define GPIOD?? ??? ??? ??? ??? ?((GPIO_TypeDef *) GPIOD_BASE)
?? ?#define GPIOE?? ??? ??? ??? ??? ?((GPIO_TypeDef *) GPIOE_BASE)
?? ?#define GPIOF?? ??? ??? ??? ??? ?((GPIO_TypeDef *) GPIOF_BASE)

?? ?#define GPIO_SELA?? ??? ??? ??? ?((GPIO_SEL_TypeDef *) GPIOA_BASE)
?? ?#define GPIO_SELB?? ??? ??? ??? ?((GPIO_SEL_TypeDef *) GPIOB_BASE)
?? ?#define GPIO_SELC?? ??? ??? ??? ?((GPIO_SEL_TypeDef *) GPIOC_BASE)
?? ?#define GPIO_SELD?? ??? ??? ??? ?((GPIO_SEL_TypeDef *) GPIOD_BASE)
?? ?#define GPIO_SELE?? ??? ??? ??? ?((GPIO_SEL_TypeDef *) GPIOE_BASE)
?? ?#define GPIO_SELF?? ??? ??? ??? ?((GPIO_SEL_TypeDef *) GPIOF_BASE)

#pragma region GPIO
?? ?//===端口复用功能配置寄存器
?? ?typedef struct
?? ?{
?? ??? ?__IO uint32_t SEL00;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL01;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL02;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL03;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL04;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL05;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL06;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL07;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL08;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL09;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL10;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL11;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL12;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL13;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL14;?? ??? ?//---端口选择功能
?? ??? ?__IO uint32_t SEL15;?? ??? ?//---端口选择功能
?? ?} GPIO_SEL_TypeDef;

?? ?//===端口通用功能配置寄存器
?? ?typedef struct
?? ?{
?? ??? ?__IO uint32_t DIR;?? ??? ?//---配置输入输出模式模式
?? ??? ?__IO uint32_t IDR;?? ??? ?//---输入数据寄存器
?? ??? ?__IO uint32_t ODR;?? ??? ?//---输出数据寄存器
?? ??? ?__IO uint32_t ADS;?? ??? ?//---数模配置寄存器
?? ??? ?__IO uint32_t BSET;?? ??? ?//---置位寄存器
?? ??? ?__IO uint32_t BCLR;?? ??? ?//---清零寄存器
?? ??? ?__IO uint32_t BSETCLR;?? ?//---置位清零寄存器

?? ??? ?__IO uint32_t DRIVER;?? ?//---驱动能力寄存器
?? ??? ?__IO uint32_t PU;?? ??? ?//---上拉使能寄存器
?? ??? ?__IO uint32_t PD;?? ??? ?//---下拉使能寄存器
?? ??? ?__IO uint32_t OD;?? ??? ?//---开漏输出寄存器
?? ?} GPIO_TypeDef;

?? ?//===端口辅助功能配置寄存器
?? ?typedef struct
?? ?{
?? ??? ?__IO uint32_t CTRL1;?? ?//---端口辅助功能配置寄存器1
?? ??? ?__IO uint32_t CTRL2;?? ?//---端口辅助功能配置寄存器1
?? ??? ?__IO uint32_t TIMGS;?? ?//---端口辅助定时器门控选择
?? ??? ?__IO uint32_t TIMES;?? ?//---端口辅助定时器ETR控选择
?? ??? ?__IO uint32_t TIMCPS;?? ?//---端口辅助定时器输入捕获选择
?? ??? ?__IO uint32_t PCAS;?? ??? ?//---端口辅助PCA捕获选择
?? ??? ?__IO uint32_t PCNTS;?? ?//---端口辅助PCNT脉冲输入选择
?? ?} GPIO_AF_TypeDef;

?? ?#define GPIO_AF_CTRL1_IR_POS?? ??? ??? ?14
?? ?#define GPIO_AF_CTRL1_IR_MASK?? ??? ??? ?(0x01UL<<GPIO_AF_CTRL1_IR_POS)
?? ?#define GPIO_AF_CTRL1_IR?? ??? ??? ??? ?GPIO_AF_CTRL1_IR_MASK

?? ?#define GPIO_AF_CTRL1_HCLK_EN_POS?? ??? ?13
?? ?#define GPIO_AF_CTRL1_HCLK_EN_MASK?? ??? ?(0x01UL<<GPIO_AF_CTRL1_HCLK_EN_POS)
?? ?#define GPIO_AF_CTRL1_HCLK_EN?? ??? ??? ?GPIO_AF_CTRL1_HCLK_EN_MASK

?? ?#define GPIO_AF_CTRL1_PCLK_EN_POS?? ??? ?13
?? ?#define GPIO_AF_CTRL1_PCLK_EN_MASK?? ??? ?(0x01UL<<GPIO_AF_CTRL1_PCLK_EN_POS)
?? ?#define GPIO_AF_CTRL1_PCLK_EN?? ??? ??? ?GPIO_AF_CTRL1_PCLK_EN_MASK

?? ?#define GPIO_AF_CTRL1_HCLK_SEL_POS?? ??? ?10
?? ?#define GPIO_AF_CTRL1_HCLK_SEL_MASK?? ??? ?(0x03UL<<GPIO_AF_CTRL1_HCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_HCLK_SEL?? ??? ??? ?GPIO_AF_CTRL1_HCLK_SEL_MASK

?? ?#define GPIO_AF_CTRL1_HCLK_PRS_1?? ??? ?(0x00UL<<GPIO_AF_CTRL1_HCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_HCLK_PRS_2?? ??? ?(0x01UL<<GPIO_AF_CTRL1_HCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_HCLK_PRS_4?? ??? ?(0x02UL<<GPIO_AF_CTRL1_HCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_HCLK_PRS_8?? ??? ?(0x03UL<<GPIO_AF_CTRL1_HCLK_SEL_POS)

?? ?#define GPIO_AF_CTRL1_PCLK_SEL_POS?? ??? ?8
?? ?#define GPIO_AF_CTRL1_PCLK_SEL_MASK?? ??? ?(0x03UL<<GPIO_AF_CTRL1_PCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_PCLK_SEL?? ??? ??? ?GPIO_AF_CTRL1_PCLK_SEL_MASK

?? ?#define GPIO_AF_CTRL1_PCLK_PRS_1?? ??? ?(0x00UL<<GPIO_AF_CTRL1_PCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_PCLK_PRS_2?? ??? ?(0x01UL<<GPIO_AF_CTRL1_PCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_PCLK_PRS_4?? ??? ?(0x02UL<<GPIO_AF_CTRL1_PCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL1_PCLK_PRS_8?? ??? ?(0x03UL<<GPIO_AF_CTRL1_PCLK_SEL_POS)

?? ?#define GPIO_AF_CTRL1_SPI0_SS_POS?? ??? ?4
?? ?#define GPIO_AF_CTRL1_SPI0_SS_MASK?? ??? ?(0x0FUL<<GPIO_AF_CTRL1_SPI0_SS_POS)
?? ?#define GPIO_AF_CTRL1_SPI0_SS?? ??? ??? ?GPIO_AF_CTRL1_SPI0_SS_MASK

?? ?#define GPIO_AF_CTRL1_EXT_CLK_POS?? ??? ?0
?? ?#define GPIO_AF_CTRL1_EXT_CLK_MASK?? ??? ?(0x0FUL<<GPIO_AF_CTRL1_EXT_CLK_POS)
?? ?#define GPIO_AF_CTRL1_EXT_CLK?? ??? ??? ?GPIO_AF_CTRL1_EXT_CLK_MASK

?? ?#define GPIO_AF_CTRL2_AHB_POS?? ??? ??? ?15
?? ?#define GPIO_AF_CTRL2_AHB_MASK?? ??? ??? ?(0x01UL<<GPIO_AF_CTRL2_AHB_POS)
?? ?#define GPIO_AF_CTRL2_AHB?? ??? ??? ??? ?GPIO_AF_CTRL2_AHB_MASK

?? ?#define GPIO_AF_CTRL2_TCLK_DIV_POS?? ??? ?6
?? ?#define GPIO_AF_CTRL2_TCLK_DIV_MASK?? ??? ?(0x03UL<<GPIO_AF_CTRL2_TCLK_DIV_POS)
?? ?#define GPIO_AF_CTRL2_TCLK_DIV?? ??? ??? ?GPIO_AF_CTRL2_TCLK_DIV_MASK

?? ?#define GPIO_AF_CTRL2_TCLK_SEL_POS?? ??? ?4
?? ?#define GPIO_AF_CTRL2_TCLK_SEL_MASK?? ??? ?(0x03UL<<GPIO_AF_CTRL2_TCLK_SEL_POS)
?? ?#define GPIO_AF_CTRL2_TCLK_SEL?? ??? ??? ?GPIO_AF_CTRL2_TCLK_SEL_MASK

?? ?#define GPIO_AF_CTRL2_SPI1_SS_POS?? ??? ?0
?? ?#define GPIO_AF_CTRL2_SPI1_SS_MASK?? ??? ?(0x0FUL<<GPIO_AF_CTRL2_SPI1_SS_POS)
?? ?#define GPIO_AF_CTRL2_SPI1_SS?? ??? ??? ?GPIO_AF_CTRL2_SPI1_SS_MASK

?? ?//===端口定时器门控选择
?? ?#define GPIO_AF_TIMGS_LPTIM0_POS?? ??? ?12
?? ?#define GPIO_AF_TIMGS_LPTIM0_MASK?? ??? ?(0x07UL<<GPIO_AF_TIMGS_LPTIM0_POS)
?? ?#define GPIO_AF_TIMGS_LPTIM0?? ??? ??? ?GPIO_AF_TIMGS_LPTIM0_MASK

?? ?#define GPIO_AF_TIMGS_TIM3_POS?? ??? ??? ?9
?? ?#define GPIO_AF_TIMGS_TIM3_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMGS_TIM3_POS)
?? ?#define GPIO_AF_TIMGS_TIM3?? ??? ??? ??? ?GPIO_AF_TIMGS_TIM3_MASK

?? ?#define GPIO_AF_TIMGS_TIM2_POS?? ??? ??? ?6
?? ?#define GPIO_AF_TIMGS_TIM2_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMGS_TIM2_POS)
?? ?#define GPIO_AF_TIMGS_TIM2?? ??? ??? ??? ?GPIO_AF_TIMGS_TIM2_MASK

?? ?#define GPIO_AF_TIMGS_TIM1_POS?? ??? ??? ?3
?? ?#define GPIO_AF_TIMGS_TIM1_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMGS_TIM1_POS)
?? ?#define GPIO_AF_TIMGS_TIM1?? ??? ??? ??? ?GPIO_AF_TIMGS_TIM1_MASK

?? ?#define GPIO_AF_TIMGS_TIM0_POS?? ??? ??? ?0
?? ?#define GPIO_AF_TIMGS_TIM0_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMGS_TIM0_POS)
?? ?#define GPIO_AF_TIMGS_TIM0?? ??? ??? ??? ?GPIO_AF_TIMGS_TIM0_MASK

?? ?//===定时器ETR输入选择
?? ?#define GPIO_AF_TIMES_LPTIM0_POS?? ??? ?12
?? ?#define GPIO_AF_TIMES_LPTIM0_MASK?? ??? ?(0x07UL<<GPIO_AF_TIMES_LPTIM0_POS)
?? ?#define GPIO_AF_TIMES_LPTIM0?? ??? ??? ?GPIO_AF_TIMES_LPTIM0_MASK

?? ?#define GPIO_AF_TIMES_TIM3_POS?? ??? ??? ?9
?? ?#define GPIO_AF_TIMES_TIM3_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMES_TIM3_POS)
?? ?#define GPIO_AF_TIMES_TIM3?? ??? ??? ??? ?GPIO_AF_TIMES_TIM3_MASK

?? ?#define GPIO_AF_TIMES_TIM2_POS?? ??? ??? ?6
?? ?#define GPIO_AF_TIMES_TIM2_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMES_TIM2_POS)
?? ?#define GPIO_AF_TIMES_TIM2?? ??? ??? ??? ?GPIO_AF_TIMES_TIM2_MASK

?? ?#define GPIO_AF_TIMES_TIM1_POS?? ??? ??? ?3
?? ?#define GPIO_AF_TIMES_TIM1_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMES_TIM1_POS)
?? ?#define GPIO_AF_TIMES_TIM1?? ??? ??? ??? ?GPIO_AF_TIMES_TIM1_MASK

?? ?#define GPIO_AF_TIMES_TIM0_POS?? ??? ??? ?0
?? ?#define GPIO_AF_TIMES_TIM0_MASK?? ??? ??? ?(0x07UL<<GPIO_AF_TIMES_TIM0_POS)
?? ?#define GPIO_AF_TIMES_TIM0?? ??? ??? ??? ?GPIO_AF_TIMES_TIM0_MASK

?? ?//===输入捕捉通道选择
?? ?#define GPIO_AF_TIMCPS_TIM3_CH0B_POS?? ?12
?? ?#define GPIO_AF_TIMCPS_TIM3_CH0B_MASK?? ?(0x07UL<<GPIO_AF_TIMCPS_TIM3_CH0B_POS)
?? ?#define GPIO_AF_TIMCPS_TIM3_CH0B?? ??? ?GPIO_AF_TIMCPS_TIM3_CH0B_MASK

?? ?#define GPIO_AF_TIMCPS_TIM3_CH0A_POS?? ?9
?? ?#define GPIO_AF_TIMCPS_TIM3_CH0A_MASK?? ?(0x07UL<<GPIO_AF_TIMCPS_TIM3_CH0A_POS)
?? ?#define GPIO_AF_TIMCPS_TIM3_CH0A?? ??? ?GPIO_AF_TIMCPS_TIM3_CH0A_MASK

?? ?#define GPIO_AF_TIMCPS_TIM2_CH0A_POS?? ?6
?? ?#define GPIO_AF_TIMCPS_TIM2_CH0A_MASK?? ?(0x07UL<<GPIO_AF_TIMCPS_TIM2_CH0A_POS)
?? ?#define GPIO_AF_TIMCPS_TIM2_CH0A?? ??? ?GPIO_AF_TIMCPS_TIM2_CH0A_MASK

?? ?#define GPIO_AF_TIMCPS_TIM1_CH0A_POS?? ?3
?? ?#define GPIO_AF_TIMCPS_TIM1_CH0A_MASK?? ?(0x07UL<<GPIO_AF_TIMCPS_TIM1_CH0A_POS)
?? ?#define GPIO_AF_TIMCPS_TIM1_CH0A?? ??? ?GPIO_AF_TIMCPS_TIM1_CH0A_MASK

?? ?#define GPIO_AF_TIMCPS_TIM0_CH0A_POS?? ?0
?? ?#define GPIO_AF_TIMCPS_TIM0_CH0A_MASK?? ?(0x07UL<<GPIO_AF_TIMCPS_TIM0_CH0A_POS)
?? ?#define GPIO_AF_TIMCPS_TIM0_CH0A?? ??? ?GPIO_AF_TIMCPS_TIM0_CH0A_MASK

?? ?//===PCA捕获选择
?? ?#define GPIO_AF_PCAS_LPTIM1_ETR_POS?? ??? ?9
?? ?#define GPIO_AF_PCAS_LPTIM1_ETR_MASK?? ?(0x07UL<<GPIO_AF_PCAS_LPTIM1_ETR_POS)
?? ?#define GPIO_AF_PCAS_LPTIM1_ETR?? ??? ??? ?GPIO_AF_PCAS_LPTIM1_ETR_MASK

?? ?#define GPIO_AF_PCAS_LPTIM1_GATE_POS?? ?6
?? ?#define GPIO_AF_PCAS_LPTIM1_GATE_MASK?? ?(0x07UL<<GPIO_AF_PCAS_LPTIM1_GATE_POS)
?? ?#define GPIO_AF_PCAS_LPTIM1_GATE?? ??? ?GPIO_AF_PCAS_LPTIM1_GATE_MASK

?? ?#define GPIO_AF_PCAS_PCA_EC1_POS?? ??? ?3
?? ?#define GPIO_AF_PCAS_PCA_EC1_MASK?? ??? ?(0x07UL<<GPIO_AF_PCAS_PCA_EC1_POS)
?? ?#define GPIO_AF_PCAS_PCA_EC1?? ??? ??? ?GPIO_AF_PCAS_PCA_EC1_MASK
?? ?
?? ?#define GPIO_AF_PCAS_PCA_CH0_POS?? ??? ?0
?? ?#define GPIO_AF_PCAS_PCA_CH0_MASK?? ??? ?(0x07UL<<GPIO_AF_PCAS_PCA_CH0_POS)
?? ?#define GPIO_AF_PCAS_PCA_CH0?? ??? ??? ?GPIO_AF_PCAS_PCA_CH0_MASK

?? ?//===PCNT输入选择
?? ?#define GPIO_AF_PCNTS_PCNT_S1_POS?? ??? ?2
?? ?#define GPIO_AF_PCNTS_PCNT_S1_MASK?? ??? ?(0x03UL<<GPIO_AF_PCNTS_PCNT_S1_POS)
?? ?#define GPIO_AF_PCNTS_PCNT_S1?? ??? ??? ?GPIO_AF_PCNTS_PCNT_S1_MASK

?? ?#define GPIO_AF_PCNTS_PCNT_S0_POS?? ??? ?0
?? ?#define GPIO_AF_PCNTS_PCNT_S0_MASK?? ??? ?(0x03UL<<GPIO_AF_PCNTS_PCNT_S0_POS)
?? ?#define GPIO_AF_PCNTS_PCNT_S0?? ??? ??? ?GPIO_AF_PCNTS_PCNT_S0_MASK

#pragma endregion

?

#ifndef HC32L1XX_LL_GPIO_H_
#define HC32L1XX_LL_GPIO_H_

#ifdef __cplusplus
extern "C" {
#endif?
?? ?
?? ?#include "hc32l1xx.h"
?? ?#include "string.h"
?? ?///
?? ?//===GPIO的复用模式
?? ?#define LL_GPIO_AF_0?? ??? ??? ??? ??? ?(0x0000000U)?
?? ?#define LL_GPIO_AF_1?? ??? ??? ??? ??? ?(0x0000001U)?
?? ?#define LL_GPIO_AF_2?? ??? ??? ??? ??? ?(0x0000002U)?
?? ?#define LL_GPIO_AF_3?? ??? ??? ??? ??? ?(0x0000003U)?
?? ?#define LL_GPIO_AF_4?? ??? ??? ??? ??? ?(0x0000004U)?
?? ?#define LL_GPIO_AF_5?? ??? ??? ??? ??? ?(0x0000005U)?
?? ?#define LL_GPIO_AF_6?? ??? ??? ??? ??? ?(0x0000006U)?
?? ?#define LL_GPIO_AF_7?? ??? ??? ??? ??? ?(0x0000007U)?
?? ?#define LL_GPIO_AF_8?? ??? ??? ??? ??? ?(0x0000008U)?
?? ?#define LL_GPIO_AF_9?? ??? ??? ??? ??? ?(0x0000009U)?
?? ?#define LL_GPIO_AF_10?? ??? ??? ??? ??? ?(0x000000AU)?
?? ?#define LL_GPIO_AF_11?? ??? ??? ??? ??? ?(0x000000BU)?
?? ?#define LL_GPIO_AF_12?? ??? ??? ??? ??? ?(0x000000CU)?
?? ?#define LL_GPIO_AF_13?? ??? ??? ??? ??? ?(0x000000DU)?
?? ?#define LL_GPIO_AF_14?? ??? ??? ??? ??? ?(0x000000EU)?
?? ?#define LL_GPIO_AF_15?? ??? ??? ??? ??? ?(0x000000FU)?

?? ?//===选择PIN的序号
?? ?#define LL_GPIO_PIN_0?? ??? ??? ??? ??? ?(0x1U<<0)
?? ?#define LL_GPIO_PIN_1?? ??? ??? ??? ??? ?(0x1U<<1)
?? ?#define LL_GPIO_PIN_2?? ??? ??? ??? ??? ?(0x1U<<2)
?? ?#define LL_GPIO_PIN_3?? ??? ??? ??? ??? ?(0x1U<<3)
?? ?#define LL_GPIO_PIN_4?? ??? ??? ??? ??? ?(0x1U<<4)
?? ?#define LL_GPIO_PIN_5 ? ?? ??? ??? ??? ?(0x1U<<5)
?? ?#define LL_GPIO_PIN_6 ? ?? ??? ??? ??? ?(0x1U<<6)
?? ?#define LL_GPIO_PIN_7 ? ?? ??? ??? ??? ?(0x1U<<7)
?? ?#define LL_GPIO_PIN_8 ? ?? ??? ??? ??? ?(0x1U<<8)
?? ?#define LL_GPIO_PIN_9 ? ?? ??? ??? ??? ?(0x1U<<9)
?? ?#define LL_GPIO_PIN_10 ??? ??? ??? ??? ?(0x1U<<10)
?? ?#define LL_GPIO_PIN_11 ??? ??? ??? ??? ?(0x1U<<11)
?? ?#define LL_GPIO_PIN_12 ??? ??? ??? ??? ?(0x1U<<12)
?? ?#define LL_GPIO_PIN_13 ??? ??? ??? ??? ?(0x1U<<13)
?? ?#define LL_GPIO_PIN_14 ??? ??? ??? ??? ?(0x1U<<14)
?? ?#define LL_GPIO_PIN_15 ??? ??? ??? ??? ?(0x1U<<15)
?? ?#define LL_GPIO_PIN_ALL ?? ??? ??? ??? ?(LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3\
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7\
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?LL_GPIO_PIN_8|LL_GPIO_PIN_9|LL_GPIO_PIN_10|LL_GPIO_PIN_11\
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15)

?? ?//===GPIO模式
?? ?#define LL_GPIO_MODE_ANALOG ? ? ? ? ? ? ?0x00000000U
?? ?#define LL_GPIO_MODE_FLOATING ? ? ? ? ? ?0x00000001U
?? ?#define LL_GPIO_MODE_INPUT ? ? ? ? ? ? ? 0x00000002U
?? ?#define LL_GPIO_MODE_OUTPUT ? ? ? ? ? ? ?0x00000003U
?? ?#define LL_GPIO_MODE_ALTERNATE ? ? ? ? ? 0x00000004U

?? ?//===GPIO输出模式
?? ?#define LL_GPIO_OUTPUT_PUSHPULL ? ? ? ? ?0x00000000U ? ? ? ? ??
?? ?#define LL_GPIO_OUTPUT_OPENDRAIN ? ? ? ? 0x00000001U ? ? ? ? ??

?? ?//===GPIO输出评率
?? ?#define LL_GPIO_MODE_OUTPUT_10MHz ? ? ? ?0x00000000U ? ? ? ? ?
?? ?#define LL_GPIO_MODE_OUTPUT_2MHz ? ? ? ? 0x00000001U ? ? ? ? ?
?? ?#define LL_GPIO_MODE_OUTPUT_50MHz ? ? ? ?0x00000002U ? ? ? ? ?

?? ?//===GPIO熟读设置
?? ?#define LL_GPIO_SPEED_FREQ_LOW ? ? ? ? ? LL_GPIO_MODE_OUTPUT_2MHz ??
?? ?#define LL_GPIO_SPEED_FREQ_MEDIUM ? ? ? ?LL_GPIO_MODE_OUTPUT_10MHz ?
?? ?#define LL_GPIO_SPEED_FREQ_HIGH ? ? ? ? ?LL_GPIO_MODE_OUTPUT_50MHz ?

?? ?//===GPIO上下拉模式
?? ?#define LL_GPIO_PULL_NO ? ? ? ? ? ? ? ? ?0x00000000U?? ?
?? ?#define LL_GPIO_PULL_DOWN ? ? ? ? ? ? ? ?0x00000001U?? ?
?? ?#define LL_GPIO_PULL_UP ? ? ? ? ? ? ? ? ?0x00000002U?? ?

?? ?//===驱动能力配置
?? ?#define LL_GPIO_DRIVER_HIGH?? ??? ??? ??? ?0
?? ?#define LL_GPIO_DRIVER_LOW?? ??? ??? ??? ?1

?? ?//===端口功能复用
?? ?#define LL_GPIO_AF_MASK?? ??? ??? ??? ??? ?0x00000007U

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 读取端口输入信息
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef* GPIOx)
?? ?{
?? ??? ?return (uint32_t)(READ_REG(GPIOx->IDR));
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 读取指定端口输入信息
?? ?//输入参?? ?数:
?? ?//输出参?? ?数: 1---高电平,0---低电平
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline uint32_t LL_GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, uint32_t PinMask)
?? ?{
?? ??? ?return ((READ_BIT(GPIOx->IDR,PinMask)!=0)?1:0);
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 设置端口输出信息
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_WriteOutputPort(GPIO_TypeDef* GPIOx, uint32_t PortValue)
?? ?{
?? ??? ?WRITE_REG(GPIOx->ODR, PortValue);
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 读取端口输出信息
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef* GPIOx)
?? ?{
?? ??? ?return (uint32_t)(READ_REG(GPIOx->ODR));
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 指定端口输出高电平
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_SetOutputPin(GPIO_TypeDef* GPIOx, uint32_t PinMask)
?? ?{
?? ??? ?WRITE_REG(GPIOx->BSETCLR, PinMask<<16);
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 指定端口输出低电平
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_ResetOutputPin(GPIO_TypeDef* GPIOx, uint32_t PinMask)
?? ?{
?? ??? ?WRITE_REG(GPIOx->BSETCLR, PinMask);
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 指定端口输出取反输出
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint32_t PinMask)
?? ?{
?? ??? ?WRITE_REG(GPIOx->ODR, READ_REG(GPIOx->ODR) ^ PinMask);
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 设置端口的输入输出模式
?? ?//输入参?? ?数: LL_GPIO_MODE_OUTPUT,LL_GPIO_MODE_INPUT
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_SetPinMode(GPIO_TypeDef* GPIOx, uint32_t Pin, uint32_t Mode)
?? ?{
?? ??? ?if (Mode==LL_GPIO_MODE_OUTPUT)
?? ??? ?{
?? ??? ??? ?CLEAR_BIT(GPIOx->DIR, Pin);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?SET_BIT(GPIOx->DIR, Pin);
?? ??? ?}
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 获取端口的输入输出模式
?? ?//输入参?? ?数:?
?? ?//输出参?? ?数: LL_GPIO_MODE_OUTPUT,LL_GPIO_MODE_INPUT
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef* GPIOx, uint32_t Pin)
?? ?{
?? ??? ?return (uint32_t)(READ_BIT(GPIOx->DIR, Pin));
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 调试端口复用为SWD模式
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_Debug_AF_SWD(void)
?? ?{
?? ??? ?CLEAR_BIT(RCC->CR1, RCC_CR1_SWD_AF);
?? ?}

?? ?///
?? ?//函?? ??? ?数:
?? ?//功?? ??? ?能: 调试端口复用为GPIO模式
?? ?//输入参?? ?数:
?? ?//输出参?? ?数:
?? ?//说?? ??? ?明:
?? ?//
?? ?static inline void LL_GPIO_Debug_AF_GPIO(void)
?? ?{
?? ??? ?SET_BIT(RCC->CR1, RCC_CR1_SWD_AF);
?? ?}?? ?

?? ?//===GPIO初始化结构体
?? ?typedef struct
?? ?{
?? ??? ?uint32_t Pin; ? ? ? ? ?? ??? ??? ??? ?//---引脚?? ??? ??? ?
?? ??? ?uint32_t Mode; ? ? ? ??? ??? ??? ??? ?//---模式
?? ??? ?uint32_t Speed;?? ??? ??? ??? ??? ??? ?//---速度
?? ??? ?uint32_t OutputType;?? ??? ??? ??? ?//---输出模式
?? ??? ?uint32_t Pull;?? ??? ??? ??? ??? ??? ?//---上下拉模式
?? ??? ?uint32_t Alternate;?? ??? ??? ??? ??? ?//---复用模式
?? ??? ?uint32_t DriverLevel;?? ??? ??? ??? ?//---驱动能力
?? ?} LL_GPIO_InitTypeDef;
?? ?
?? ?//===函数定义
?? ?uint8_t LL_GPIO_Init(GPIO_TypeDef* GPIOx, LL_GPIO_InitTypeDef* GPIO_InitStruct);

?? ?///
#ifdef __cplusplus
}
#endif?

#endif /* HC32L1XX_LL_GPIO_H */

#include "hc32l1xx_ll_gpio.h"

///
//函?? ??? ?数:
//功?? ??? ?能: 端口复用模式的初始化
//输入参?? ?数:
//输出参?? ?数:
//说?? ??? ?明:
//
uint8_t LL_GPIO_SEL_Init(GPIO_TypeDef* GPIOx, LL_GPIO_InitTypeDef* GPIO_InitStruct)
{
?? ?//---端口复用功能的配置寄存器
?? ?GPIO_SEL_TypeDef* pSEl = (GPIO_SEL_TypeDef*)(((uint32_t*)GPIOx)- GPIO_SEL_OFFSET);
?? ?//---依据端口序号,配置端口的复用模式
?? ?switch (GPIO_InitStruct->Pin)
?? ?{
?? ??? ?case LL_GPIO_PIN_0?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL00, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_1?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL01, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_2?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL02, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_3?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL03, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_4?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL04, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_5?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL05, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_6?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL06, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_7?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL07, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_8?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL08, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_9?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL09, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_10?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL10, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_11?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL11, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_12?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL12, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_13?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL13, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_14?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL14, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_PIN_15?? ?:
?? ??? ?{
?? ??? ??? ?WRITE_REG(pSEl->SEL15, GPIO_InitStruct->Alternate);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?default:
?? ??? ?{
?? ??? ??? ?memset(pSEl, 0x00UL, sizeof(GPIO_SEL_TypeDef) / sizeof(uint32_t));
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?return 0;
}

///
//函?? ??? ?数:?
//功?? ??? ?能: 端口模式的初始化
//输入参数:?
//输出参数:?
//说?? ??? ?明:?
//
uint8_t LL_GPIO_Init(GPIO_TypeDef* GPIOx, LL_GPIO_InitTypeDef* GPIO_InitStruct)
{
?? ?switch (GPIO_InitStruct->Mode)
?? ?{
?? ??? ?case LL_GPIO_MODE_INPUT:
?? ??? ?{
?? ??? ??? ?//---数模模式配置为数字模式
?? ??? ??? ?CLEAR_BIT(GPIOx->ADS, GPIO_InitStruct->Pin);
?? ??? ??? ?//---输入输出模式配置为输入模式
?? ??? ??? ?SET_BIT(GPIOx->DIR, GPIO_InitStruct->Pin);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_MODE_OUTPUT:
?? ??? ?{
?? ??? ??? ?//---数模模式配置为数字模式
?? ??? ??? ?CLEAR_BIT(GPIOx->ADS, GPIO_InitStruct->Pin);
?? ??? ??? ?//---输入输出模式配置为输出模式
?? ??? ??? ?CLEAR_BIT(GPIOx->DIR, GPIO_InitStruct->Pin);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case LL_GPIO_MODE_ANALOG:
?? ??? ?case LL_GPIO_MODE_FLOATING:
?? ??? ?case LL_GPIO_MODE_ALTERNATE:
?? ??? ?default:
?? ??? ?{
?? ??? ??? ?//---数模模式配置为模拟模式
?? ??? ??? ?SET_BIT(GPIOx->ADS, GPIO_InitStruct->Pin);
?? ??? ??? ?//---输入输出模式配置为输入模式
?? ??? ??? ?SET_BIT(GPIOx->DIR, GPIO_InitStruct->Pin);
?? ??? ??? ?//---上拉不使能
?? ??? ??? ?CLEAR_BIT(GPIOx->PU, GPIO_InitStruct->Pin);
?? ??? ??? ?//---下拉不使能
?? ??? ??? ?CLEAR_BIT(GPIOx->PD, GPIO_InitStruct->Pin);
?? ??? ??? ?//---低驱动能力
?? ??? ??? ?SET_BIT(GPIOx->DRIVER, GPIO_InitStruct->Pin);
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?//---上下拉配置和驱动能力配置
?? ?if ((GPIO_InitStruct->Mode== LL_GPIO_MODE_INPUT)||
?? ??? ?(GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT))
?? ?{
?? ??? ?//---上下拉配置
?? ??? ?if (GPIO_InitStruct->Pull==LL_GPIO_PULL_UP)
?? ??? ?{
?? ??? ??? ?//---上拉使能
?? ??? ??? ?SET_BIT(GPIOx->PU, GPIO_InitStruct->Pin);
?? ??? ??? ?//---下拉不使能
?? ??? ??? ?CLEAR_BIT(GPIOx->PD, GPIO_InitStruct->Pin);
?? ??? ?}
?? ??? ?else if (GPIO_InitStruct->Pull == LL_GPIO_PULL_DOWN)
?? ??? ?{
?? ??? ??? ?//---上拉不使能
?? ??? ??? ?CLEAR_BIT(GPIOx->PU, GPIO_InitStruct->Pin);
?? ??? ??? ?//---下拉使能
?? ??? ??? ?SET_BIT(GPIOx->PD, GPIO_InitStruct->Pin);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?//---上拉不使能
?? ??? ??? ?CLEAR_BIT(GPIOx->PU, GPIO_InitStruct->Pin);
?? ??? ??? ?//---下拉不使能
?? ??? ??? ?CLEAR_BIT(GPIOx->PD, GPIO_InitStruct->Pin);
?? ??? ?}
?? ??? ?//---驱动能力配置
?? ??? ?if (GPIO_InitStruct->DriverLevel == LL_GPIO_DRIVER_HIGH)
?? ??? ?{
?? ??? ??? ?//---高驱动能力
?? ??? ??? ?CLEAR_BIT(GPIOx->DRIVER, GPIO_InitStruct->Pin);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?//---低驱动能力
?? ??? ??? ?SET_BIT(GPIOx->DRIVER, GPIO_InitStruct->Pin);
?? ??? ?}
?? ?}
?? ?//---输出模式
?? ?if (GPIO_InitStruct->OutputType== LL_GPIO_OUTPUT_PUSHPULL)
?? ?{
?? ??? ?//---推挽输出
?? ??? ?CLEAR_BIT(GPIOx->OD, GPIO_InitStruct->Pin);
?? ?}
?? ?else
?? ?{
?? ??? ?//---开漏输出
?? ??? ?SET_BIT(GPIOx->OD, GPIO_InitStruct->Pin);
?? ?}
?? ?//---复用模式设置
?? ?LL_GPIO_SEL_Init(GPIOx, GPIO_InitStruct);
?? ?return 0;
}

///
//函?? ??? ?数:
//功?? ??? ?能: 端口模式的注销
//输入参?? ?数:
//输出参?? ?数:
//说?? ??? ?明: 数字输入,上下拉功能不使能
//
uint8_t LL_GPIO_DeInit(GPIO_TypeDef* GPIOx,uint32_t Pin)
{
?? ?LL_GPIO_InitTypeDef GPIO_InitStruct = { 0 };
?? ?GPIO_InitStruct.Pin = Pin;
?? ?GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
?? ?GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
?? ?GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
?? ?GPIO_InitStruct.DriverLevel = LL_GPIO_DRIVER_HIGH;
?? ?GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
?? ?LL_GPIO_Init(GPIOx, &GPIO_InitStruct);
?? ?return 0;
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:59:11  更:2021-09-07 11:00:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:57:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计