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);
相关推荐
多则惑少则明2 分钟前
【算法题4】找出字符串中的最长回文子串(Java版)
java·开发语言·数据结构·算法
不会编程的小寒5 分钟前
C and C++
java·c语言·c++
【建模先锋】10 分钟前
基于Python的智能故障诊断系统 | SmartDiag AI (基础版)V1.0 正式发布!
开发语言·人工智能·python·故障诊断·智能分析平台·大数据分析平台·智能故障诊断系统
T.O.P_KING12 分钟前
Common Go Mistakes(IV 字符串)
开发语言·后端·golang
我命由我1234513 分钟前
微信小程序 - 避免在 data 初始化中引用全局变量
开发语言·前端·javascript·微信小程序·小程序·前端框架·js
盒马盒马14 分钟前
Rust:Trait 标签 & 常见特征
开发语言·后端·rust
liulilittle14 分钟前
C++ SSE/AVX/SHA/AES指令集检查,用于程序定向优化。
开发语言·c++·cpu·asm·detect·il·features
小龙在山东19 分钟前
基于C++空项目运行汇编语言
开发语言·c++
MM_MS19 分钟前
WinForm+C#小案例--->写一个记事本程序
开发语言·计算机视觉·c#·visual studio
郝学胜-神的一滴29 分钟前
Linux信号屏蔽字详解:原理、应用与实践
linux·服务器·开发语言·c++·程序人生