久芯网

TIM1 定时器中断,低频中断正常,高频中断异常,时间不对。

avatar 凭轩 提问时间: 2023-07-26 23:08:27 / 未解决

7个回答
  • avatar 废鱼
    回答时间: 2023-07-26 23:37:01

    具体描述一下芯片名称,定时器达到多少频率以后异常,异常的判断标准,定时器是如何配置的。

  • avatar 凭轩
    回答时间: 2023-07-27 00:05:35

    用的是STM32F407VET6,TIM1时钟150Mhz,中断服务函数(溢出中断)中添加计数变量(cnt),进行PWM脉冲数计算。main函数while(1),进行脉冲数判断,关闭中断和PWM输出。设置PWM频率12.5Mhz时,仿真查看cnt,有参数显示,但while(1)内容未执行。调整为100KZ时,一切正常。

  • avatar xmshao
    回答时间: 2023-07-27 00:32:08

    看了你的补充描述,你的while(1)内没法正常计数,估计是因为高频时中断过于频繁,来不及运行用户程序的计数操作。如果这样的话, 或许根本就没有什么异常,只是个误会。

  • avatar 废鱼
    回答时间: 2023-07-27 00:54:17

    while里面的代码是如何判断的?是否一直在判断,还是有等待。如果定时器频率太高,某些操作可能导致判断不及时导致判断失败。

  • avatar 凭轩
    回答时间: 2023-07-27 01:11:40
    xmshao 发表于 2022-6-16 16:59
    看了你的补充描述,你的while(1)内没法正常计数,估计是因为高频时中断过于频繁,来不及运行用户程序的计数 ...

    需求是输出12.5mh的PWM,并且能够知道脉冲数。如果用其他定时器去计数的话,产生的中断数其实是一样的啊。同样会影响主函数执行的啊。除非是定义中断,只去查看计数器的计数值来判断脉冲数,而不是去通过中断计数。

  • avatar 凭轩
    回答时间: 2023-07-27 01:37:07
    废鱼 发表于 2022-6-16 17:06
    while里面的代码是如何判断的?是否一直在判断,还是有等待。如果定时器频率太高,某些操作可能导致判断不 ...

    一直在判断的,没有延时。

  • avatar butterflyspring
    回答时间: 2023-07-27 02:00:44

    大伙说的频率达到12.5MHZ,那么中断时间就0.08us。 中断程序跑不过来,所以程序跑不出来了,中断太快太频繁。

会员中心 微信客服
客服
回到顶部