大家好、我只是遇到了中断例程的问题。 我已经设置了 ePWM 来触发 ADC 的 SOC、然后在完成后设置中断。
void ConfigureADC (void) { EALLOW; // ADC-A AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4 AdcaRegs.ADCCTL2.bit.resolution = 0;// 12位分辨率 AdcaRegs.ADCCTL2.bit.SIADC1000 = 1;ADCCTL1.bit.ADCCTL1.ADC1/ ADCCTL1.ADC12/ ADCULES.ADCMOS.ADCMPOS/ ADC12/ ADC12/ ADCCTL1.ADC12/ ADCCTL1.ADC12/ ADC12/ ADCCTL1.ADCES.ADC12/ ADCMPOS/ ADC12/ ADD/ ADC12/ ADCES.ADC12/ ADC12/ ADCCTL1.AD //延迟1ms 以允许 ADC 加电 时间} void SetupADCepwm (void) { //选择要转换的通道并结束转换标志 EALLOW; AdcaRegs.ADCSO0CTL.bit.CHSEL = 0;// SOC0将转换引脚 A0 AdcocRegs.ADCOC0CTL.bit.ADCSCTRCSEL = 0x14周期;// ADCSCTRCSCTRL = 0x15个周期;ADCSCTRIGB.CL=0x7个周期; // ADCSCTRCSC0SEL = 0x14个周期 //在 ePWM2 SOCA/C AdcaRegs.ADCINTSEL1N2.bit.INT1SEL 上触发= 0;// SOC0结束将设置 INT1标志 AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志 AdcaRegs.ADCINTFLGCLR.BIT = 1;确保清除}/ INT1标志
我还按如下方式配置了 PWM:
空 InitEPwm2 (空)
{
EALLOW;
//假设 ePWM 时钟已启用
EPwm2Regs.TBCTL.bit.CTRMODE = 3;//冻结计数器
EPwm2Regs.TBCTL.bit.HSPCLKDIV = 1;// TBCLK 预分频器=/2
EPwm2Regs.TBPRD =周期2;//将周期设置为50000计数(2kHz)
EPwm2Regs.ETSEL.bit.SOCAEN = 0;//禁用组上的 SOC
EPwm2Regs.ETSEL.bit.SOCASEL = 2;//在周期匹配时选择 SOCA
EPwm2Regs.ETSEL.bit.SOCAEN = 1;//启用 SOCA
EPwm2Regs.ETPS.bit.SOCAPRD = 1;//在发生第一个事件时生成脉冲
EPwm2Regs.TBCTL.bit.SYNCOSEL = 0;//同步输出
EPwm2Regs.TBCTL.bit.PHSEN = 1;//启用相位加载
EPwm2Regs.TBCTL.bit.PHSDIR = 1;//设置相位方向
EPwm2Regs.TBPHS.bit.TBPHS = 0x0000;//相位为0
EDIS;
}
因此、我的问题是当 EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0 时、代码将进入我的中断服务例程、当它= 1时、代码将不会进入 ISR。 我们非常感谢您的任何帮助