SysTick定时器跟我设置的不一样,是不是被什么抢走了?
设置1ms节拍,打印出来却有偏差,是不是优先级设置有问题?看手册SysTick默认是外部时钟吗? 是不是被别的中断打断了SysTick? HAL库里的Tick用的SysTick吗? 我这边用TIM替代SysTick更准。 看看主频设的是不是准的? 低功耗模式回来后SysTick可能会乱。 尝试调一下中断优先级顺序。 有没有用FreeRTOS?它也会改Tick。 打点调试看看多久跑一次Tick。 你用debug看下LOAD和VAL是多少? 主要得看偏差多少,把SysTick的中断优先级提高一点 用示波器观察,systick使用外部的32768hz晶振。最多实现1.23ms的延时,不知道什么原因。减小load的值也无法降低延时了 systick很靠谱的的啊!
它也不能使用LSE晶振输入源吧 在STM32U5中,SysTick定时器出现节拍偏差,可能由中断优先级设置不当、代码执行效率问题、硬件噪声干扰或系统时钟配置错误引起
当多个外设共享相同的中断线或存在更高优先级的中断抢占CPU资源时,可能导致SysTick中断响应延迟,从而影响计时精度。 确保SysTick定时器的优先级设置合理,避免被其他高优先级中断频繁抢占。例如,在STM32中,可通过NVIC_SetPriority函数来设置SysTick的中断优先级。 合理规划系统中断的优先级,对于对实时性要求较高的任务,赋予其较高的优先级 滴答定时器本身优先级就比较低吧,不像是优先级的问题啊 程序中的其他部分可能占用过多CPU时间片,使得SysTick计数未能及时更新,进而造成延时误差
页:
[1]