对于普通的IO口的应用,配置会比较简单,主要就以下几个步骤: 1.打开相应IO口的时钟; 2.打开IO口相应引脚位; 3.配置IO口的模式; 4.初始化IO端口。 对于STM32的IO口可以根据需要由软件配置成8种模式: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 STM32的IO口灌入电流和输出驱动电流最大是多少? 最大可以输出8mA,灌入20mA,但要保证所有进入芯片VDD的不能超过150mA,同样所有从VSS流出的电流也不能超过150mA。 芯片手册这些参数都有的啊,一般配置IO的话有三个选项10MA,20MA,50MA,可以看情况配置,往大的配置也没有关系,实际使用是多少就是多少 1,浮空输入的时候,你想输入大电流都难。浮空输入,内阻比较大,你得很高的电压,这样直接超过STM32的上限了。 2,推完输出,数据手册上最大电流是25ma,总电流也是25ma。实测可以上到60多mA。不过建议单个IO最好不要超过10mA。 用的最多的也就是推挽输出、开漏输出、上拉输入。在这里做一个总结: 一、推挽输出: 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 二、开漏输出: 输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点: 1、利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。IC内部仅需很小的栅极驱动电流。 2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。) 3、开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。 4、可以将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,即“线与”。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。 三、浮空输入 顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。 四、上拉输入/下拉输入/模拟输入: 这几个概念很好理解,从字面便能轻易读懂。 五、复用开漏输出、复用推挽输出:. 可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。
|