classroom 发表于 2025-6-20 20:16

怎样解决STM32C0 SysTick定时任务误差问题?

怎样解决STM32C0 SysTick定时任务误差问题?

公羊子丹 发表于 2025-6-24 07:23

SysTick默认1ms节拍,如果任务太多或者中断太长,定时就会不准了。

周半梅 发表于 2025-6-24 07:24

你是不是在SysTick中断里做了太多事情?可以考虑把逻辑放主循环里处理。

帛灿灿 发表于 2025-6-24 07:25

建议用TIM定时器替代SysTick做高精度任务,SysTick适合节拍时钟。

童雨竹 发表于 2025-6-24 07:25

检查一下中断优先级配置,SysTick优先级太低容易被别的中断打断。

万图 发表于 2025-6-24 07:26

误差大说明你的系统负载可能太重了,试着优化下任务执行时间。

Wordsworth 发表于 2025-6-24 07:27

如果只是偶发误差,可以在主循环中加时间校准逻辑来做补偿。

Bblythe 发表于 2025-6-24 07:28

看看是否开启了中断嵌套或者有别的中断频繁触发,影响SysTick时序。

Pulitzer 发表于 2025-6-24 07:29

也可以用HAL_GetTick()对比定时偏移,但不适合做很精准的定时。

Uriah 发表于 2025-6-24 07:30

有些时候误差是因为系统时钟配置不准,建议检查下HSE或PLL设置。

Clyde011 发表于 2025-6-24 07:30

STM32C0资源不多,如果定时要求高,建议用TIMx + 中断组合更稳妥。

flycamelaaa 发表于 2025-6-24 10:32

用高精度外部晶振。

flycamelaaa 发表于 2025-6-24 10:33

精简代码,ISR中仅执行必要操作,避免复杂计算或耗时操作如浮点运算。

powerantone 发表于 2025-6-24 10:33

禁用优化,在ISR函数前添加__attribute__((used))或#pragma GCC push_options,防止编译器优化导致代码被移除。
页: [1]
查看完整版本: 怎样解决STM32C0 SysTick定时任务误差问题?