STM32 的 IO 口相比 51 而言要复杂得多,所以使用起来也困难很多。首先 STM32 的 IO 口
可以由软件配置成如下 8 种模式:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽输出
7、推挽式复用功能
8、开漏复用功能
IO的使用分为:普通IO功能使用 and IO复用
普通io,看输入还是输出
复用,直接设置为复用即可
输入:
分为输入浮空,输入上拉,输入下拉以及模拟输入
输出就两种:
推挽式(Push-Pull)–> 可输出强高/低电平
开漏式(Open-Drain)–>输出强低电平,但是高电平得靠外部上拉,不过可以输出5V的高电平(上拉到5V)
疑问:就是在什么情况下使用什么模式,比如说在使用按键时,一般情况就是使用某某模式,还是说要根据实际情况使用不同的模式呢?如果是后者,那么该如何分析使用哪种模式呢?
解答:
分2点判断:
1,是用普通IO功能还是复用功能?
如果是普通IO,那么就要看输入还是输出,这个看第二点。
如果是复用功能,就设置为复用功能即可,没多选。
2,是用输入功能,还是输出功能。
如果是普通IO,看是输入还是输出。输出又分为推挽(可输出强高/低电平)和开漏输出(输出强低电平,但是高电平得靠外部上拉,不过可以输出5V的高电平(上拉到5V))。
如果是输入,有分为带上下拉电阻的输入,或者浮空输入。前者一般作为普通输入方式,可以给你剩下一个外部电阻。后者一般用于ADC转换之类的。
浮空,顾名思义就是悬浮在空中,上面用绳子一拉就上去,下面用绳子一拉就沉下去了。
上拉,下拉的设置主要还是看你外接的驱动电路的具体情况配置的。
开漏,就等于输出口接了个NPN三极管,并且只接了e,b. c极是开路的,你可以直接接一个电阻到3.3V,也可以接一个电阻到5v,这样在输出1的时候,就有5V的电压,也可以输出3.3V的电压了,而不接电阻上拉,这个输出高是不能实现的。
推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻