stm32的GPIO口复位后默认是浮空输入状态,如果GPIO口接收到的是高阻抗,那么读这个接口理论上得到的是0,但由于处于外部高阻抗状态,如果与该管脚所连接的器件比较大或线路比较长,就容易受到干扰,这时读出来未必是0,结果是不确定的。肯定可以读出来,但读出的数据没什么意义,实际工作中应该避免这种状态。要么利用内部上下拉电阻,要么在外部接正电源或地,使管脚有一个确定初始状态,再去读时看这种状态是否改变,就知道外部发生了什么。
如果是浮空输入,能读出数值,但数值可能是0,也可能是1,通常没有参考价值;
如果是上拉输入,能读出数值,数值是1;
如果是下拉输入,能读出数值,数值是0;
为什么能读出数值?因为CPU是从寄存器中读取数据的,寄存器位的状态只有两种:0或1,不存在没有状态的情况。
为什么浮空输入读出的值不确定?因为此时引脚的电压容易受周围环境电荷(电容效应)影响而处于不稳定状态
看你怎么配置。如果配置为上拉,读到1;如果配置为下拉,读到0;如果配置为浮空输入,读到的值不确定,可能为0,也可能为1,看周围的干扰。
GPIO的频率是用于实现输入和输出的,如果是输出,那么GPIO输出频率会低于这个设定频率;如果是输入,那么就是最高采样频率,也就是说一个沿到来时多久能发现的问题,涉及采样精度。
如果是输出,对于你的疑问的回答是不行。