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);