|
|
|
@@ -1463,9 +1463,13 @@ static void PlsrRunControlBeginSeg(uint16_t seg_idx0) |
|
|
|
|
|
|
|
if (s_follow_cont != 0U) |
|
|
|
{ |
|
|
|
/* 分支 A:段间无缝(FOLLOW 或 ACT handoff),PWM 已在跑 */ |
|
|
|
/* 分支 A:段间无缝(FOLLOW 或 ACT handoff) */ |
|
|
|
PlsrPulseDriverClearOnePulseStop(); |
|
|
|
PlsrRunControlRefreshProfile(0U); |
|
|
|
/* |
|
|
|
* FOLLOW 真不停表:do_start=0 只改频。 |
|
|
|
* ACT 经 OPM 边界停表后 s_pwm_on 已为 0:须 Start 重开,否则无脉冲卡死。 |
|
|
|
*/ |
|
|
|
PlsrRunControlRefreshProfile((s_pwm_on == 0U) ? 1U : 0U); |
|
|
|
s_state = RC_RUN; |
|
|
|
s_follow_cont = 0U; |
|
|
|
PlsrRunControlArmActExtOnPulseStart(); |
|
|
|
@@ -1887,6 +1891,12 @@ void PlsrRunControlOnPulseIsr(void) |
|
|
|
{ |
|
|
|
s_act_cut_pending = 0U; |
|
|
|
s_act_handoff_keep = 1U; |
|
|
|
/* |
|
|
|
* TIM5 已 ArmOnePulseStop:本拍 UPDATE 后计数器会停。 |
|
|
|
* 必须清 s_pwm_on,否则 ActExpire 同向衔接走 RefreshProfile(0) |
|
|
|
* 时误判「表仍在跑」而不 Start,卡死在下一段入口。 |
|
|
|
*/ |
|
|
|
s_pwm_on = 0U; |
|
|
|
s_state = RC_IDLE; |
|
|
|
s_act_expire_req = 1U; |
|
|
|
PlsrRunControlWakePost(); |
|
|
|
|