有个项目需要用到很多按键,照例先用开发板调试,用的原子的探索者开发板,移植之前的代码(支持按下、弹起、长按、按键组合),在按键调试的时候,发现按下响应时间比较快,但是弹起响应很慢,接近1s的时间,一开始以为代码移植的问题,调试无果。
后来以为硬件上有硬件滤波电容,容值太大?
查了一下原理图发现电路设计的时候,没有加外部上拉,而写代码习惯了硬件带外部上拉的电路,所以IO没有配置上拉,这就导致输入IO没有上拉,所以当按键松开时,电平恢复为上拉的时间就不确定了。
解决:在IO初始化的时候,配置为上拉即可。
记录一下,防止以后再次入坑。
以为电路是这个样子的:
实际电路是这个样子的(KEY直接接了IO,没有上拉电阻):