单片机如何选择高电平触发还是低电平触发 这两者有什么区别?我一般是用低电平触发,然后上拉电阻10k 加一个104电容从io到地。可有时候还是会被干扰,请问有什么好方法吗?有看到用npn管加电阻的 但不明白为什么这么做。


加光耦。首先搞清楚你的gpio 设置在什么模式,带不带内部上拉。

可以考虑用轮询,没必要非要用中断。

加软体消抖。

谢邀,本职工作是嵌入式软体开发,不过单片机作为前置技能也有基本的掌握,目前题主的问题看来应该是为了弄明白为什么要分成高电平触发和低电平触发,在什么时候使用两种触发方式,该如何选择。

其实就单纯的软体层面考虑,这两种方式在设计上都是相同的,根据自己配置不同选择即可,但是在整个系统层面考虑的话,就跟硬体有关,一般电平触发用于状态检测,最终跟系统异常处理和控制挂钩,所以用中断是保证响应实时性比较好的做法(系统开发中也可以用专门的检测线程来实现),具体的选择要根据硬体设计,比如产品采用的红外对管带源,采用干节点,那么你的检测机制就可以设置成高电平触发,反之就可以使用低电平触发。

至于题主所说的受干扰,可以直接采用楼上所说的软体滤波方式。


你所说的触发,是指中断触发方式?


前面康安的回答已经说了我想说的,至于加三极体的电路,有时候是为了反相,还有增强驱动,加快电平上升/下降、使波形更陡的作用。

如果触发指的是外部中断,高级一些的MCU可以设置触发沿(上升or下降),低端一些的估计就不能了。

如果触发仅仅指的是外部信号(比如按键之类的),那高低电平取决于你的程序。

我想你的问题可能是指如何设置才能更好避免干扰导致的误触发吧?

如果是,以下是我的idea,

(1)软体去抖

(2)看下MCU datasheet,I/O是否有Hysteresis,没有的话可以考虑I/O+施密特触发器

(3)最根本的是找到干扰的原因,前面的仅仅是治标,debug最终目的还是要治本。


我stm32一般就直接接一个按键的,都没啥大问题。估计是你单片机引脚配置没配好。

(还有你这个问题和描述有点莫名其妙,我是按照你的描述回答的。)
推荐阅读:
相关文章