CH582 GPIO

1、开启系统时钟

复制代码
// 开启系统时钟
SetSysClock(CLK_SOURCE_PLL_60MHz);

2、配置GPIO:输出模式

复制代码
// GPIO_ModeOut_PP_5mA,  //推挽输出最大5mA
// GPIO_ModeOut_PP_20mA, //推挽输出最大20mA

// 配置 GPIOA.13 推挽输出
GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_20mA); 
// 配置 GPIOB.13 推挽输出
GPIOB_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_20mA); 

// GPIOA IO状态为:高电平
GPIOA_SetBits(GPIO_Pin_13);
// GPIOA IO状态为:低电平
GPIOA_ResetBits(GPIO_Pin_13);
// GPIOA IO状态为:电平状态翻转
GPIOA_InverseBits(GPIO_Pin_13);

// GPIOB IO状态为:高电平
GPIOB_SetBits(GPIO_Pin_13);
// GPIOB IO状态为:低电平
GPIOB_ResetBits(GPIO_Pin_13);
// GPIOB IO状态为:电平状态翻转
GPIOB_InverseBits(GPIO_Pin_13);

3、配置GPIO:输入模式

复制代码
// 浮空输入:GPIO_ModeIN_Floating
// 上拉输入:GPIO_ModeIN_PU
// 下拉输入:GPIO_ModeIN_PD

// 配置GPIOA输入
GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeIN_Floating); 
// 配置GPIOB输入
GPIOB_ModeCfg(GPIO_Pin_13, GPIO_ModeIN_Floating);

// 获取GPIOA端口32位数据返回,低16位有效
GPIOA_ReadPort();
// GPIOA端口引脚状态,0-引脚低电平,(!0)-引脚高电平
GPIOA_ReadPortPin(GPIO_Pin_13);

// 获取GPIOB端口32位数据返回,低16位有效
GPIOB_ReadPort();
// GPIOB端口引脚状态,0-引脚低电平,(!0)-引脚高电平
GPIOB_ReadPortPin(GPIO_Pin_13);

4、配置GPIO:中断模式

复制代码
// 低电平触发:GPIO_ITMode_LowLevel
// 高电平触发:GPIO_ITMode_HighLevel
// 下降沿触发:GPIO_ITMode_FallEdge
// 上升沿触发:GPIO_ITMode_RiseEdge

// 配置GPIOA中断模式
GPIOA_ITModeCfg(GPIO_Pin_13, GPIO_ITMode_LowLevel);
// 获取GPIOA端口中断标记位
GPIOA_ReadITFlagPort();
// 获取GPIOA.Pin端口中断标记位
GPIOA_ReadITFlagBit(GPIO_Pin_13);
// 清除GPIOA.Pin端口中断标记位
GPIOA_ClearITFlagBit(GPIO_Pin_13);

// 配置GPIOB中断模式
GPIOB_ITModeCfg(GPIO_Pin_13, GPIO_ITMode_LowLevel);
// 获取GPIOB端口中断标记位
GPIOB_ReadITFlagPort();
// 获取GPIOB.Pin端口中断标记位
GPIOB_ReadITFlagBit(GPIO_Pin_13);
// 清除GPIOB.Pin端口中断标记位
GPIOB_ClearITFlagBit(GPIO_Pin_13);

5、配置GPIO:重映射模式

复制代码
/**
 * @brief   外设功能引脚映射
 *
 * @param   s       - 是否使能映射:success、error
 * @param   perph   - RB_RF_ANT_SW_EN -  RF antenna switch control output on PB16/PB17/PB18/PB19/PB20/PB21
 *                    RB_PIN_U0_INV -  RXD0/RXD0_/TXD0/TXD0_ invert input/output
 *                    RB_PIN_INTX   -  INTX: INT24/INT25 PB8/PB9 -> INT24_/INT25_ PB22/PB23
 *                    RB_PIN_MODEM  -  MODEM: PB1/PB5 -> PB14/PB15
 *                    RB_PIN_I2C    -  I2C: PB13/PB12 -> PB21/PB20
 *                    RB_PIN_PWMX   -  PWMX: PA12/PA13/PB4/PB6/PB7 -> PA6/PA7/PB1/PB2/PB3
 *                    RB_PIN_SPI0   -  SPI0:  PA12/PA13/PA14/PA15 -> PB12/PB13/PB14/PB15
 *                    RB_PIN_UART3  -  UART3: PA4/PA5 ->  PB20/PB21
 *                    RB_PIN_UART2  -  UART2: PA6/PA7 ->  PB22/PB23
 *                    RB_PIN_UART1  -  UART1: PA8/PA9 ->  PB12/PB13
 *                    RB_PIN_UART0  -  UART0: PB4/PB7 ->  PA15/PA14
 *                    RB_PIN_TMR3   -  TMR2:  PA9 ->  PB23
 *                    RB_PIN_TMR2   -  TMR2:  PA11 ->  PB11
 *                    RB_PIN_TMR1   -  TMR1:  PA10 ->  PB10
 *                    RB_PIN_TMR0   -  TMR0:  PA9 ->  PB23
 */
void GPIOPinRemap(FunctionalState s, uint16_t perph);

6、配置GPIO:模拟外设模式

复制代码
/**
 * @brief   模拟外设GPIO引脚功能控制
 *
 * @param   s       - 是否启用模拟外设功能:success、error
 * @param   perph   - RB_PIN_ADC8_9_IE  - ADC/TKEY 9/8通道
 *                    RB_PIN_ADC6_7_IE  - ADC/TKEY 7/6通道
 *                    RB_PIN_ADC10_IE   - ADC/TKEY 10通道
 *                    RB_PIN_ADC11_IE   - ADC/TKEY 11 通道
 *                    RB_PIN_USB2_DP_PU - USB2 U2D+引脚内部上拉电阻
 *                    RB_PIN_USB2_IE    - USB2引脚
 *                    RB_PIN_USB_DP_PU  - USB UD+引脚内部上拉电阻
 *                    RB_PIN_USB_IE     - USB 引脚
 *                    RB_PIN_ADC0_IE    - ADC/TKEY 0 通道
 *                    RB_PIN_ADC1_IE    - ADC/TKEY 1 通道
 *                    RB_PIN_ADC12_IE   - ADC/TKEY 12 通道
 *                    RB_PIN_ADC13_IE   - ADC/TKEY 13 通道
 *                    RB_PIN_XT32K_IE   - 32KHz晶振LSE引脚
 *                    RB_PIN_ADC2_3_IE  - ADC/TKEY 2/3 通道
 *                    RB_PIN_ADC4_5_IE  - ADC/TKEY 4/5 通道
 */
void GPIOAGPPCfg(FunctionalState s, uint16_t perph);
相关推荐
Blockbuater_drug6 小时前
FreeSASA: 开源 SASA 计算库,pip 一条命令替代 NACCESS
c语言·开源·sasa·freesasa·溶剂可及表面积·naccess·python api
Logic1016 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
言乐67 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
金金计较.7 小时前
Go语言-3
java·开发语言·golang
Logic1017 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
张小凡vip8 小时前
python--爬虫--经验积累的遇到的坑
开发语言·爬虫·python
Wang's Blog8 小时前
Java框架快速入门: Spring Security+OAuth2之云服务集成与多因子认证设计
java·开发语言·spring
门思科技9 小时前
LoRaWAN 网络容量估算:一个 SX1302 网关到底能带多少设备
开发语言·网络·php
大草原的小灰灰9 小时前
Python基础语法
开发语言·python
Logic1019 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和