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);
相关推荐
十五年专注C++开发2 分钟前
C++17之类模板实参自动推导CTAD
开发语言·c++·聚合初始化·catd
iCxhust7 分钟前
C# 程序,实现二进制文件十六进制查看器,支持按行定位
开发语言·单片机·嵌入式硬件·c#·微机原理·8086最小系统·8088单板机
咕噜企业签名分发-淼淼13 分钟前
浅谈云服务器在后端托管与签名分发场景中的应用价值
开发语言·php
大卡片14 分钟前
IDE软件实现注意事项
单片机
在繁华处15 分钟前
Java从零到熟练(八):泛型与注解
java·开发语言·python
SilentSamsara16 分钟前
命令行工具开发:Click/Typer + 打包为独立二进制
linux·服务器·开发语言·前端·python·青少年编程·fastapi
m0_3771081417 分钟前
stm32-mpu6050
stm32·单片机·嵌入式硬件
Ulyanov17 分钟前
深入QML滑块与进度控制:构建动态数据可视化界面:QML+PySide6现代开发入门(六)
开发语言·python·算法·ui·信息可视化·雷达电子对抗仿真
zyl8372119 分钟前
Python 函数、模块、异常处理 超详细入门教程
开发语言·windows·python
苏州IT威翰德24 分钟前
苏州IT基础架构IQ/OQ/PQ确认服务 | 服务器网络验证
开发语言·php