STM32G030C8T6的定时器出现了定时不稳定的情况
情况是这样的外部中断检测到上升沿,进入中断将TIM打开,拉高PD3。然后TIM溢出进入中断拉低PD3并关闭TIM。实现一个脉冲信号,用定时器的定时时长决定这个脉冲的宽度,但是这个脉冲宽度在不停变化如上图
担心是定时器的优先级问题,于是将优先级改到最高级问题依然存在
有什么办法可以避免出现这种情况吗?
情况是这样的外部中断检测到上升沿,进入中断将TIM打开,拉高PD3。然后TIM溢出进入中断拉低PD3并关闭TIM。实现一个脉冲信号,用定时器的定时时长决定这个脉冲的宽度,但是这个脉冲宽度在不停变化如上图
有什么办法可以避免出现这种情况吗?
没办法避免这个现象。
STM32 CPU 指令执行周期不是固定的,有的汇编指令执行的长,有的汇编指令执行的短。
定时器中断(或其他类型的中断),在中断信号触发中断时,需要等CPU的当前汇编指令执行完成,才跳转到中断服务程序。由于在中断触发时,当前的汇编指令并不固定,汇编指令执行的时间也不固定,就会使中断程序的进入时间有抖动。就会出现你这个现象。