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.

28335的EPwM1的int中断进不去

贴出部分程序跟中断配置相关的,求解答,连上板子,在中断函数里加了断点,怎么也进不去,程序直接在主函数那等待

void main()
{

 InitSysCtrl();

    DINT;

 InitPieCtrl();

    IER = 0x0000;
    IFR = 0x0000;

    InitPieVectTable();
 
 InitEPwm();
 InitAdc();
   
    EALLOW;
 SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;     //ePWM模块与基准时钟同步
 PieVectTable.EPWM1_INT=&EPWM1_isr;   //重新映射中断地址
 EDIS;
 IER|=0x0004;  //使能PIE组3向量 
 PieCtrlRegs.PIECTRL.bit.ENPIE=1;  //使能PIE模块
 PieCtrlRegs.PIEIER3.bit.INTx1=1;    //使能PIE组3中中断1
 PieCtrlRegs.PIEACK.all=0x0004;   //确保组1中的PIEACK位被清除
 EINT;   //开全局中断
 ERTM;   //开实时中断

 for(; ;)
  {   }

}

void InitEPwm(void)
{
   // Initialize ePWM1/2/3/4/5/6

   //tbd...
   InitEPwmGpio();
   EPwm1Regs.TBPRD=3750;     //150Mhz/2=75Mhz  增减模式3750*2=7500 10K载波
   EPwm1Regs.TBPHS.half.TBPHS=0;        //相位置0
   EPwm1Regs.TBCTR=0;        //计数初值为0
   EPwm1Regs.TBCTL.all=0x0082;   //时间基准2分频变为75Mhz 对称PWM 无初始相位 同步输出
   EPwm1Regs.CMPA.half.CMPA=3000;         //比较初始值为0
   EPwm1Regs.CMPB=0;         //比较初始值为0
   EPwm1Regs.CMPCTL.all=0x0000;   //CTR=0时加载比较值,映射寄存器加载模式
   EPwm1Regs.AQCTLA.all=0x0050;     //输出强制低
   EPwm1Regs.AQCTLB.all=0x0050;     //输出强制低
   EPwm1Regs.DBCTL.all=0x000B;     //死区控制寄存器,00 1011,EPWMxA为输入,主高互补,死区对EPWMxA
                                   //的上升沿和EPWMxB的下降沿完全使能
   EPwm1Regs.DBRED=0x0064;        //上升沿加死区2us  0x0064=100
   EPwm1Regs.DBFED=0x0064;        //下降沿加死区2us  0x000A=10

   EPwm1Regs.ETSEL.bit.INTEN=1;     //使能EPwm1中断
   EPwm1Regs.ETSEL.bit.INTSEL=2;   //使能TBCTR=TBPRD事件
   EPwm1Regs.ETPS.bit.INTPRD=1;  //第一个事件产生中断,EPWM1中断
   EPwm1Regs.ETCLR.bit.INT=1;  //清楚中断标志位

   EPwm2Regs.TBPRD=3750;     //150Mhz/2=75Mhz  增减模式3750*2=7500 10K载波
   EPwm2Regs.TBPHS.half.TBPHS=0;        //相位置0
   EPwm2Regs.TBCTR=0;        //计数初值为0
   EPwm2Regs.TBCTL.all=0x0082;   //时间基准2分频变为75Mhz 对称PWM 无初始相位 同步输出
   EPwm2Regs.CMPA.half.CMPA=3000;         //比较初始值为0
   EPwm2Regs.CMPB=0;         //比较初始值为0
   EPwm2Regs.CMPCTL.all=0x0000;   //CTR=0时加载比较值,映射寄存器加载模式
   EPwm2Regs.AQCTLA.all=0x0050;     //输出强制低
   EPwm2Regs.AQCTLB.all=0x0050;     //输出强制低
   EPwm2Regs.DBCTL.all=0x000B;     //死区控制寄存器
   EPwm2Regs.DBRED=0x0064;        //上升沿加死区
   EPwm2Regs.DBFED=0x0064;        //下降沿加死区

   EPwm3Regs.TBPRD=3750;     //150Mhz/2=75Mhz  增减模式3750*2=7500 10K载波
   EPwm3Regs.TBPHS.half.TBPHS=0;        //相位置0
   EPwm3Regs.TBCTR=0;        //计数初值为0
   EPwm3Regs.TBCTL.all=0x0082;   //时间基准2分频变为75Mhz 对称PWM 无初始相位 同步输出
   EPwm3Regs.CMPA.half.CMPA=3000;         //比较初始值为0
   EPwm3Regs.CMPB=0;         //比较初始值为0
   EPwm3Regs.CMPCTL.all=0x0000;   //CTR=0时加载比较值,映射寄存器加载模式
   EPwm3Regs.AQCTLA.all=0x0050;     //输出强制低
   EPwm3Regs.AQCTLB.all=0x0050;     //输出强制低
   EPwm3Regs.DBCTL.all=0x000B;     //死区控制寄存器
   EPwm3Regs.DBRED=0x0064;        //上升沿加死区
   EPwm3Regs.DBFED=0x0064;        //下降沿加死区
}

interrupt void EPWM1_isr()
{
 EPwm1Regs.CMPA.half.CMPA=2000;
 ADSAMPLE();
 PLL_PI();
 if(k<=1600);              //延时四个电网周期发脉冲
    {
      k++;                  //EPwm初始化里已强制低
      if(k==1600)
   {
    EPwm1Regs.AQCTLA.all=0x0060;  //比较匹配CMPA时高有效
  EPwm1Regs.AQCTLB.all=0x0090;  //比较匹配CMPA时低有效
  EPwm2Regs.AQCTLA.all=0x0060;
  EPwm2Regs.AQCTLB.all=0x0090;
  EPwm3Regs.AQCTLA.all=0x0060;
  EPwm3Regs.AQCTLB.all=0x0090;
  k=1601;
   }
    }
 CURRENT_PI();
 SVPWM();
 EPwm1Regs.ETCLR.bit.INT=1;    //清楚EPWM那个相应的中断标志
 PieCtrlRegs.PIEACK.bit.ACK3=1;   //响应同组中断
    EINT;    //开全局中断

}