Thread 中讨论的其他器件:controlSUITE
工具/软件:Code Composer Studio
您好!
我使用的是 F28027 DSP、我正在从事一个制作三相 SPWM 闭环逆变器的大学项目。
我已经在 DSP 上生成了 SPWM 信号、但我不知道如何在项目中实现 ADC (仅编码而不是概念)。
我已经看到了一些 ADC 程序的示例、并尝试将它们添加到单个程序中、但它不起作用。
我尝试实现 ADC 程序的代码如下所示。 我找不到这方面的问题。
感谢您的任何帮助。
用户通过适当设置 // EPWM1_TIMER_TBPRD 变量来设置 SPWM 的频率。 PWM、递增和递减模式的频率、 //遵循以下公式:TPWM=2xTBPRDxTTBCLK、TTBCLK=SYSCLKOUT/(HSPCLKDIVxCLKDIV)。 //默认情况下:HSPCLKDIV=2、CLKDIV=1。 // //芯片 ROM 读取 PWM 的正弦。 正弦表由 // 512个元素组成。 //正弦 PWM 的频率由 timer0中断的周期定义。 //对于50Hz,必须读取正弦表,整个时间为20msec。 这意味 着// timer0中断必须每20/512毫秒发生一次。 //的常规类型为 ttimer=Tsin*FCPU/index。 //// 正弦的120度差由以下变量设定: //索引= 0,零度 //索引2= 170,120度 //索引3=340,240度 // // ////////--- ///-------------------------------------------- #include #include #include "DSP28x_Project.h"// DSP28x 头文件 #include "F2802x_common/include/f2802x_IQPrototypes.h" #include "F2802x_common/include/exclk.h"#include "f2802x_common/包含 "#f2802x_包含"#f2802x_common/包含"#f2802x/exclk.h/include #include #f2802x_common/包含"#f2802x/包含"#f2802x_gpio.h/include #include #include #f2802x/包含#include #f2802x_common.h/包含#f2802x/包含#include #f2802x/包含#f2802x/包含#f2802x/包含#include #f2802x/包含#include #f2802x_common.h/包含#f280n.h/包含#include #f2802x/包含#include #include "#f2802x/包含#f280n.包含#.包含#f2802x/包含#f2802x_common.h/包含#f280n.包含#.h // timer0 中断的中断原型函数 void CPU_timer0_ISR (void); void update_compare (void); //全局 PWM 变量 #define EPWM1_TIMER_TBPRD 14634 // 2050.2Hz 的周期寄存 器#define PHASE 120.0 //定义相位间的实数相位、120deg #define TTIMEREG 2343 // 50Hz SPWM UINT16 EPWM_PHASE=(EPWM1_TIMER_TBPRD* PHASE/180.0)的定时器中断;//从 ePWM 模块 UINT16 DUTAY_CYCLE = 1000看到的相位;//初 始设置占空比50% UINT16 DUTAY_B=1000;//初始设置占空比50% UINT16索引= 0; //零度正弦 uint16 index2=170; // 120度正弦差 uint16 index3=340; // 240度正弦扩散 UINT16死区时间_R=5.0; //死区时间5usec UINT16死区时间_F=5.0; //死区时间5usec //处理设置 cpu_handle myCpu; pll_handle myPll; wDOG_handle myWedDog; clk_handle myClk; adc_handle myAdc; FLASH_Handle myFlash; GPIO_Handle myGpio; PIE_Handle myPie; // SCI_Handle mySCI; PWM_Handle PWMA、PWMB、PWMC; Timer_handle myTimer0; //本示例中使用的 ADC 全局变量: uint16_t ADC0、ADC1、ADC2、ADC3、sp、 平均值; 双误差、积分; 浮点 ma = 0.8; 浮点 Kp = 0.5; 浮点 Ki = 0.5; //处理初始 化 void setup_handles () { myClk = CLK_init ((void *) CLK_base_ADDR、sizeof (CLK_Obj)); myPll = PLL_init ((void *) PLL_base_ADDR、sizeof (PLL_Obj)); myWdDog = WDOG_INIT ((void *) WDOG_BASE_ADDR、sizeof (WDOG_Obj)); myCpu = cpu_init ((void *) NULL、sizeof (cpu_Obj)); myFlash = flash_init ((void *) flash_base_ADDR、sizeof (flash_Obj)); myGpio = GPIO_init ((void *) GPIO_base_ADDR、sizeof (GPIO_Obj)); myPie = PI_init ((void *) PI_BASE_ADDR、sizeof (PI_Obj)); // mySCI = SCI_init (((void *) SCIA_BASE_ADDR、sizeof (SCI_Obj))); myAdc = ADC_init ((void *) ADC_base_ADDR、sizeof (ADC_Obj)); PWMA = PWM_init (((void *) PWM_ePWM1_base_ADDR、sizeof (PWM_Obj)); PWMB = PWM_init (((void *) PWM_ePWM2_base_ADDR、sizeof (PWM_Obj)); PWMC = PWM_init (((void *) PWM_ePWM3_base_ADDR、sizeof (PWM_Obj)); myTimer0 = TIMER_INIT ((void *) TIMER0_BASE_ADDR、sizeof (timer_Obj)); } //系统初始 化 void init_system () { //禁用看门狗 WDOG_DISABLE (myWdog); // ADC 的器件校准 (* Device_cal); //系统初始化 void init_system ();//禁用看门狗 WDOG_disable (myCLK )* 2 );* 100MHz (rul_clrul_cld);* 2)内部振荡器设置为 PLL_clrul_clrul_clrul_clrulk (2);* 2 (针对 myclrul_clrulk_clrul_clrul_clrul_clk * 2);(1) //禁用 PIE 外设和所有中断 PI_disable (myPie); PI_disableAllInts (myPie); CPU_disableGlobalIntts (myCpu); CPU_clearIntFlags (myCpu); #ifdef _FLASH memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize); #endif } //GPIO 初始 化 void GPIO_init () { //初始化 EPWM1A 和 EPWM1B 的 GPIO GPIO_setPullUp (myGpio、GPIO_Number_0、GPIO_PULLUP_Disable); GPIO_setPullUp (myGpio、GPIO_Number_1、GPIO_PULLUP_Disable); GPIO_setMode (myGpio、GPIO_Number_0、GPIO_0_Mode_EPWM1A); GPIO_setMode (myGpio、GPIO_Number_1、GPIO_1_Mode_EPWM1B); GPIO_setDirection (myGpio、GPIO_Number_0、GPIO_Direction_Output); GPIO_setDirection (myGpio、GPIO_Number_1、GPIO_Direction_Output); //初始化 EPWM2A 和 EPWM2B 的 GPIO GPIO_setPullUp (myGpio、GPIO_Number_2、GPIO_PULLUP_Disable); GPIO_setPullUp (myGpio、GPIO_Number_3、GPIO_PULLUP_Disable); GPIO_setMode (myGpio、GPIO_Number_2、GPIO_2_Mode_EPWM2A); GPIO_setMode (myGpio、GPIO_Number_3、GPIO_3_Mode_EPWM2B); GPIO_setDirection (myGpio、GPIO_Number_2、GPIO_Direction_Output); GPIO_setDirection (myGpio、GPIO_Number_3、GPIO_Direction_Output); //初始化 EPWM2A 和 EPWM2B 的 GPIO GPIO_setPullUp (myGpio、GPIO_Number_4、GPIO_PULLUP_Disable); GPIO_setPullUp (myGpio、GPIO_Number_5、GPIO_PULLUP_Disable); GPIO_setMode (myGpio、GPIO_Number_4、GPIO_4_Mode_EPWM3A); GPIO_setMode (myGpio、GPIO_Number_5、GPIO_5_Mode_EPWM3B); GPIO_setDirection (myGpio、GPIO_Number_4、GPIO_Direction_Output); GPIO_setDirection (myGpio、GPIO_Number_5、GPIO_Direction_Output); } //PWM 设置 void pwma_init () { // PWMA 初始化 CLK_enablePwmClock (myClk、PWM_NUMBER_1); //PWMA 初始化 //设置 TBCLK PWM_setCounterMode (PWMA、PWM_CounterMode_UpDown);//递增-递减计数 PWM_setPeriod (PWMA、EPWM1_TIMER_TBPRD); //设置计时器周期 PWM_DisableCounterLoad (PWMA); //禁用相位加载 PWM_setSyncMode (PWMA、PWM_SyncMode_Disable); PWM_setCount (PWMA、0x0000); //清除计数器 PWM_setClkDiv (PWMA、PWM_ClkDiv); PWM_setHighSpeedClkDiv (PWMA、PWM_HspClkDiv_BY_1); //时钟与 SYSCLKOUT 的比率 //设置隐藏 PWM_setShadowImage Mode_cmpA (PWMA、PWM_ShadowImage Mode_Shadow); PWM_setShadowImage Mode_CMPB (PWMA、PWM_ShadowImage Mode_Shadow); PWM_setLoadMode_cmpA (PWMA、PWM_LoadMode_Zero); PWM_setLoadMode_CMPB (PWMA、PWM_LoadMode_Zero); PWM_setCmpA (PWMA、1000);//初始占空比 PWM_setCmpB (PWMA、1000); //设置操作 PWM_setActionQual_CntUp_CmpA_PwmA (PWMA、PWM_ActionQual_set); //在事件 A 上设置 PWM1A、递增计数 PWM_setActionQual_CntDown_CmpA_PwmA (PWMA、PWM_ActionQual_clear);//在事件 A 上清除 PWM1A、递减计数 PWM_setActionQual_CntUp_CMPB_PwmB (PWMA、PWM_ActionQual_clear); //在事件 B 上设置 PWM1B,向上计数 PWM_setActionQual_CntDown_CMPB_PwmB (PWMA、PWM_ActionQual_set);//在事件 B 上清除 PWM1B、递减计数 //设置死区控制 PWM_setDeadBandOutputMode (PWMA、PWM_DeadBandOutputMode_EPWMxA_Rising EPWMxB_Falling); PWM_setDeadBandPolarity (PWMA、PWM_DeadBandPolarity _EPWMxB_Inverted); PWM_setDeadBandInputMode (PWMA、PWM_DeadBandInputMode_EPWMxA_rising_and_Falling); PWM_setDeadBandRisingEdgeDelay (PWMA、DeadTime_R); PWM_setDeadBandFallingEdgeDelay (PWMA,DeadTime_F); //--------------- ///-------------------------------------------------------------- //PWMB 初始化 CLK_enablePwmClock (myClk、PWM_NUMBER_2); //设置 TBCLK PWM_setCounterMode (PWMB、PWM_CounterMode_UpDown);//递增-递减计数 PWM_setPeriod (PWMB、EPWM1_TIMER_TBPRD);//设置定时器周期 PWM_enableCounterLoad (PWMB); PWM_setPhaseDir (PWMB、PWM_PhaseDir_倒 计数); PWM_setSyncMode (PWMB、PWM_SyncMode_Disable); PWM_setCount (PWMB、0x0000); //清除计数器 PWM_setClkDiv (PWMB、PWM_ClkDiv); PWM_setHighSpeedClkDiv (PWMB、PWM_HspClkDiv_BY_1); //时钟与 SYSCLKOUT 的比率 //设置隐藏 PWM_setShadowImage Mode_cmpA (PWMB、PWM_ShadowImage Mode_Shadow); PWM_setShadowImage Mode_CMPB (PWMB、PWM_ShadowImage Mode_Shadow); PWM_setLoadMode_cmpA (PWMB、PWM_LoadMode_Zero); PWM_setLoadMode_CMPB (PWMB、PWM_LoadMode_Zero); PWM_setCmpA (PWMB、1000);//初始占空比 PWM_setCmpB (PWMB、1000); //设置操作 PWM_setActionQual_CntUp_CmpA_PwmA (PWMB、PWM_ActionQual_set); //在事件 A 上设置 PWM2A、递增计数 PWM_setActionQual_CntDown_CmpA_PwmA (PWMB、PWM_ActionQual_clear);//在事件 A 上清除 PWM2A、递减计数 PWM_setActionQual_CntUp_CMPB_PwmB (PWMB、PWM_ActionQual_clear); //在事件 B 上设置 PWM2B、向上计数 PWM_setActionQual_CntDown_CMPB_PwmB (PWMB、PWM_ActionQual_set);//在事件 B 上清除 PWM2B、递减计数 //设置死区控制 PWM_setDeadBandOutputMode (PWMB、PWM_DeadBandOutputMode_EPWMxA_Rising EPWMxB_Falling); PWM_setDeadBandPolarity (PWMB、PWM_DeadBandPolarity _EPWMxB_Inverted); PWM_setDeadBandInputMode (PWMB、PWM_DeadBandInputMode_EPWMxA_rising_and_Falling); PWM_setDeadBandRisingEdgeDelay (PWMB、死区时间_R); PWM_setDeadBandFallingEdgeDelay (PWMB、DeadTime_F); //--------------- ///------------------------------------------------------------ //PWMC 初始化 CLK_enablePwmClock (myClk、PWM_NUMBER_3); //设置 TBCLK PWM_setCounterMode (PWMC、PWM_CounterMode_UpDown);//递增-递减计数 PWM_setPeriod (PWMC、EPWM1_TIMER_TBPRD);//设置定时器周期 PWM_enableCounterLoad (PWMC); PWM_setPhaseDir (PWMC、PWM_PhaseDir_CountUp); PWM_setSyncMode (PWMC、PWM_SyncMode_Disable); PWM_setCount (PWMC、0x0000); //清除计数器 PWM_setClkDiv (PWMC、PWM_ClkDiv_BY_1); PWM_setHighSpeedClkDiv (PWMC、PWM_HspClkDiv_BY_1); //时钟与 SYSCLKOUT 的比率 //设置隐藏 PWM_setShadowImage Mode_cmpA (PWMC、PWM_ShadowImage Mode_Shadow); PWM_setShadowImage Mode_CMPB (PWMC、PWM_ShadowImage Mode_Shadow); PWM_setLoadMode_cmpA (PWMC、PWM_LoadMode_Zero); PWM_setLoadMode_CMPB (PWMC、PWM_LoadMode_Zero); PWM_setCmpA (PWMC、1000);//初始占空比 PWM_setCmpB (PWMC、1000); //设置操作 PWM_setActionQual_CntUp_CmpA_PwmA (PWMC、PWM_ActionQual_set); //在事件 A 上设置 PWM3A、递增计数 PWM_setActionQual_CntDown_CmpA_PwmA (PWMC、PWM_ActionQual_clear);//在事件 A 上清除 PWM3A、递减计数 PWM_setActionQual_CntUp_CMPB_PwmB (PWMC、PWM_ActionQual_clear); //在事件 B 上设置 PWM3B、递增计数 PWM_setActionQual_CntDown_CMPB_PwmB (PWMC、PWM_ActionQual_set);//在事件 B 上清除 PWM3B、递减计数 //设置死区控制 PWM_setDeadBandOutputMode (PWMC、PWM_DeadBandOutputMode_EPWMxA_Rising EPWMxB_Falling); PWM_setDeadBandPolarity (PWMC、PWM_DeadBandPolarity _EPWMxB_Inverted); PWM_setDeadBandInputMode (PWMC、PWM_DeadBandInputMode_EPWMxA_rising_and_Falling); PWM_setDeadBandRisingEdgeDelay (PWMC、死区时间_R); PWM_setDeadBandFallingEdgeDelay (PWMC、死区时间_F); clk_enableTbClockSync (myClk); } //pie 设置 void PI_init () { PIE_ENABLE (myPie); EALLOW; EDIS; PI_registerPieIntHandler (myPie、PI_GroupNumber_1、PI_SubGroupNumber_7、(intVec_t)&CPU_timer0_ISR); EDIS; } //Timer 设置 无效 timer0_init() { Timer_stop (myTimer0); Timer_setPeriod (myTimer0、TTIMERREG); Timer_setPrescaler (myTimer0、0); Timer_reload (myTimer0); Timer_setEmulationMode (myTimer0、timer_EmulationMode_StopAfterNextDecrement); Timer_enableInt (myTimer0); Timer_start (myTimer0); /******** 启用 ADC 中断******** / //清除 ADCINT1标志为下一个 SOC 重新初始化 ADC_clearIntFlag (myAdc、ADC_IntNumber_1); //启用指定的 ADC 中断 PIE_enableAdcInt (myPie、ADC_IntNumber_1); /******** 启用计时器中断******** / //启用指定的中断编号 CPU_enableInt (myCpu、CPU_IntNumber_1);// CPU INT1、在 CPU 定时器0上触发 //启用指定的中断编号 // cpu_enableInt (myCpu、cpu_IntNumber_13);//在 CPU 定时器1上触发 CPU INT13 //启用 CPU 定时器0中断 PIE_enableTimer0Int (myPie); //启用全局中断 cpu_enableGlobalInts (myCpu); } // ADC 初始化 void adc_init() { /****** 初始化 ADC ******** / //启用 ADC 带隙电路 adc_enableBandGap (myAdc); //启用 ADC 基准缓冲器电路 ADC_enableRefBuffers (myAdc); //为 ADC 加电 ADC_POWERUP (myAdc); //启用 ADC ADC_ENABLE (myAdc); //设置电压基准源 // ADCCTL1 - ADC_ADCCTL1_ADCREFSEL_BITS ADC_setVoltRefSrc (myAdc、ADC_VoltageRefSrc_Int); //清除 ADCINT1标志为下一个 SOC 重新初始化 ADC_clearIntFlag (myAdc、ADC_IntNumber_1); //启用指定的 ADC 中断 PIE_enableAdcInt (myPie、ADC_IntNumber_1); //启用 ADC 中断 ADC_enableInt (myAdc、ADC_IntNumber_1); //设置中断脉冲生成模式 // ADCCTL1 - ADC_ADCCTL1_INTPULSEPOS_BITS // param[in] adcHandle ADC 对象句柄 // param[in] pulseMode 脉冲生成模式 ADC_setIntPulseGenMode (myAdc、ADC_IntPulseGenMode_Prior); //ADCINT1在 AdcResults 锁存后跳闸 //启用 ADC 中断 // INTSELxNy - ADC_INTSELxNy_Inte_BITS // param[in] adcHandle ADC 对象句柄 // param[in] intNumber 中断编号 ADC_enableInt (myAdc、ADC_IntNumber_1); //设置中断模式 // INTSELxNy - ADC_INTSELxNy_INTCONT_Bits // param[in] adcHandle ADC 对象句柄 // param[in] intNumber 中断编号 // param[in] intMode 中断模式 ADC_setIntMode (myAdc、ADC_IntNumber_1、ADC_IntMode_ClearFlag);//禁用 ADCINT1连续模式 //设置中断源 // INTSELxNy - ADC_INTSELxNy_INTSEL_BITS // param[in] adcHandle ADC 对象句柄 // param[in] intNumber 中断编号 // param[in] intSrc 中断源 ADC_setIntSrc (myAdc、ADC_IntNumber_1、ADC_IntSrc_EOC3); //设置 EOC3以触发 ADCINT1 //设置转换开始(SOC)通道编号 // ADCSOCxCTL - ADC_ADCSOCxCTL_CHSEL_BITS // param[in] adcHandle ADC 对象句柄 // param[in] socNumber SOC 编号 // param[in]通道编号通道编号 ADC_setSockChanNumber (myAdc、ADC_SockNumber_0、ADC_SockChanNumber_A0);//将 SOC0通道选择设置为 ADCINA0 ADC_setSockChanNumber (myAdc、ADC_SockNumber_1、ADC_SockChanNumber_A1);//将 SOC1通道选择设置为 ADCINA1 ADC_setSockChanNumber (myAdc、ADC_SockNumber_2、ADC_SockChanNumber_A2);//将 SOC2通道选择设置为 ADCINA2 ADC_setSockChanNumber (myAdc、ADC_SockNumber_3、ADC_SockChanNumber_A3);//将 SOC3通道选择设置为 ADCINA3 //设置转换开始(SOC)触发源 // ADCSOCxCTL - ADC_ADCSOCxCTL_TRIGSEL_BITS // param[in] adcHandle ADC 对象句柄 // param[in] socNumber SOC 编号 // param[in]通道编号通道编号 ADC_setSockTrigSrc (myAdc、ADC_SockNumber_0、ADC_SockTrigSrc_CpuTimer_0);//设置 CpuTimer_0上的 SOC0启动触发器、因为轮询 SOC0先转换、然后 SOC1 ADC_setSockTrigSrc (myAdc、ADC_SockNumber_1、ADC_SockTrigSrc_CpuTimer_0);//在 CpuTimer_0上设置 SOC1启动触发器、因为轮询 SOC1先转换、然后再转换 SOC2 ADC_setSockTrigSrc (myAdc、ADC_SockNumber_2、ADC_SockTrigSrc_CpuTimer_0);//设置 CpuTimer_0上的 SOC2启动触发器、因为轮询 SOC2先转换、然后再转换 SOC3 ADC_setSockTrigSrc (myAdc、ADC_SockNumber_3、ADC_SockTrigSrc_CpuTimer_0);//在 CpuTimer_0上设置 SOC4起始触发 //设置转换开始(SOC)采样延迟 // ADCSOCxCTL - ADC_ADCSOCxCTL_ACQPS_Bits // param[in] adcHandle ADC 对象句柄 // param[in] socNumber SOC 编号 // param[in] samplpleDelay the sample delay ADC_setSockSampleWindow (myAdc、ADC_SockNumber_0、ADC_SockSampleWindow_7_cycles);//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) ADC_setSockSampleWindow (myAdc、ADC_SockNumber_1、ADC_SockSampleWindow_7_cycles);//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) ADC_setSockSampleWindow (myAdc、ADC_SockNumber_2、ADC_SockSampleWindow_7_cycles);//将 SOC2 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) ADC_setSockSampleWindow (myAdc、ADC_SockNumber_3、ADC_SockSampleWindow_7_cycles);//将 SOC3 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) /********* / //等待 ADC 中断 while (1) { while (AdcRegs.ADCINTFlG.bit.ADCINT1 = 0){}//等待 ADCINT1跳闸 ADC0 = AdcResult.ADCRESULT0; ADC1 = AdcResult.ADCRESULT1; ADC2 = AdcResult.ADCRESULT2; ADC3 = AdcResult.ADCRESULT3; AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 ADCINT1 //清除 ADCINT1标志为下一个 SOC 重新初始化 //ADC_clearIntFlag (myAdc、ADC_IntNumber_1); } } void main() { setup_handles(); init_system(); GPIO_init(); pwma_init(); PI_init(); timer0_init (); //启用 CPU 中断 CPU_enableInt (myCpu、CPU_IntNumber_1); //启用 PIE 模块 PIE_enableTimer0Int (myPie)的 Timer0中断; CPU_enableDebugInt (myCpu); cpu_enableDebugInt (myCpu); //永久查看 enableLoop;//查看 GlobalLoop; { } } 中断 void cpu_timer0_isr (void) { mean =(ADC0 + ADC1 + ADC2)/3; error = sp - mean; integral = error + integral; ma =(KP*error)+(ki*error)+(ki*integral); update_compare (); //确认此中断以接收来自组1 PI_clearint (myPIE、void 1)的更多中断 PWM_setCmpA (PWMA、_IQsat (_IQ30mpy ((sine_table[索引]+_IQ30 (0.9999)))/2、EPWM1_TIMER_TBPRD)、EPWM1_TIMER_TBPRD、0); PWM_setcmpB (PWMA、_IQsat (_IQ30mpy ((sine_table[索引]+_IQ30 (0.9999)))/2、EPWM1_TIMER_TBPRD)、EPWM1_TIMER_TBPRD、0); PWM_setCmpA (PWMB、_IQsat (_IQ30mpy ((sine_table[index2]+_IQ30 (0.9999)))/2、EPWM1_TIMER_TBPRD)、EPWM1_TIMER_TBPRD、0); PWM_setcmpB (PWMB、_IQsat (_IQ30mpy ((sine_table[index2]+_IQ30 (0.9999)))/2、EPWM1_TIMER_TBPRD)、EPWM1_TIMER_TBPRD、0); PWM_setCmpA (PWMC、_IQsat (_IQ30mpy ((sine_table[index3]+_IQ30 (0.9999)))/2、EPWM1_TIMER_TBPRD)、EPWM1_TIMER_TBPRD、0); PWM_setCmpB (PWMC、_IQsat (_IQ30mpy ((sine_table[index3]+_IQ30 (0.9999)))/2、EPWM1_TIMER_TBPRD)、EPWM1_TIMER_TBPRD、0); 如果(index++>511)索引=0; 如果(index2++>511)索引2=0; if (index3++>511) index3=0; }//---------------