[STM32F4] 用SysTick定时器做延时不准,是浮点的锅?

[复制链接]
 楼主| Pulitzer 发表于 2025-5-9 07:38 | 显示全部楼层 |阅读模式
系统滴答时钟是用的默认配置,用HAL_Delay结果偏得离谱,是不是和FPU有关?
Clyde011 发表于 2025-5-9 07:41 | 显示全部楼层
你是不是加了浮点运算,卡主循环了?
周半梅 发表于 2025-5-9 07:42 | 显示全部楼层
你是不是开了FPU但是没加Lazy stacking?
公羊子丹 发表于 2025-5-9 07:43 | 显示全部楼层
看一下主频是不是配置对了?
帛灿灿 发表于 2025-5-9 07:44 | 显示全部楼层
HAL_Delay会被中断打断的你知道吧?
童雨竹 发表于 2025-5-9 07:45 | 显示全部楼层
用DWT试试看,SysTick不准很正常。
万图 发表于 2025-5-9 07:45 | 显示全部楼层
会不会是中断优先级太乱?
Wordsworth 发表于 2025-5-9 07:46 | 显示全部楼层
F411高频下SysTick确实容易不准。
Bblythe 发表于 2025-5-9 07:47 | 显示全部楼层
你试过用TIM代替SysTick延时不?
 楼主| Pulitzer 发表于 2025-5-9 07:48 | 显示全部楼层
会不会是别的中断占用时间太久?
Uriah 发表于 2025-5-9 07:49 | 显示全部楼层
HAL库里的延时本身就不是精确的。
白马过平川 发表于 2025-6-12 09:00 | 显示全部楼层
在STM32F4中使用SysTick定时器做延时不准,通常并非浮点运算的问题,而是由系统时钟配置错误、中断优先级设置不当、代码执行效率问题或硬件噪声干扰等因素导致
codingtuzi 发表于 2025-6-12 09:56 | 显示全部楼层
不是,要么是晶振的问题,要么是代码的问题。
HAL_Delay函数已经相当准了
温室雏菊 发表于 2025-6-12 10:00 | 显示全部楼层
系统时钟配置错误,SysTick使用系统的HCLK作为其时钟源。如果系统时钟配置不正确,会直接影响SysTick的工作频率,进而导致延时不准。比如,若外部晶振实际为8MHz,但代码中仍按默认的25MHz进行配置,就会使延时出现偏差
春日负喧 发表于 2025-6-12 11:00 | 显示全部楼层
代码执行效率问题,程序中的其他部分可能占用过多CPU时间片,使得SysTick计数未能及时更新,进而造成延时误差
probedog 发表于 2025-6-12 11:48 | 显示全部楼层
可能系统时钟配置不正确。
flycamelaaa 发表于 2025-6-12 11:54 | 显示全部楼层
中断优先级设置不当吧
stormwind123 发表于 2025-6-12 11:56 | 显示全部楼层
可能周围有电磁干扰吧
她已醉 发表于 2025-6-12 13:00 | 显示全部楼层
有用户在使用STM32F4时,调用HAL_Delay函数延时1s,实际感觉有3s左右。经排查发现,是因为PlatformIO编译默认调用了库里自带的stm32f4xx_hal_conf.h头文件,其中定义的外部晶振值为25MHz,而实际板子为8MHz,导致延时计算错误
powerantone 发表于 2025-6-12 15:00 | 显示全部楼层
程序中的其他部分可能占用过多CPU时间片,使得SysTick计数未能及时更新,从而造成延时误差。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

5711

帖子

0

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

144

主题

5711

帖子

0

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