CubeMX生成工程,HAL_Delay函数延时很不准确
很长时间没有使用CubeMX了,今天弄了一个简单的工程,需要使用HAL_Delay函数,但是测试发现误差相差很大。排查很久,依然没找到问题。偶然间,将优化等级从O3改为O0(CubeMX生成的工程默认使用O3优化等级),现象才恢复正常。
额,不知道大家有没有遇到类似问题?
我总感觉CubeMX不应该会产生这种问题,难道是我哪里配置错了......
我使用原子探索者开发板,CubeMX版本6.9.1 本帖最后由 Himem 于 2023-12-25 14:50 编辑
systick设置问题? 外部时钟配置的和实际使用的一致吗? 时钟树?
优化问题? 应该是没激活外部晶振 diyeyuye 发表于 2023-12-25 17:38
外部时钟配置的和实际使用的一致吗?
(引用自3楼)
我使用原子的板子,外部晶振8M,然后使用CubeMX默认配置生成到主频168MHz,我感觉应该时钟没有问题 ibmx311 发表于 2023-12-25 18:48
应该是没激活外部晶振
(引用自5楼)
我使用了外部晶振,我现在的现象是优化O0就可以,O3不可以。
如果是晶振问题,这里解释不通 先把mco输出打开,确认晶振和主时钟正常 Himem 发表于 2023-12-25 14:46
systick设置问题?
(引用自2楼)
这就是cube 和 hal 的香?
前期省时间,后面出现问题两眼一抹黑。 jingwaner 发表于 2023-12-25 22:17
这就是cube 和 hal 的香?
前期省时间,后面出现问题两眼一抹黑。
(引用自10楼)
用标准库没坑?hal香的地方多了去了。 本帖最后由 kitten 于 2023-12-25 23:06 编辑
你把HAL_Delay的中断优先级提高点试试,
看这里
https://cloud.tencent.com/developer/article/2094147 jingwaner 发表于 2023-12-25 22:17
这就是cube 和 hal 的香?
前期省时间,后面出现问题两眼一抹黑。
(引用自10楼)
赞同
目前cube仅仅是练手阶段
等今后日趋成熟之后在考虑 平时没时间,我重新买了一块板子,周末我再验证下,确保不是硬件的原因,到时候再来回复各位!
我是一直想不通优化是怎么优化...... 我估计就是优化pll,通过被设置的目标频率和基准晶振改变各个分频器的分频比,以便获得尽量合理的鉴频频率,从而达到好的相位噪声小的抖动和提高锁定速度 肯定是优化的时候出问题了,我一般都不开优化,哈哈 对比o3和o0时的相关寄存器值
页:
[1]