stm32中GPIO知识点

stm32中GPIO知识点小结

GPIO的八种工作模式

(1) GPIO_Mode_AIN模拟输入模式:主要应用于ADC模拟输入,或者低功耗下省电。
(2)GPIO_IN_FLOATING 浮空输入:可以应用于KEY识别,RX1。
(3)GPIO_IPU上拉输入:应用于IO内部上拉电阻输入。
(4)GPIO_IPD 下拉输入:应用于 IO内部下拉电阻输入。
(5)GPIO_OUT_OD开漏输出:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
(6)GPIO_OUT_PP推挽输出 :IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)GPIO_AF_PP复用功能的推挽输出:片内外设功能(I2C的SCL,SDA)
(8)GPIO_AF_OD复用功能的开漏输出:片内外设功能(TX1,MOSI,MISO.SCK.SS)

注意:当GPIO配置为开漏输出,在外部加上上拉电阻(内部上拉不行)可以实现IO口可以实现双向功能,该GPIO口可以及作为输入又作为输出,输入的实现是通过对寄存器的读取来检测当前GPIO的状态信息,但该输入不能作为外部中断的触发源。

GPIO的配置方式:

/GPIO结构体变量声明*/
GPIO_InitTypeDef GPIO_InitStruct;

/* GPIO时钟使能 */
__HAL_RCC_GPIOC_CLK_ENABLE();

/*配置GPIO为输出模式 */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11|GPIO_PIN_8, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET);
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;/推挽输出/
GPIO_InitStruct.Speed = GPIO_SPEED_50MHZ;/50M/
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);/初始化GPIO/

你可能感兴趣的:(stm32学习笔记)