1.首先我们从GPIO初始化结构体入手
<1>uint16_t GPIO_Pin;
意义:指定要配置的GPIO引脚。这个参数可以是@ref GPIO_pins_define的任意值。前面提到的这个宏定义的位置就在下面127行,它的主要作用就是把GPIO的各个引脚的地址给封装了起来。
<2>GPIOSpeed_TypeDef GPIO_Speed
意义:指定所选引脚的速度。他的参数可以是@ref GPIOSpeed_TypeDef的值。
这里的引脚速度主要有3个,我们可以通过上面的这个结构体去进行定义
<3>GPIOMode_TypeDef GPIO_Mode;
意义:指定所选引脚的工作模式,该参数的值可以是@ref GPIOMode_TypeDef
typedef enum
{ GPIO_Mode_AIN = 0x0, //模式输入
GPIO_Mode_IN_FLOATING = 0x04, //浮空输入 GPIO的输入经常用到
GPIO_Mode_IPD = 0x28, //带下拉输入
GPIO_Mode_IPU = 0x48, //带上拉输入
GPIO_Mode_Out_OD = 0x14, //开漏输出
GPIO_Mode_Out_PP = 0x10, //推挽输出 GPIO的输出经常用到
GPIO_Mode_AF_OD = 0x1C, //复用功能的开漏输出
GPIO_Mode_AF_PP = 0x18 //复用功能的推挽输出
}GPIOMode_TypeDef;
2.结构体基本就是简单的配置,简单来说就是按需选择。接下来进行学习.h内的函数和.c内的函数体。(主要是经常用到的)
<1>void GPIO_DeInit(GPIO_TypeDef* GPIOx);
作用:将外设GPIOX寄存器重设为缺省值。
<2>void GPIO_AFIODeInit(void);
作用:将复用功能(重映射事件控制和EXTI设置)重设为缺省值
<3>void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
作用:初始化GPIO的外设
<4>void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
作用:GPIO的外设参数被设定为缺省值
<5>uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:读取指定端口引脚去进行输入
<6>uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
作用:读取指定端口去进行输入
<7>uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:读取指定的端口引脚去进行输出
<8>uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
作用:读取指定的端口去进行输出
<9>void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:设置指定的数据端口位 :我们也可以理解为给与1 :
参数为:某个端口的某个引脚需要自己去设置
<10>void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:清除指定的数据端口位 :我们也可以理解为给与0 :
参数为:某个端口的某个引脚需要自己去设置
<11>void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
作用:置位或清除指定的GPIO的某个引脚,有点结合9和10两个函数的感觉
<12>void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
作用:置位或清除指定的GPIO端口
<13>void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:锁定GPIO管脚设置寄存器,锁定后在下次端口初始化之前将不能再次配置该端口管脚
<14>void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
作用:选择用作事件的GPIO输出引脚 :这一块跟EXTI外部中断有关系,在配置时可以选择中断模式以及事件模式
<15>void GPIO_EventOutputCmd(FunctionalState NewState);
作用:使能输出事件
<16>void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
作用:更改指定引脚的映射,之所以这样的原因是为了使我们的GPIO的引脚可以得到最大化的利用价值
<17>void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
作用:选择GPIO的引脚作为中断的线路
<18>void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
作用:以太网配置函数,有点遥远的感觉。