GPIO输出

GPIO输出

Keil工程架构

image

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 位结构

image

浮空/上拉/下拉输入

image

模拟输入

image

开漏/推挽输出

image

复用开漏/推挽输出

image

posted @ 2024-11-01 22:35  White_ink  阅读(46)  评论(0)    收藏  举报