STM32F427|----------IO讲解与应用

以下都是个人的理解,不一定正确:

STM32的IO口只有俩作用:输入  输出  ,后面的模拟 和 复用 其实都是输入 输出的具体体现 然后都体现在了GPIO_Init()这个函数:

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

这是函数的原型,第一个参数是哪一组,第二个参数是具体得配置,是个结构体;

GPIO_InitTypeDef GPIO_InitStruct;

//五个参数在输入和输出的时候不一定全部写,看情况写

GPIO_InitStruct.GPIO_OType=GPIO_OType_OD;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStruct);

IN: 输入    比如IO外接传感器,上下位机通讯等

OUT:输出   外接硬件,驱动电机等       

 AF:复用       最显然的复用就是USART 

   AN:模拟   ADC转换的时候经常用

 NOPULL:浮空     不上拉,也不下拉,基本没用过容易受干扰

UP:上拉              拉到高点位 引脚无输入时为高电平

DOWN:下拉    拉到低点位  引脚无输入时为低电平

 PP: 推挽 可以输出高低电平 连接数字器件 提高引脚输出电流的能力 

OD: 开漏  外部不加上拉电阻,默认为低电平  提高引脚输入电流的能力

已火焰传感器为例:连接后其输出一路低电平;则其引脚应该设置为上拉输入,高低电平相互链接,

#define IN_Data  PEin(3)

void OUTER_IN_Init()
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	RCC_AHB1PeriphClockLPModeCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIO_InitStruct.GPIO_OType=GPIO_OType_OD;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOE,&GPIO_InitStruct);
}


int main()
{
	LED_Init();
	OUTER_IN_Init();
	RED_LED=ON;
	BLUE_LED=OFF;
	
	while(1)
	{
	if(IN_Data==0)
	{
		RED_LED=~RED_LED;
		BLUE_LED=~BLUE_LED;
	}
}	
	return 0;
}

  

原文地址:https://www.cnblogs.com/Loving-Q/p/12803397.html