stm32如何检测30个开关的输入

2019-07-21 08:39发布

想用STM32的IO口检测30个电源开关是否被按下。
这些开关都控制着3.3V电压输出,没按下时,开关没有输出,按下时,开关输出3.3V。

我想把IO口设置为下拉输入,接到开关的3.3V输出上。这样可以检测按键是否按下。


但是,测试时发现,对一个IO口设置为下拉输入,那么3.3V接到这个IO口时,由3.3V流向单片机该引脚的电流为8ma左右。
如果按照这个电流值计算的话,那么30个IO口就会有240ma电流。
而STM32输入灌电流是不允许这么大的。

网上说,stm32内置的上下拉电阻典型值都是40K,

所以说,我这种检测方式是不可行的?
有没有其他更好的方法呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 14:21
1,直接接30个IO口。
2,用74LS164外扩.
d1z1y2
2楼-- · 2019-07-21 18:58
可以接成矩阵的方式,或者直接用并转串行的芯片
leiyitan
3楼-- · 2019-07-21 22:11
mcp23017 两片就好了
木凡
4楼-- · 2019-07-22 01:50
应该是没有那么大电流的,就算电阻是1K,3.3V/1000R=3.3mA,30个同时按下也就100mA这样;最好不要3.3V直接接到IO口,最简单就是每个IO串个1K左右的电阻
hgr211
5楼-- · 2019-07-22 07:28
 精彩回答 2  元偷偷看……

一周热门 更多>