STM32 GPIO简单使用
IO初使化配置
GPIO_Init()
{
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOB ,GPIOC 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 |GPIO_Pin_6; //设置对应引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //工作速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //PB5 PB6设置生效
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //设置对应引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //PC8设置生效
}
GPIO配置模式
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 //复用推挽输出
IO使用
1、输出设置
GPIO_SetBits(GPIOB, GPIO_Pin_5); //PB5置1
GPIO_ResetBits(GPIOB, GPIO_Pin_6); //PB6置0
2、输入引脚读取
GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)//读取PC8 返回0 1
可以在.h头文件中定义宏简化应用
#define PC8 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)
应用时直接用PC8
if(1 == PC8)
{
.....
}