1、初始化代码
#include "bsp_gpio.h"
/*
GPIO_Mode_AIN = 0x0, 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, 浮空输入
GPIO_Mode_IPD = 0x28, 下拉输入
GPIO_Mode_IPU = 0x48, 上拉输入
GPIO_Mode_Out_OD = 0x14, 开漏输出
GPIO_Mode_Out_PP = 0x10, 推挽输出
GPIO_Mode_AF_OD = 0x1C, 复用开漏输出
GPIO_Mode_AF_PP = 0x18 复用推挽输出
*/
/*
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
*/
void GPIO_OUT_INIT()
{
//打开时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//初始化IO口
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStruct);
}
}
void GPIO_IN_INIT()
{
//打开时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//初始化IO口
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
// GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
}
}
2、GPIO函数使用
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:i = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);
读取PB2的数据
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
例:i = GPIO_ReadInputData(GPIOB);
读取PB的数据
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:GPIO_SetBits(GPIOC,GPIO_Pin_13);
将PC13设置为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:GPIO_ResetBits(GPIOC,GPIO_Pin_13);
将PC13设置为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
例:GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
将PC13设置为高电平
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
例:GPIO_Write(GPIOC, 0X0055);
将PC口输出设为0x0055;