GPIO输出
GPIO输出
Keil工程架构

GPIO 8种输入输出模式
GPIO_Mode_AIN //模拟输入
GPIO_Mode_IN_FLOATING //浮空输入
GPIO_Mode_IPD //下拉输入
GPIO_Mode_IPU //上拉输入
GPIO_Mode_Out_OD //开漏输出
GPIO_Mode_Out_PP //推挽输出
GPIO_Mode_AF_OD //复用功能开漏输出
GPIO_Mode_AF_PP //复用功能推挽输出
【输入】
浮空输入
可读取引脚电平
若引脚悬空,则电平不确定
上拉输入
内部连接上拉电阻,悬空时默认高电平
下拉输入
内部连接上拉电阻,悬空时默认低电平
模拟输入
GPIO无效,引脚直接接入内部ADC
【输出】
开漏输出
可输出引脚电平,高电平为高阻态,低电平接VSS
推挽输出
高电平接VDD,低电平接VSS
复用开漏输出/复用推挽输出 由片上外设控制
GPIO常用库函数
APB外设时钟
RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph , FunctionalState NewState)
RCC_AHB2PeriphClockCmd(uint32_t RCC_AHBPeriph , FunctionalState NewState)
RCC_AHB1PeriphClockCmd(uint32_t RCC_AHBPeriph , FunctionalState NewState)
//FunctionalState NewState一般写ENABLE
GPIO初始化
GPIO_Init(GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct)//I/O口初始化
GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)//结构体初始化
GPIO_DeInit(GPIO_TypeDef* GPIOx)
//把GPIO相关的寄存器配置成上电复位后的默认状态
//在第一次初始化前或者不在使用某一接口后调用
GPIO_AFIODeInit(void)
//用来复位AFIO外设,将AFIO外设的配置全部清除
GPIO输入
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx , uint16_t GPIO_Pin)
//读取io输入管脚的值
※返回值:Bit_SET(高电平)
Bit_RESET(低电平)
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
//读入一个分区的所有输入值
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx , uint16_t GPIO_Pin)
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx , uint16_t GPIO_Pin)
//读入输出管脚值
GPIO输出
GPIO_SetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
//对一个引脚输出高电平
GPIO_ResetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
//低电平
GPIO_WriteBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin,BitAction BitVal)
//对某一位进行写入操作
※BitVal:Bit_RESET 低电平 0
Bit_SET 高电平 1
GPIO_Write(GPIO_TypeDef* GPIOx,uint16_t PortVal)
//对一个分区统一写入
※也可以只读入一个引脚:取反~
GPIO_Write(GPIOA,~0x0001);//0000 0000 0000 0001
GPIO_ToggleBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
//翻转指定io口
※ 0->1 1->0
GPIO 位结构

浮空/上拉/下拉输入

模拟输入

开漏/推挽输出

复用开漏/推挽输出


浙公网安备 33010602011771号