擦鞋匠 发表于 2023-12-25 14:43:53

CubeMX生成工程,HAL_Delay函数延时很不准确

很长时间没有使用CubeMX了,今天弄了一个简单的工程,需要使用HAL_Delay函数,但是测试发现误差相差很大。排查很久,依然没找到问题。
偶然间,将优化等级从O3改为O0(CubeMX生成的工程默认使用O3优化等级),现象才恢复正常。
额,不知道大家有没有遇到类似问题?
我总感觉CubeMX不应该会产生这种问题,难道是我哪里配置错了......
我使用原子探索者开发板,CubeMX版本6.9.1

Himem 发表于 2023-12-25 14:46:11

本帖最后由 Himem 于 2023-12-25 14:50 编辑

systick设置问题?

diyeyuye 发表于 2023-12-25 17:38:44

外部时钟配置的和实际使用的一致吗?

爱晴海玩偶 发表于 2023-12-25 18:00:06

时钟树?
优化问题?

ibmx311 发表于 2023-12-25 18:48:40

应该是没激活外部晶振

擦鞋匠 发表于 2023-12-25 18:51:49

diyeyuye 发表于 2023-12-25 17:38
外部时钟配置的和实际使用的一致吗?
(引用自3楼)

我使用原子的板子,外部晶振8M,然后使用CubeMX默认配置生成到主频168MHz,我感觉应该时钟没有问题

擦鞋匠 发表于 2023-12-25 18:53:40

ibmx311 发表于 2023-12-25 18:48
应该是没激活外部晶振
(引用自5楼)

我使用了外部晶振,我现在的现象是优化O0就可以,O3不可以。
如果是晶振问题,这里解释不通

liuqian 发表于 2023-12-25 19:11:08

先把mco输出打开,确认晶振和主时钟正常

擦鞋匠 发表于 2023-12-25 19:21:10

Himem 发表于 2023-12-25 14:46
systick设置问题?
(引用自2楼)

jingwaner 发表于 2023-12-25 22:17:52

这就是cube 和 hal 的香?

前期省时间,后面出现问题两眼一抹黑。

kitten 发表于 2023-12-25 22:39:18

jingwaner 发表于 2023-12-25 22:17
这就是cube 和 hal 的香?

前期省时间,后面出现问题两眼一抹黑。
(引用自10楼)

用标准库没坑?hal香的地方多了去了。

kitten 发表于 2023-12-25 23:04:25

本帖最后由 kitten 于 2023-12-25 23:06 编辑

你把HAL_Delay的中断优先级提高点试试,
看这里
https://cloud.tencent.com/developer/article/2094147

lb0857 发表于 2023-12-26 08:26:25

jingwaner 发表于 2023-12-25 22:17
这就是cube 和 hal 的香?

前期省时间,后面出现问题两眼一抹黑。
(引用自10楼)

赞同
目前cube仅仅是练手阶段
等今后日趋成熟之后在考虑

擦鞋匠 发表于 2023-12-26 09:17:48

平时没时间,我重新买了一块板子,周末我再验证下,确保不是硬件的原因,到时候再来回复各位!

isakura 发表于 2023-12-26 16:05:28

我是一直想不通优化是怎么优化......

ibmx311 发表于 2023-12-26 16:21:01

我估计就是优化pll,通过被设置的目标频率和基准晶振改变各个分频器的分频比,以便获得尽量合理的鉴频频率,从而达到好的相位噪声小的抖动和提高锁定速度

Stm32Motor 发表于 2023-12-26 17:59:37

肯定是优化的时候出问题了,我一般都不开优化,哈哈

winterw 发表于 2023-12-27 22:14:06

对比o3和o0时的相关寄存器值
页: [1]
查看完整版本: CubeMX生成工程,HAL_Delay函数延时很不准确