DSP28035的相关问题

问题遇到的现象和发生背景

写EPWM触发ADC采样的程序,用示波器测pwm波都没出,这是为什么

问题相关代码,请勿粘贴截图

#include "DSP28x_Project.h"
#include "DSP2803x_Device.h"
#define frequency 40000
#define EPWMCLK 200000000
unsigned int Frequency;//开关频率
float Duty;//占空比
unsigned int PWMTBPRD;//周期寄存器的值
unsigned int PWMCMPA;//比较值CMPA
float Vlotage0[];//存放电压采样结果
void configurADC(void);
void configurEPWM(void);
void adc_isr(void);
Uint16 ConversionCount;
void main(void)
{
InitSysCtrl();
InitGpio();
EALLOW;
InitEPwm1Gpio(); //GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;Disable pull-up on GPIO0 (EPWM1A)
EDIS;
DINT;//禁止中断
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.ADCINT1= &adc_isr;
EDIS;
configurADC();
configurEPWM();
IER |= M_INT1;
EINT;//打开中断
ERTM;
PieCtrlRegs.PIEIER1.bit.INTx1=1;

for(; ;)
{

}

}
void configurADC()
{
InitAdc();
ConversionCount=0;
//使能ADC时钟
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1;

//启动ADC
AdcRegs.ADCCTL1.bit.ADCPWDN=1;
DELAY_US(1000);

AdcRegs.ADCSOC0CTL.bit.CHSEL=0;//将SOC0转化为A0引脚
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=5;//由EPWM1A的soc0触发

AdcRegs.ADCSOC1CTL.bit.CHSEL=1;//将SOC0转化为A0引脚
AdcRegs.ADCSOC1CTL.bit.ACQPS=6;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL=5;//由EPWM1A的soc0触发

AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;
AdcRegs.INTSEL1N2.bit.INT1SEL=0;//ADC-A SOC0结束后触发ADC中断
AdcRegs.INTSEL1N2.bit.INT1E=1;//使能ADC中断
AdcRegs.ADCINTFLGCLR.bit.ADCINT1=1;//清除中断标志位

EDIS;

}
interrupt void adc_isr(void)
{
Vlotage0[ConversionCount] = (float)(AdcResult.ADCRESULT0)3.0/4096;
if(Duty>0.95)
{
Duty=0.95;
}
else if(Duty<0.05)
{
Duty=0.05;
}
PWMCMPA=Duty
PWMTBPRD;
EPwm1Regs.CMPA.half.CMPA=PWMCMPA;

  AdcRegs.ADCINTFLGCLR.bit.ADCINT1=1;//清除中断标志位
  PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;

}
void configurEPWM()
{
EALLOW;
Frequency=frequency;
PWMTBPRD=EPWMCLK/Frequency-1;

EPwm1Regs.TBCTL.bit.CTRMODE=TB_COUNT_DOWN;//向上计数模式
EPwm1Regs.TBPRD=PWMTBPRD;//设置PWM波周期
EPwm1Regs.TBCTR=0x0000;//清除计数值
//设置epwm时钟分频
EPwm1Regs.TBCTL.bit.CLKDIV=TB_DIV1;//TB_DIV1=0X0
EPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;//SA 影子寄存器
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//SB 影子寄存器
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//CTL=0时加载
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;//CTL=0时加载

EPwm1Regs.AQCTLB.bit.CAD=AQ_SET;//set PWM1A on event B,down count
EPwm1Regs.AQCTLB.bit.ZRO=AQ_CLEAR;// clear PWM1A on event B

EPwm1Regs.ETSEL.bit.SOCBEN=1;//使能B组的信号

EPwm1Regs.ETSEL.bit.SOCBSEL=1;//计数器为0时触发soc

EPwm1Regs.ETPS.bit.SOCBPRD=1;//第一次满足条件时就产生SOC信号
//使能EPWM1时钟
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK=1;
EDIS;

}

运行结果及报错内容

每报错,当出不了波

我的解答思路和尝试过的方法
我想要达到的结果