我们在使用ST公司的STM32CubeMx工具对STM32芯片做管脚初始化配置时,点到某个管脚时会自动拉出一条长长的可配置的菜单选项。有人可能发现某些类似上面图形的情况,某管脚可以配置为ADC某输入通道,怎么同时还有个GPIO_analog选项呢?二者有什么差别?
ADC_Inx这个不难理解,就表示该GPIO可以作为ADC模拟输入通道,此时该GPIO也确实处在Analog模式。那还额外弄个GPIO_Analog干什么呢?跟ADC_Inx不是一个意思吗?
的确不是一个意思。
其实,GPIO_Analog跟GPIO_Input或GPIO_Output一样,也是GPIO工作模式的一个选项。具体到这里,ADC_Inx作为模拟输入通道,此时GPIO处于analog模式。但是,不能说GPIO配置在analog模式就是做ADC转换通道,它还可能做比较器、DAC等模拟外设的复用通道,也有可能纯粹只是被配置成Analog模式,跟其它模拟外设没有任何关联。
一般来讲,STM32的GPIO输入状态分为三类,其中Analog状态是GPIO输入模式的一种。
1、 上拉/下拉输入【push up/pull down】
2、 浮空输入【Floating input】
3、 模拟状态 【Analog】
对于前面1、2两种输入模式的GPIO功能框图如下: