stm32 GPIO输入输出

GPIO 通用输入输出口

可配置为8种输入输出模式

输出模式下可控制端口输出高低电平,用以驱动LED,控制蜂鸣器,模拟通信协议输出时序等

输入模式下可读取端口的高低电平和电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据

stm32 GPIO输入输出_第1张图片

因为STM32是32位单片机,但端口只有16位,驱动器是增大驱动能力

stm32 GPIO输入输出_第2张图片

 注意:来自片上外设是复用功能输出

开漏智能低电平有驱动能力,没有高电平,由外部高电平上拉电阻拉高至5V

stm32 GPIO输入输出_第3张图片

 stm32 GPIO输入输出_第4张图片

开漏输出高电平为高阻态,高电平没有驱动能力

 复用开漏,推挽,引脚的控制权交给了片上外设stm32 GPIO输入输出_第5张图片

         stm32 GPIO输入输出_第6张图片

 

GPIO输入

 

stm32 GPIO输入输出_第7张图片

如果PA0是上拉输入模式,引脚再悬空,PA0是高电平 

第二个可以允许引脚浮空,因为已经外置了

stm32 GPIO输入输出_第8张图片

 

stm32 GPIO输入输出_第9张图片

 stm32 GPIO输入输出_第10张图片

 蜂鸣器-GPIO_Mode_Out_PP

void beep()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitTypeStruct;
	GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_8; 
	GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitTypeStruct);
	
	GPIO_SetBits(GPIOA,GPIO_Pin_8);
	Delay(0x0FFFFF);
	GPIO_ResetBits( GPIOA, GPIO_Pin_8);
	Delay(0x0FFFFF);
}

光敏电阻-GPIO_Mode_IPD

void guangming()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIO_InitTypeDef GPIO_InitTypeStruct;
	GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_IPD;
	GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_8; 
	GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitTypeStruct);
}

读取时:

GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==1

你可能感兴趣的:(stm32,单片机,嵌入式硬件)