国产高性能单片机CH32H417应用教程——GPIO(二)

国产高性能单片机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_AF00系统功能(RTC等)
GPIO_AF11定时器等
GPIO_AF22SPI等
GPIO_AF33比较器等
GPIO_AF44I2C等
GPIO_AF55SPI等
GPIO_AF66SPI等
GPIO_AF77USART等
GPIO_AF88USART等
GPIO_AF99CAN等
GPIO_AF1010USB等
GPIO_AF1111Ethernet等
GPIO_AF1212SDIO等
GPIO_AF1313DCMI等
GPIO_AF1414Touch等
GPIO_AF1515事件输出

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关注:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值