Wordsworth 发表于 2025-6-20 07:22

C0用SysTick跑定时任务没准点

1ms跑着跑着就有误差,定时任务对不上了,不知道哪出了问题。

Clyde011 发表于 2025-6-20 07:27

任务太多会影响定时精度,注意一下主循环时间。

公羊子丹 发表于 2025-6-20 07:28

用TIM定时器会更准一点。

周半梅 发表于 2025-6-20 07:29

SysTick在跑中断多时确实不准。

帛灿灿 发表于 2025-6-20 07:30

优先级没设好也可能导致抖动。

童雨竹 发表于 2025-6-20 07:31

你有没有开RTOS?抢占会影响。

万图 发表于 2025-6-20 07:32

建议SysTick中断里只设置标志位。

Wordsworth 发表于 2025-6-20 07:33

改成TIM中断处理效率提升不少。

Bblythe 发表于 2025-6-20 07:34

看是不是中断响应被卡住了。

Pulitzer 发表于 2025-6-20 07:35

我每次任务开始都打印一次时间对比。

Uriah 发表于 2025-6-20 07:36

SysTick默认是1ms,改成更细粒度试试。

jcky001 发表于 2025-6-20 16:12

SysTick时钟源不稳定?

elephant00 发表于 2025-6-20 16:13

高优先级中断频繁触发,导致SysTick中断被延迟。

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

在CubeMX中配置SysTick优先级为最高,不被其他中断打断。

cr315 发表于 2025-6-20 17:12

是否是中断处理耗时过长?

cr315 发表于 2025-6-20 17:12

是否是中断处理耗时过长?

flycamelaaa 发表于 2025-6-20 19:14

未使用volatile修饰全局变量,导致编译器优化后变量更新不及时。

powerantone 发表于 2025-6-20 20:14

系统负载过高?

stormwind123 发表于 2025-6-20 22:15

若内核时钟由内部RC振荡器提供,建议切换为外部晶振提高稳定性。

probedog 发表于 2025-6-20 23:15

精简ISR代码,仅在ISR中设置标志位,复杂操作移至主循环。
页: [1]
查看完整版本: C0用SysTick跑定时任务没准点