GPIO_Mode_In_FL_No_IT
浮空输入无中断
GPIO_Mode_In_PU_No_IT
上拉输入无中断
GPIO_Mode_In_FL_IT
浮空输入有中断
GPIO_Mode_In_PU_IT
上拉输入有中断
GPIO_Mode_Out_OD_Low_Fast
开漏-输出低-高速 Output open-drain, low level, 10MHz
GPIO_Mode_Out_PP_Low_Fast
推挽-输出低-高速 Output push-pull, low level, 10MHz
GPIO_Mode_Out_OD_Low_Slow
开漏-输出低-低速 Output open-drain, low level, 2MHz
GPIO_Mode_Out_PP_Low_Slow
推挽-输出低-低速 Output push-pull, low level, 2MHz
GPIO_Mode_Out_OD_HiZ_Fast
开漏-输出高阻-高速 Output open-drain, high-impedance level, 10MHz
GPIO_Mode_Out_PP_High_Fast
推挽-输出高-高速 Output push-pull, high level, 10MHz
GPIO_Mode_Out_OD_HiZ_Slow
开漏-输出高阻-低速 Output open-drain, high-impedance level, 2MHz
GPIO_Mode_Out_PP_High_Slow
推挽-输出高-低速 Output push-pull, high level, 2MHz
操作步骤:
1. 使能GPIO对应的外设时钟
例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE);
2. 声明一个GPIO_InitStructure结构体
例如:
GPIO_InitTypeDef GPIO_InitStructure;
3. 选择待设置的GPIO管脚
例如://选择待设置的GPIO第7、8、9管脚位 ,中间加“|”符号
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
4. 设置选中GPIO管脚的速率
例如://设置选中GPIO管脚的速率为最高速率2MHz
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //最高速率2MHz
5. 设置选中GPIO管脚的模式
例如://设置选中GPIO管脚的模式为开漏输出模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出模式
6. 根据GPIO_InitStructure中指定的参数初始化外设GPIOX
例如: GPIO_Init(GPIOC, &GPIO_InitStructure);
7.其他应用
例: 将端口GPIOA的第10、15脚置1(高电平)
GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
例:将端口GPIOA的第10、15脚置0(低电平)
GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
8.GPIO寄存器:
寄存器 描述
CRL 端口配置低寄存器
CRH 端口配置高寄存器
IDR 端口输入数据寄存器
ODR 端口输出数据寄存器
BSRR 端口位设置/复位寄存器
BRR 端口位复位寄存器
LCKR 端口配置锁定寄存器
EVCR 事件控制寄存器
MAPR 复用重映射和调试
I/O 配置寄存器
EXTICR 外部中断线路0-15配置寄存器
9.GPIO库函数:
函数名 描述
GPIO_DeInit 将外设GPIOx寄存器重设为缺省值
GPIO_AFIODeIn