GPIO的八种配置
1、浮空输入:既不上拉 也不下拉 外界电路是什么情况就是什么情况
2、带上拉输入:读IO口状态默认为高
3、带下拉输入:读IO口状态默认为低
4、模拟输入
5、推挽输出【PP】只是单向输出高低电平的时候是设置该模式
6、开漏输出【OD】当模拟IIC SDA 设置为该模式
(不能输出高电平 除非外部有上拉)
7、复用推挽输出
8、复用开漏输出
复用 例如当PA9 PA10 默认为TX1 RX1 如果只是想用其当作普通IO口的话 将其的模式改为复用
#库函数版本 写led、key
#include "led.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能A端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOA
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
加粗样式
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED PAout(6) // PA15
void LED_Init(void);
#endif
#include "key.h"
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTA,PORTC时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PB3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//PB4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB4
}
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
#define KEY1 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3)//读取按键0
#define KEY2 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)//读取按键1
void KEY_Init(void);//IO初始化
#endif
【引用】http://t.csdnimg.cn/gKQAP