stm32 不同外部中断互相影响?

在调试小车车轮的计数,分别用两个外部中断的上升沿来对光栅编码器进行计数。MCU 使用的是stm32F103C8T6。思路很简单,我再用一个定时器1秒处罚一次中断。触发以后我就把两个外部中断的值给打印出来,这样就可以统计出来一秒钟小车车轮的转了多少圈。

但是却遇到一个奇怪的现象,把电路都接好,一个车轮转而另外一个车轮不转。却发现两个外部中断都在计数。首先先看反复检查下程序,确认没有问题。我用3.3v加杜邦线分别取碰触每一路,外部中断都可以单独计数。那么程序问题就可以排除了。那就看测速模块是不是有问题,用示波器分别量两个测速输出,车轮转的一边确实有测速信号输出,而没转的一路则是没有输出。这就能说明硬件也没有问题啊。

可事实是,我从串口打印出来的确实两个外部中断都有计数,莫非两个外部中断有干扰?外部没有思路,只能看芯片内部,突然就想到了电压。stm32的不同IO口耐压是不一样的,有的3.3v ,有的可以到5V。看了datasheet,哼哼,我用的PB0 和PB1是不支持5V电压的,而测试模块输出信号确实高电平为5V。

换了测速模块到3.3v,再测试,OK 了!  所以给stm32 io接5v的时候要查下数据手册看看是否支持5v电平。所以这里还有个思路就是不用PB0和PB1,换两个支持5v的IO口。

您可能还喜欢...

1 条回复

  1. 说道:

    (๑•̀ㅂ•́)و✧good