chuuya 发表于 2024-10-26 10:43

华大hc32l136的官方延时函数delay10us不准确

目前需要一个us级延时,来控制pwm波的间歇性输出,结果官方的delay10us函数实测一点也不准,是设置值的5倍之多;换了个方法用tim2中断来延时,结果开了tim2中断会影响tim0的pwm输出?

b5z1giu 发表于 2024-11-11 23:31

在使用微控制器进行精确的微秒级延时时,可能会遇到一些挑战,尤其是在使用中断和定时器时。


cen9ce 发表于 2024-11-12 07:11

使用硬件定时器进行延时,硬件定时器通常比软件延时更精确。你可以使用一个独立的定时器来实现微秒级延时,而不影响其他定时器的功能。

d1ng2x 发表于 2024-11-12 08:47

避免定时器之间的干扰,如果你发现开启 TIM2 中断会影响 TIM0 的 PWM 输出,可能是因为中断优先级设置不当或中断处理时间过长。

g0d5xs 发表于 2024-11-12 09:23

调整中断优先级:确保 TIM2 的中断优先级低于 TIM0 的中断优先级。

kaif2n9j 发表于 2024-11-12 10:44

优化中断处理函数:尽量减少 TIM2 中断处理函数中的代码量,避免在中断处理函数中执行耗时操作。

l1uyn9b 发表于 2024-11-12 12:22

使用软件延时进行粗略延时,如果硬件定时器无法满足需求,你可以使用软件延时进行粗略的微秒级延时。虽然软件延时不如硬件定时器精确,但在某些情况下可以作为替代方案。

lamanius 发表于 2024-11-12 13:55

为了实现精确的微秒级延时并避免定时器之间的干扰,建议使用独立的硬件定时器(如 TIM3)进行延时,并调整中断优先级以避免干扰。如果硬件定时器无法满足需求,可以考虑使用软件延时作为替代方案。

liu96jp 发表于 2024-11-12 14:36

一般要是延时要求很准确,可以考虑芯片的滴答定时器吧

lix1yr 发表于 2024-11-12 14:45

其实就是定时器的优先级冲突了,我觉得你优化一下就好了

p0gon9y 发表于 2024-11-12 15:23

一般定时器做计时器的话,应该误差不会很大才对啊,在中断里做什么业务时间长了?

4c1l 发表于 2025-1-31 11:41

新年好呀,新年好呀。

MrChen93 发表于 2025-5-27 12:10

可以检查下时钟源

初级工程渣 发表于 2025-6-30 15:25

当误差达到 5 倍时,核心问题可能是时钟源未正确匹配延时函数的设计基准。
页: [1]
查看完整版本: 华大hc32l136的官方延时函数delay10us不准确