基于STM32和外部中断控制的霍尔传感器频繁进中断的问题

主控用了STM32F103RBT6,用霍尔触发外部中断。

问题:板子通电,在没有触发霍尔传感器的情况下,程序会一直进入外部中断。拔掉霍尔传感器后,程序便不进入中断。

原因分析:插上霍尔传感器就会触发中断;拔下之后便不会触发中断,不适用直接拉低引脚触发可以进中端。说明程序没有问题,是霍尔传感器有问题,或者是霍尔传感器的外围电路有问题。

解决办法:经过查找资料当外部中断设置为下降沿触发时(我的程序设置为下降沿触发中断),单片机中断会特别灵敏或者是不稳定,这是STM32有的Bug吧。然后查找霍尔的数据手册,发现我少了一个电容,没有电容的滤波,会被影响而触发中断。加上滤波电容后便可以滤掉杂波,使信号稳定,这样单片机便不会无缘无故的进中断了。

这是有问题的电路

然后修改了霍尔的外部电路

程序便不会无缘无故的进入中断了,真是血的教训,检查了好几天愣是没有查出来。教训:遇到问题先查数据手册。

.如果外部电路没有问题,将中断的消抖可以增加,这样也可以起到作用。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用外部中断控制PWM占空比的方法是通过输入信号的上升沿或下降沿触发外部中断,然后在中断服务子程序中更改PWM的占空比。以下是一种可能的实现方式: 首先,需要设置外部中断的触发方式为上升沿或下降沿触发。这可以通过配置外部中断控制寄存器来实现。 在程序中,可以定义一个全局变量来保存PWM的占空比值。当外部中断触发时,中断服务子程序。 在中断服务子程序中,首先读取需要改变的PWM占空比的值。这可以通过外部中断参数、计时器或其他外部信号来确定。 然后,根据读取到的占空比值,计算并更新PWM模块的相关寄存器,以实现占空比的改变。 最后,中断服务子程序完成后,恢复程序执行。 需要注意的是,为了避免中断频繁触发造成系统开销和不稳定性,可以在中断服务子程序中加入一些延时或限制触发频率的逻辑。 总之,通过设置外部中断的触发方式和编写中断服务子程序,我们可以实现通过外部中断控制PWM占空比的功能。 ### 回答2: 使用外部中断控制PWM占空比的方法如下: 首先,我们需要一个可以产生中断信号的外部设备,例如一个按钮、传感器或者其他外部输入设备。当这个外部设备产生一个中断信号时,我们希望能够根据中断信号的触发来改变PWM占空比。 其次,我们需要一个能够接收外部中断信号并作出相应操作的微控制器或单片机。这个微控制器需要具备中断功能,并且能够通过中断服务子程序(ISR)对中断行处理。 当外部设备产生中断信号时,中断信号会触发微控制器的中断引脚。微控制器的中断服务子程序会立即执行,此时可以在中断服务子程序中编写相关代码来改变PWM占空比。 在中断服务子程序中,我们可以通过改变PWM的周期和占空比来实现对PWM的控制。具体操作可以根据具体的微控制器型号和开发环境来确定。 在代码中,我们可以根据中断信号触发的条件来判断应该如何改变PWM占空比。例如,如果是按钮按下产生中断信号,我们可以在中断服务子程序中将PWM占空比增加一个固定值;如果是传感器检测到某种事件产生中断信号,我们可以根据传感器的输出值来动态改变PWM占空比。 通过使用外部中断控制PWM占空比,我们可以根据外部事件的触发来实现动态的占空比调节,从而实现对PWM输出信号的精确控制。 ### 回答3: 使用外部中断控制PWM占空比的方法如下: 首先,PWM(Pulse Width Modulation)是一种通过调节信号的脉冲宽度来控制电压或电流平均值的技术。占空比即表示高电平的占比,可以用来控制输出的电压或电流大小。 外部中断是一种响应外部事件(比如按键按下、传感器检测到信号等)的控制方式。此处我们将利用外部中断控制PWM的占空比。 具体步骤如下: 1. 首先,设置一个定时器用来产生PWM信号。定时器可以根据需求选择合适的工作模式和频率。 2. 将PWM信号连接到外部中断引脚,通常是将输出引脚与外部中断引脚连接。 3. 设置外部中断触发模式。当外部中断引脚接收到信号变化时,触发中断服务程序。 4. 在中断服务程序中,根据外部事件的发生来控制PWM的占空比。 例如,当按下一个按键时,外部中断引脚接收到信号变化,触发中断服务程序。在中断服务程序中,我们可以使用特定的算法或逻辑来改变PWM的占空比。这可以通过改变定时器的相关寄存器值来实现。 通过以上方法,我们可以利用外部中断控制PWM的占空比。每次外部事件发生时,都会触发中断,并在中断服务程序中对PWM的占空比行调整,从而实现对PWM输出电压或电流的控制。 需要注意的是,具体的实现方法可能因硬件设备和开发环境的不同而有所差异。上述步骤仅作为一般参考。在实际应用中,还需根据具体情况行适当的调整和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值