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);
相关推荐
youcans_5 分钟前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc
热爱编程的小刘20 分钟前
Lesson05&6 --- C&C++内存管理&模板初阶
开发语言·c++
qq_12498707531 小时前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
froginwe111 小时前
Python 条件语句
开发语言
七夜zippoe1 小时前
Python统计分析实战:从描述统计到假设检验的完整指南
开发语言·python·统计分析·置信区间·概率分布
2601_949146532 小时前
Python语音通知API示例代码汇总:基于Requests库的语音接口调用实战
开发语言·python
3GPP仿真实验室2 小时前
【Matlab源码】6G候选波形:OFDM-IM 索引调制仿真平台
开发语言·matlab
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-企业级教育考试系统核心架构(完善版)
开发语言·人工智能·spring boot·python·架构·领域驱动
前端玖耀里2 小时前
Linux C/C++ 中系统调用与库函数调用的区别
linux·c语言·c++
2301_765703142 小时前
C++中的代理模式变体
开发语言·c++·算法