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

[复制链接]
492|13
 楼主| classroom 发表于 2025-6-20 20:16 | 显示全部楼层 |阅读模式
怎样解决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,防止编译器优化导致代码被移除。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

541

主题

3413

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部