本文主要是介绍STM32 GPIO floating模式导致不稳定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
STM32的GPIO有8种模式,输入模式有模拟输入、floating模式、上拉模式和下拉模式,在实际应用中,由于浮空输入可能导致引脚电平不稳定和易受干扰,使用floating模式的时候要注意一些。
笔者在设计可调增益增益放大器(VGA)的时候,使用4个GPIO读取外部控制电压,根据约定的编码格式设定DAC的输出电压,从而设置VGA的增益,然而在测试发现,DAC的输出电压不稳定,有持续上升的趋势。经过多次实验、代码分析,发现并不是DAC的问题,而是GPIO的问题。GPIO模式当时选择的是floating模式,在系统复杂的电磁环境中,浮空输入导致读取的电压不稳定,从而做出错误判断,对DAC做出错误的指示。
问题代码:
//选择引脚GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL3_GPIO_PIN; //设置引脚为浮空输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //使用结构体初始化按键GPIO_Init(OUTSIDE_VGACTRL3_GPIO_PORT, &GPIO_InitStructure);
随后改成下拉模式,问题就得到了解决,修改后的代码如下:
//满洲里国峰电子科技, www.guofengdianzi.com, 微信:guofengdianzi//选择引脚GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL3_GPIO_PIN; //设置引脚为下拉输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//使用结构体初始化按键GPIO_Init(OUTSIDE_VGACTRL3_GPIO_PORT, &GPIO_InitStructure);
作者:潇洒的电磁波(专业:射频芯片设计、雷达系统、嵌入式。欢迎大家项目合作交流。)
这篇关于STM32 GPIO floating模式导致不稳定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!