stm32学习笔记之GPIO配置

一、GPIO配置

    (1)GPIO_Mode_AIN 模拟输入

    (2)GPIO_Mode_IN_FLOATING  浮空输入

    (3)GPIO_Mode_IPD 下拉输入

    (4)GPIO_Mode_IPU  上拉输入

    (5)GPIO_Mode__OUT_OD 开漏输出

    (6)GPIO_Mode_OUT_PP 推挽输出

    (7)GPIO_Mode_AF_OD 复用开漏输出

    (8)GPIO_Mode_AF_PP 复用推挽输出

转:STM32中GPIO的8种工作模式

二、输出速率:

    1、 GPIO_Speed_10M最高输出速率10MHz

     GPIO_Speed_2M最高输出速率2MHz

     GPIO_Speed_50M最高输出速率50MHz

    2、 输出速率是指I/O驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O的输出部分设计了多个响应速度不同的驱动电路,可根据需要自行选择)。通过选择速度来选择不同的输出驱动模块,达到最佳噪声控制与降低功耗的目的。高频的驱动电路,噪声也高当不需要高的输出频率时,选择低频驱动电路,有利于提高系统的EMI性能。当然如果需要输出高频信号,却选择了较低频率的驱动模块,很有可能会得到失真的输出信号。

    3、  GPIO引脚速度与应用匹配举例:

     (1)串口:波特率为115.2k,那么用2M的引脚速度就够了,省电噪声小。

     (2)I2C:波特率为400k,则选用10M的GPIO引脚速度。

     (3)SPI:波特率为18M或19M,则需选择50M的GPIO引脚速度。

    4、 GPIO口作为输入时,输出驱动电路与端口是断开的,所以配置输出速度无意义。

    5、 所有端口都有外部中断能力。为了使用外部中断线端口需配置成输入模式。

    6、 GPIO口具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片才能解锁。

    7、上电瞬间或者复位期间I/O口的电平状态默认是浮空输入(高阻低功耗)。

推荐例程:跑马灯&按键输入

跑马灯GPIO配置:

void LED_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	  //开启时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;			
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 	 //推挽输出	
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //速率50M
 GPIO_Init(GPIOB, &GPIO_InitStructure);					
 GPIO_SetBits(GPIOB,GPIO_Pin_5);						

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    	
 GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 
 GPIO_SetBits(GPIOE,GPIO_Pin_5); 						 
}
按键输入GPIO配置(上拉下拉也与外部电路相关):

void KEY_Init(void)
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //上拉输入up
	GPIO_Init(GPIOE, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;   //下拉输入down
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}










你可能感兴趣的:(stm32学习笔记之GPIO配置)