八种输入输出模式:
输出:
推挽输出:对MOS管交替导通,可以输出低电平和高电平两种状态
开漏输出:PMOS保持关断,只能输出低电平或者高阻抗(U/I,I为0,R为无穷大)
通用:直接控制I/O引脚输出电压,代码直接控制引脚输出高低电压
复用:该引脚由其他模块进行托管输出,主机无法直接通过代码控制(例如串口发送引脚, 该引脚的输出只能由串口模块进行控制)
常用PIN口状态输出代码:
HAL_GPIO_WritePin(GPIOX,GPIO_PIN_X,GPIO_PIN_STATE);
输入:
输入上拉:当引脚悬空时,提供默认的高电压
输入下拉:当引脚悬空时,提供默认的低电压
输入浮空:当引脚悬空时,容易受外界电磁波干扰,输入电压不稳定
模拟模式:用于模拟信号的输入,一般用于ADC模拟信号的采集
常用PIN口状态读取代码:
GPIO_PinState(返回值):GPIO_PIN_RESET(0) /GPIO_PIN_SET(1)
GPIO_PinState HAL_GPIO_ReadPin(GPIOX,GPIO_Pin_X);
I/O最大输出速度:
理想状态下高低电平的不需要时间
现实状态下高低电平的切换需要时间,会产生带有坡度上升沿和下降沿。
(STM32中IO口的输出速度分为低速(2MHz)、中速(10MHz)、高速(50MHz))
在实际需求中,我们需要选取满足要求的最小值即可,斜率过大的上升沿和下降沿会使芯片功耗变大,同时会对其他电子期间产生电子干扰。