华大hc32l136的官方延时函数delay10us不准确
目前需要一个us级延时,来控制pwm波的间歇性输出,结果官方的delay10us函数实测一点也不准,是设置值的5倍之多;换了个方法用tim2中断来延时,结果开了tim2中断会影响tim0的pwm输出? 在使用微控制器进行精确的微秒级延时时,可能会遇到一些挑战,尤其是在使用中断和定时器时。使用硬件定时器进行延时,硬件定时器通常比软件延时更精确。你可以使用一个独立的定时器来实现微秒级延时,而不影响其他定时器的功能。
避免定时器之间的干扰,如果你发现开启 TIM2 中断会影响 TIM0 的 PWM 输出,可能是因为中断优先级设置不当或中断处理时间过长。
调整中断优先级:确保 TIM2 的中断优先级低于 TIM0 的中断优先级。
优化中断处理函数:尽量减少 TIM2 中断处理函数中的代码量,避免在中断处理函数中执行耗时操作。
使用软件延时进行粗略延时,如果硬件定时器无法满足需求,你可以使用软件延时进行粗略的微秒级延时。虽然软件延时不如硬件定时器精确,但在某些情况下可以作为替代方案。
为了实现精确的微秒级延时并避免定时器之间的干扰,建议使用独立的硬件定时器(如 TIM3)进行延时,并调整中断优先级以避免干扰。如果硬件定时器无法满足需求,可以考虑使用软件延时作为替代方案。
一般要是延时要求很准确,可以考虑芯片的滴答定时器吧
其实就是定时器的优先级冲突了,我觉得你优化一下就好了
一般定时器做计时器的话,应该误差不会很大才对啊,在中断里做什么业务时间长了? 新年好呀,新年好呀。 可以检查下时钟源 当误差达到 5 倍时,核心问题可能是时钟源未正确匹配延时函数的设计基准。
页:
[1]