• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于基本定时器的PWM输出完成中断问题

做平常心 2018-10-25 浏览量:1461

问题如下,我用TIM4的定时器输出176KHz的PWM脉冲,在HAL_TIM_PWM_PulseFinishedCallback中断回调中计数脉冲数,达到一定数量停止输出,但是结果是输出的脉冲数远多于定义的数量才停止,是怎么回事,把频率降低到40KHz左右就不会!

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 计数的函数是在哪里调用的,是不是main函数中,main函数中是不是还有其他的程序在运行呢

    这样检测计算的函数的调用并不是实时的,会有丢的情况的,

    最好是使用中断的方式进行计数的。

    • 发布于 2018-11-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 你应该在中断里面判断脉冲数量,否则很有可能程序还在跑,导致脉冲计数出现问题
    • 发布于2018-10-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好用中断自动停止,因为中断就是你发指令停止需要时间,这个时候脉冲会多出来
    • 发布于2018-10-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 你PWM输出频率太高,高于检测中断响应和清零的时间,那当然就会造成数据的误差了,所以降低频率就能避免这个误差。

    • 发布于2018-10-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断回调需要消耗一定的时间,在这段时间里面,又输出了几个脉冲,但实际上你只计数了一次
    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 主要是你的定时器中的中断次数太频繁,导致你的程序不能及时响应
    • 发布于2018-11-23
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于基本定时器的PWM输出完成中断问题