如何避免STM32C0 SysTick定时任务误差?
如何避免STM32C0 SysTick定时任务误差? 是不是用了 HAL_Delay 或 osDelay 这类函数?这些本身就有点误差。 如果系统里有高优先级中断,确实可能影响到 SysTick 的准确性。 你可以试试用TIM定时器替代SysTick,精度会更稳。 定时误差一般是因为Tick时间不准,检查一下HCLK频率配置。 FreeRTOS下建议不要用SysTick当调度源,直接用TIM做系统时基。 有没有长时间关中断的操作?那样会导致SysTick中断延后。 如果是用 HAL_GetTick() 这种函数,建议结合 DWT 或定时器做微调。 我用过C0系列,SysTick 配 1ms 会有点累积误差,调成TIM2后好了。 中断函数里别做太多事,越忙Tick越容易跑偏。 如果对时间精度要求高,建议引入外部RTC或硬件时钟基准。 使用外部晶振替代内部 RC;2. 配置 SysTick 使用 HCLK/8 分频;3. 避免在中断中执行耗时操作;4. 定期校准时间基准。 配置精准系统时钟,避免中断阻塞,使用滴答定时器重载值计算补偿。
页:
[1]