国产高性能单片机CH32H417应用教程——GPIO
3、GPIO库函数详解
3.1 GPIO初始化与配置函数
3.1.1 GPIO_DeInit
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
功能:将GPIOx外设寄存器恢复为默认复位值。
参数:GPIOx为GPIO端口,可选GPIOA~GPIOF。
3.1.2 GPIO_AFIODeInit
void GPIO_AFIODeInit(void);
功能:将复用功能(重映射、事件控制和EXTI配置)寄存器恢复为默认值。
3.1.3 GPIO_Init
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
功能:根据GPIO_InitStruct中的指定参数初始化GPIOx外设。
GPIO_InitTypeDef结构体:
typedef struct {
uint16_t GPIO_Pin; // 要配置的引脚
GPIOSpeed_TypeDef GPIO_Speed; // 输出速度
GPIOMode_TypeDef GPIO_Mode; // 工作模式
} GPIO_InitTypeDef;
示例:
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Very_High;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
3.1.4 GPIO_StructInit
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
功能:用默认值填充GPIO_InitStruct结构体。
默认值:GPIO_Pin=GPIO_Pin_All,GPIO_Speed=GPIO_Speed_Very_High,GPIO_Mode=GPIO_Mode_IN_FLOATING
3.2 GPIO读取函数
3.2.1 GPIO_ReadInputDataBit
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:读取指定GPIO输入端口的某一位。
返回值:Bit_SET(1)或Bit_RESET(0)
3.2.2 GPIO_ReadInputData
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
功能:读取指定GPIO端口的16位输入数据。
返回值:16位端口输入值
3.2.3 GPIO_ReadOutputDataBit
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:读取指定GPIO输出端口的某一位。
返回值:Bit_SET(1)或Bit_RESET(0)
3.2.4 GPIO_ReadOutputData
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
功能:读取指定GPIO端口的16位输出数据。
返回值:16位端口输出值
3.3 GPIO写入函数
3.3.1 GPIO_SetBits
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:设置选定的数据端口位(输出高电平)。
参数:GPIO_Pin为要设置的引脚,如GPIO_Pin_1
3.3.2 GPIO_ResetBits
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:清除选定的数据端口位(输出低电平)。
参数:GPIO_Pin为要清除的引脚
3.3.3 GPIO_WriteBit
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
功能:设置或清除选定的数据端口位。
参数:BitVal为Bit_SET或Bit_RESET
3.3.4 GPIO_Write
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
功能:向指定GPIO端口写入16位数据。
参数:PortVal为要写入的值
3.4 GPIO复用功能函数
3.4.1 GPIO_PinAFConfig
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint8_t GPIO_PinSource, uint8_t GPIO_AF);
功能:配置GPIO引脚的复用功能。
参数:
- GPIO_PinSource:引脚源(0-15)
- GPIO_AF:复用功能编号(AF0-AF15)
常用复用功能对照:
| 复用功能 | 编号 | 典型用途 |
|---|---|---|
| GPIO_AF0 | 0 | 系统功能(RTC等) |
| GPIO_AF1 | 1 | 定时器等 |
| GPIO_AF2 | 2 | SPI等 |
| GPIO_AF3 | 3 | 比较器等 |
| GPIO_AF4 | 4 | I2C等 |
| GPIO_AF5 | 5 | SPI等 |
| GPIO_AF6 | 6 | SPI等 |
| GPIO_AF7 | 7 | USART等 |
| GPIO_AF8 | 8 | USART等 |
| GPIO_AF9 | 9 | CAN等 |
| GPIO_AF10 | 10 | USB等 |
| GPIO_AF11 | 11 | Ethernet等 |
| GPIO_AF12 | 12 | SDIO等 |
| GPIO_AF13 | 13 | DCMI等 |
| GPIO_AF14 | 14 | Touch等 |
| GPIO_AF15 | 15 | 事件输出 |
3.5 GPIO重映射与锁定函数
3.5.1 GPIO_PinLockConfig
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:锁定GPIO引脚配置寄存器,防止意外修改。
说明:锁定后,在下次系统复位之前不能再更改该引脚配置。
3.5.2 GPIO_PinRemapConfig
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
功能:配置GPIO引脚重映射。
示例:
GPIO_PinRemapConfig(GPIO_Remap_PD0PD1, ENABLE); // 启用PD0/PD1重映射
3.5.3 GPIO_EXTILineConfig
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
功能:配置外部中断线。
说明:将GPIO端口引脚连接到EXTI外部中断线。
3.6 GPIO事件输出函数
3.6.1 GPIO_EventOutputConfig
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
功能:配置GPIO事件输出。
3.6.2 GPIO_EventOutputCmd
void GPIO_EventOutputCmd(FunctionalState NewState);
功能:使能或禁用GPIO事件输出。
完整内容见:国产高性能单片机CH32H417应用教程——GPIO
更多内容,请WX关注:

&spm=1001.2101.3001.5002&articleId=160958815&d=1&t=3&u=76d31f5fefd84163bd313c8b7572aa71)
426

被折叠的 条评论
为什么被折叠?



