This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教 PWM 中断顺序



如果设置了pwm1和pwm2同频率,同时设置了两个pwm的中断,那么中断的执行顺序是怎么的呢?

  • 如果设置了pwm1和pwm2同频率,同时设置了两个pwm的中断,那么中断的执行顺序是怎么的呢?
    Eric:
    如果两个中断同时来,那么会根据两者的中断优先级来判断哪个中断先执行,从而进入中断服务函数。如PWM1中断优先级比较高,则先进入PWM1的中断优先级,PWM2等待PWM1的中断服务函数执行完之后,再执行。
    如果两个中断不同时来的话,那么先到先执行。
  • 请参考PWM模块datasheet Event-Trigger Submodule。
  • 这个问题描述得不够清楚。

    两个EPWM相同频率不一定会在同一时刻产生中断,因此你需要说明它们分别在什么时候(计数过零点ZRO?CMPA up/down?CMPB up/down?计数周期点TBPRD?)产生对应的中断。

    如果它们不是同时产生,那么就是先来先到的原则,反之,如果同时产生,由于默认情况下相同类型的中断(特指计数中断,或者TZ中断),EPWM1的优先级高于EPWM2,则前者先执行后者再执行,而如果你配置了优先级且允许中断嵌套,则可以打断。

    以上讨论均基于没有中断正在执行的情况,因此还有另外一种情况需提及,即某个其它中断正在执行的过程中,如果没有使能中断嵌套,然后产生了EPWM2的中断,则EPWM2中断需要等待,但如果等待的过程中又产生了EPWM1的中断,则EPWM1中断也需要等待,那么在其它中断执行完成退出时,先执行的中断将会是EPWM1的,而不是先到的EPWM2的,因为前者优先级高。

  • 看来不能码字太多。中途接一个15分钟的电话回来,问题已经解决了。