现象
一个接近开关输出高电平,接近时输出低电平。接到io引脚PB10上,触发外部中断。当PB10引脚模式设置为GPIO_NOPULL时,虽然在PB10上可以正常工作,但是接到PB2甚至其他引脚,也可以和PB10一样触发中断。即引脚之间相互影响。
问题分析
一般来说,需要区分这个GPIO口用于输入还是输出。
如果是output,那个一般选择GPIO_NOPULL,这样,引脚才能根据你的output数据,进行正确输出。
如果是input,那么需要看具体应用的默认输入值是0还是1. 如果默认是输入0,则最好配置为GPIO_PULLDOWN,反之则配置为GPIO_PULLUP.
这样做,主要是为了外部电路在没有上下拉的情况下,出现不确定情况。有许多硬件工程师设计电路时,会在GPIO口的外部设计上下拉电阻,这和内部配置GPIO_PULLUP/GPIO_PULLDOWN是一个目的,且效果相同。PULLUP&PULLDOWN针对输入模式,比如我们一个单片机的I / O脚接一个按键的左端,按键的右端接正电源,那么我们就要设置I /
O脚为下拉模式,因为这样才能使得按键按下去的时候,能把I /
O脚拉高,不然设置上拉模式的话,即按键的功能等于摆设。同理,如果按键另一端接地,我们就要设置为上拉模式了。NOPULL针对于输出模式,输出高电平低电平信号d等
解决办法
默认高电平,所以设置为GPIO_PULLUP,解决问题。
参考博客
1、GPIO口的pull up和pull down,no pull的意义以及怎么配置
2、NOPULL,PULLUP,PULLDOWN三种模式的理解