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.

TMS320F28335: pwm初始化时有几次高低电平翻转。

Part Number: TMS320F28335

pwm配置为a1,a2,a3为高电平,b1,b2,b3为低电平,但是芯片上电后,发现a1先高再低然后再高,b1先低在高然后再低,翻转三次后a1为常高,b2为常低,2,3也是同样现象,请问是什么原因。

  • 示波器采集a2和b2引脚

  • 根据您上述描述,这不是预期的行为
    没有任何配置细节,我无法知道为什么会发生这种情况。
    您是否遵循以下顺序:
    *在PCLKCR1寄存器中启用ePWM模块时钟。
    •将TBCLKSYNC设置为0。
    •配置预分频器值和ePWM模式。
    •将TBCLKSYNC设置为1。

  • 您好,这是我的配置,请帮忙看一下是否配置正确,谢谢。

    *在PCLKCR1寄存器中启用ePWM模块时钟。
    •将TBCLKSYNC设置为0。
    •配置预分频器值和ePWM模式。
    •将TBCLKSYNC设置为1

    DSP2833x_SysCtrl.c文件

    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Disable TBCLK within the ePWM
    SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1
    SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1; // ePWM2
    SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1; // ePWM3
    SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK = 1; // ePWM4
    SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK = 1; // ePWM5
    SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1; // ePWM6
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM

    DSP2833x_EPwm.c文件

    void
    InitEPwm(void)
    {

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    EDIS;

    InitEPwm1();
    InitEPwm2();
    InitEPwm3();
    InitEPwm4();
    InitEPwm5();
    InitEPwm6();

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
    EDIS;

    }

    void InitEPwm1(void)
    {

    EPwm1Regs.TBPRD =PWM_PERIOD;// Set timer period 16KHz
    EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm1Regs.TBCTR = 0x0000; // Clear counter

    // Setup compare
    EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD>>1; //0% Duty EPwm1Regs.TBPRD*0.8
    EPwm1Regs.CMPB = EPwm1Regs.CMPA.half.CMPA; //50% Duty

    // Setup TBCLK
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    // EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP;

    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO or PRD
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; //0:影子模式; 1:立即模式
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //计数寄存器CTR=0是装载新的比较值

    // Set actions
    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A 斩波
    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    // Active Low PWMs - Setup Deadband
    EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
    EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;

    // 设置ePWM中断生成
    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // 在计数为零的时候生成中断事件
    EPwm1Regs.ETSEL.bit.INTEN = 1; // 使能中断
    EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // 每个事件生成中断,选择INTCNT和INTPRD作为事件判断标志

    // 设置ePWM的SOCA的生成
    EPwm1Regs.ETSEL.bit.SOCAEN = 1; //
    EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO; //等于PRD时触发启动转换ADC脉冲,上桥臂关闭中间采样 ET_CTR_PRD
    EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST; //电流环16KHz ET_1ST
    EPwm1Regs.ETCLR.bit.SOCA = 1; //Clear SOCA flag

    }


    void InitEPwm2(void)
    {
    EPwm2Regs.TBPRD = EPwm1Regs.TBPRD;
    EPwm2Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm2Regs.TBCTR = 0x0000; // Clear counter

    // Setup compare
    EPwm2Regs.CMPA.half.CMPA = EPwm2Regs.TBPRD>>1; //EPwm2Regs.TBPRD; //0% Duty
    EPwm2Regs.CMPB = EPwm2Regs.CMPA.half.CMPA; //0% Duty

    // Setup TBCLK
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
    EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
    EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    // EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;

    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO or PRD
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    // Set actions
    EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A 斩波
    EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
    EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL;

    }

    void InitEPwm3(void)
    {
    EPwm3Regs.TBPRD = EPwm1Regs.TBPRD;// Set timer period 20KHz=80/4000
    EPwm3Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm3Regs.TBCTR = 0x0000; // Clear counter

    // Setup compare
    EPwm3Regs.CMPA.half.CMPA = EPwm3Regs.TBPRD>>1; //50% Duty
    EPwm3Regs.CMPB = EPwm3Regs.CMPA.half.CMPA; //50% Duty

    // Setup TBCLK
    EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
    EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
    EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    // EPwm3Regs.TBCTL.bit.PHSDIR = TB_UP;

    EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO or PRD
    EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    // Set actions
    EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A 斩波
    EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
    EPwm3Regs.DBCTL.bit.IN_MODE = DBA_ALL;

    EALLOW;

    //保护设置
    EPwm3Regs.TZSEL.bit.CBC3 = TZ_ENABLE; //过流保护触发 cycle by cycle

    EPwm3Regs.TZCTL.bit.TZA = TZ_FORCE_LO; //过流时PWMA输出高阻 TZ_HIZ
    EPwm3Regs.TZCTL.bit.TZB = TZ_FORCE_LO; //过流时PWMB输出高阻 TZ_HIZ

    EPwm3Regs.TZEINT.bit.CBC=1;
    EPwm3Regs.TZCLR.all = 0; //清除所有中断标志

    EDIS;

    }

    void InitEPwm4(void)
    {

    EPwm4Regs.TBPRD =EPwm1Regs.TBPRD;// Set timer period 16KHz
    EPwm4Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm4Regs.TBCTR = 0x0000; // Clear counter

    // Setup compare
    EPwm4Regs.CMPA.half.CMPA = EPwm4Regs.TBPRD>>1; //50% Duty EPwm1Regs.TBPRD*0.8
    EPwm4Regs.CMPB = EPwm4Regs.CMPA.half.CMPA; //50% Duty

    // Setup TBCLK
    EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
    EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
    EPwm4Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO or PRD
    EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; //0:影子模式; 1:立即模式
    EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //计数寄存器CTR=0是装载新的比较值

    // Set actions
    EPwm4Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A 斩波
    EPwm4Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm4Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm4Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
    EPwm4Regs.DBCTL.bit.IN_MODE = DBA_ALL;

    EALLOW;

    //保护设置 TZ4触发保护
    EPwm4Regs.TZSEL.bit.CBC4 = TZ_ENABLE; //过流保护触发 cycle by cycle

    EPwm4Regs.TZCTL.bit.TZA = TZ_FORCE_LO; //过流时PWMA输出高阻 TZ_HIZ
    EPwm4Regs.TZCTL.bit.TZB = TZ_FORCE_LO; //过流时PWMB输出高阻 TZ_HIZ

    EPwm4Regs.TZEINT.bit.CBC=1;
    EPwm4Regs.TZCLR.all = 0; //清除所有中断标志

    EDIS;
    }


    void InitEPwm5(void)
    {
    EPwm5Regs.TBPRD = EPwm1Regs.TBPRD;// Set timer period 20KHz=80/4000
    EPwm5Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm5Regs.TBCTR = 0x0000; // Clear counter

    // Setup compare
    EPwm5Regs.CMPA.half.CMPA = EPwm5Regs.TBPRD>>1; //50% Duty
    EPwm5Regs.CMPB = EPwm5Regs.CMPA.half.CMPA; //50% Duty

    // Setup TBCLK
    EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
    EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
    EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    // EPwm5Regs.TBCTL.bit.PHSDIR = TB_UP;

    EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO or PRD
    EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    // Set actions
    EPwm5Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A 斩波
    EPwm5Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm5Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm5Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
    EPwm5Regs.DBCTL.bit.IN_MODE = DBA_ALL;

    // EPwm5Regs.DBCTL.bit.IN_MODE = DBA_ALL; //输入都是PWMA
    // EPwm5Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //B路不取反 IRS2103 负逻辑
    // EPwm5Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; //
    //
    // EPwm5Regs.DBRED = Dead_Time; //死区时间1us
    // EPwm5Regs.DBFED = Dead_Time;

    EALLOW;

    //保护设置 TZ4触发保护
    EPwm5Regs.TZSEL.bit.CBC4 = TZ_ENABLE; //过流保护触发 cycle by cycle

    EPwm5Regs.TZCTL.bit.TZA = TZ_FORCE_LO; //过流时PWMA输出高阻 TZ_HIZ
    EPwm5Regs.TZCTL.bit.TZB = TZ_FORCE_LO; //过流时PWMB输出高阻 TZ_HIZ

    EPwm5Regs.TZEINT.bit.CBC=1;
    EPwm5Regs.TZCLR.all = 0;

    EDIS;

    }

    void InitEPwm6(void)
    {
    EPwm6Regs.TBPRD = EPwm1Regs.TBPRD;// Set timer period 20KHz=80/4000
    EPwm6Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm6Regs.TBCTR = 0x0000; // Clear counter

    // Setup compare
    EPwm6Regs.CMPA.half.CMPA = EPwm6Regs.TBPRD>>1; //50% Duty
    EPwm6Regs.CMPB = EPwm6Regs.CMPA.half.CMPA; //50% Duty

    // Setup TBCLK
    EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
    EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
    EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    // EPwm6Regs.TBCTL.bit.PHSDIR = TB_UP;

    EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO or PRD
    EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    // Set actions
    EPwm6Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A 斩波
    EPwm6Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm6Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm6Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
    EPwm6Regs.DBCTL.bit.IN_MODE = DBA_ALL;


    // EPwm6Regs.DBCTL.bit.IN_MODE = DBA_ALL; //输入都是PWMA
    // EPwm6Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //B路不取反 IRS2103 负逻辑
    // EPwm6Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; //
    //
    // EPwm6Regs.DBRED = Dead_Time; //死区时间1us
    // EPwm6Regs.DBFED = Dead_Time;

    EALLOW;

    //保护设置 TZ4触发保护
    EPwm6Regs.TZSEL.bit.CBC4 = TZ_ENABLE; //过流保护触发 cycle by cycle

    EPwm6Regs.TZCTL.bit.TZA = TZ_FORCE_LO; //过流时PWMA输出高阻 TZ_HIZ
    EPwm6Regs.TZCTL.bit.TZB = TZ_FORCE_LO; //过流时PWMB输出高阻 TZ_HIZ

    EPwm6Regs.TZEINT.bit.CBC=1;
    EPwm6Regs.TZCLR.all = 0;
    //清除所有中断标志

    EDIS;

    }

  • main()函数在哪里?我找不到
    main 中,您应该禁用TBCLKSYNC,配置epwm,然后启用TBCLKSYNC

  • 您好,main函数如下,我初始化了InitEPwm(void),,在这个函数中,有

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    EDIS;

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
    EDIS;

    我还在main函数中配置了死区

    EALLOW;
    EPwm1Regs.TZCLR.all = 0x0007;
    EPwm2Regs.TZCLR.all = 0x0007;
    EPwm3Regs.TZCLR.all = 0x0007;
    EPwm4Regs.TZCLR.all = 0x0007;
    EPwm5Regs.TZCLR.all = 0x0007;
    EPwm6Regs.TZCLR.all = 0x0007;
    EDIS;

    请问会不会是这段函数的影响。

    int main(void)
    {
    // Step 1. Initialize System Control:
    // PLL, WatchDog, enable Peripheral Clocks
    InitSysCtrl();
    #ifndef __DEBUG
    MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

    #endif
    // Call Flash Initialization to setup flash waitstates
    // This function must reside in RAM
    #ifndef __DEBUG
    InitFlash();
    #endif

    // Step 2. Initalize GPIO:
    InitGpio();
    InitEPwmGpio();

    // Step 3. Initialize Flash
    // Copy time critical code and Flash setup code to RAM
    // This includes InitFlash();

    // Step 4. Clear all interrupts and initialize PIE vector table:
    // Disable CPU interrupts
    DINT;

    // Initialize the PIE control registers to their default state.
    // The default state is all PIE interrupts disabled and flags
    // are cleared.
    InitPieCtrl();

    // Disable CPU interrupts and clear all CPU interrupt flags:
    IER = 0x0000;
    IFR = 0x0000;

    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    InitPieVectTable();

    // Interrupts that are used in this example are re-mapped to
    // ISR functions found within this file.
    EALLOW; // This is needed to write to EALLOW protected registers

    // PieVectTable.ADCINT = &adc_isr;
    // PieVectTable.EPWM1_INT = &epwm1_isr;
    PieVectTable.XINT1 = &xint1_isr;
    PieVectTable.XINT2 = &xint2_isr;
    PieVectTable.SCIRXINTB = &scibRxFifoIsr;
    PieVectTable.SCIRXINTC = &scicRxFifoIsr;

    PieVectTable.XINT3 = &xint3_isr;

    EDIS; // This is needed to disable write to EALLOW protected registers

    // InitAdc();

    InitSci();

    // PieCtrlRegs.PIEIER3.bit.INTx1 = 1; //PWM1
    PieCtrlRegs.PIEIER8.bit.INTx5 = 1; //SCIRXINTC
    PieCtrlRegs.PIEIER1.bit.INTx6 = 1; //ADC
    PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //XINT1
    // PieCtrlRegs.PIEIER1.bit.INTx5 = 1; //XINT2
    PieCtrlRegs.PIEIER9.bit.INTx3 = 1; //SCIRXINTB

    PieCtrlRegs.PIEIER12.bit.INTx1 = 1; //XINT3

    IER |= M_INT1 | M_INT8 | M_INT3 | M_INT9 | M_INT12;

    EINT; // Enable Global interrupt INTM
    ERTM;

    EALLOW;
    EPwm1Regs.TZCLR.all = 0x0007;
    EPwm2Regs.TZCLR.all = 0x0007;
    EPwm3Regs.TZCLR.all = 0x0007;
    EPwm4Regs.TZCLR.all = 0x0007;
    EPwm5Regs.TZCLR.all = 0x0007;
    EPwm6Regs.TZCLR.all = 0x0007;
    EDIS;

    InitEPwm();

    // Step 5. Initialize all the Device Peripherals:
    // 外设初始化必须放在对外部设备使用之前
    InitXintf();


    EPwm1Regs.DBRED = 170;
    EPwm1Regs.DBFED = 170;
    EPwm2Regs.DBRED = 170;
    EPwm2Regs.DBFED = 170;
    EPwm3Regs.DBRED = 170;
    EPwm3Regs.DBFED = 170;

    EPwm4Regs.DBRED = 170;
    EPwm4Regs.DBFED = 170;
    EPwm5Regs.DBRED = 170;
    EPwm5Regs.DBFED = 170;
    EPwm6Regs.DBRED = 170;
    EPwm6Regs.DBFED = 170;

    EALLOW;
    GpioCtrlRegs.GPACTRL.bit.QUALPRD0=1; // Qual period = SYSCLKOUT/2
    GpioCtrlRegs.GPACTRL.bit.QUALPRD1=1; // Qual period = SYSCLKOUT/2
    GpioCtrlRegs.GPACTRL.bit.QUALPRD2=1; // Qual period = SYSCLKOUT/2
    GpioCtrlRegs.GPACTRL.bit.QUALPRD3=1; // Qual period = SYSCLKOUT/2


    GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO80 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO80 = 1;


    GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO82 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO82 = 1;


    GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO83 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO83 = 1;


    GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO84 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO84 = 1;


    GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO85 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO85 = 1;


    GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO86 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO86 = 1;


    GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 0; // GPIO
    GpioCtrlRegs.GPCDIR.bit.GPIO87 = 1; // Mc output read enable
    GpioDataRegs.GPCCLEAR.bit.GPIO87 = 1;


    GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 0; // GPIO
    GpioCtrlRegs.GPBDIR.bit.GPIO39 = 1; // Mc output read enable
    GpioDataRegs.GPBCLEAR.bit.GPIO39 = 1;


    GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0; // GPIO
    GpioCtrlRegs.GPADIR.bit.GPIO31 = 1; // Mc output read enable
    GpioDataRegs.GPACLEAR.bit.GPIO31 = 1;

    GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 0; // GPIO26 外同步中断
    GpioCtrlRegs.GPADIR.bit.GPIO26 = 0; // GPIO26 = input
    GpioCtrlRegs.GPAQSEL2.bit.GPIO26 = 1; // 3 samples
    GpioIntRegs.GPIOXINT1SEL.all = 26; // Xint1 connected to GPIO26

    GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0; // GPIO48 惯导中断
    GpioCtrlRegs.GPBDIR.bit.GPIO48 = 0; // input
    GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 1; // 3 samples
    GpioIntRegs.GPIOXINT3SEL.all = 48; // Xint3 connected to GPIO48

    EDIS;

    // External Interrupt 1 Control Register
    XIntruptRegs.XINT1CR.bit.POLARITY = 1; // Rising edge interrupt
    XIntruptRegs.XINT1CR.bit.ENABLE = 1; // Enable XINT1

    XIntruptRegs.XINT2CR.bit.POLARITY = 1; // Rising edge interrupt
    XIntruptRegs.XINT2CR.bit.ENABLE = 1; // Enable XINT2

    XIntruptRegs.XINT3CR.bit.POLARITY = 1; // Rising edge interrupt
    XIntruptRegs.XINT3CR.bit.ENABLE = 1; // Enable XINT3
    // Enable global Interrupts and higher priority real-time debug events:
    EnableInterrupts();

    // Wait for ADC interrupt
    while(1)
    {
    if(ScicRegs.SCIRXST.bit.RXERROR)
    {
    ScicRegs.SCICTL1.bit.SWRESET = 0;
    ScicRegs.SCIFFRX.bit.RXFIFORESET = 0;
    ScicRegs.SCICTL1.bit.SWRESET = 1;
    ScicRegs.SCIFFRX.bit.RXFIFORESET = 1;
    }

    }
    }

x 出现错误。请重试或与管理员联系。