Timer的中断触发太频繁怎么回事?
明明只想1秒触发一次,结果每几ms就来一次,是预分频器不对吗?我用的是系统滴答配合Timer,效果还行。 C0系列有些定时器分频器很小,要注意。 你设的PSC和ARR是多少? 会不会用了内部时钟,但没除频? 我加了逻辑判断,只响应每第10次。 我试过设置一次性模式就没问题了。 是不是重复装载没清除? 看一下CNT是不是跑太快了。 加个LED闪烁确认频率再调中断吧。 中断标志位记得清除,否则一直进。 APB时钟未分频或分频比不当,TM32C0的定时器时钟(TIMxCLK)由APB总线时钟(PCLKx)经过预分频得到。若APB时钟未分频(如PCLKx=HCLK),且定时器预分频器(PSC)未正确配置,可能导致定时器实际计数频率远高于预期
系统时钟HCLK=64MHz,APB1时钟PCLK1=64MHz(未分频),若PSC=0(未预分频),则TIMxCLK=64MHz。若ARR=999(1000计数周期),中断频率为64MHz / (999+1) = 64kHz,远超需求。
定时器时钟源可能被误配置为内部高速时钟(如HSI)而非APB时钟,导致计数频率异常。
硬件故障或外设配置冲突,定时器输入捕获/PWM模式干扰
预分频器值过小,PSC用于将定时器时钟分频,若PSC值过小(如PSC=0),则计数频率接近TIMxCLK,导致中断触发频
预分频器(PSC)或自动重装载值(ARR)设置不当
若定时器被配置为输入捕获(IC)或PWM输出模式,且未正确初始化相关寄存器(如CCRx),可能导致计数器行为异常
中断服务函数未及时清除标志位,在中断服务函数(ISR)中未手动清除更新中断标志(UIF),可能导致中断重复触发
系统时钟(SYSCLK)或APB时钟配置错误(如未正确配置PLL),导致定时器时钟源异常
页:
[1]