📄 example_280xinitepwm.c
字号:
#include "DSP280x_Device.h" // DSP280x Headerfile Include File
#include "DSP280x_Examples.h" // DSP280x Examples Include File
//=============================================================================
// PWM输出全部关断,输出全部高阻状态
//=============================================================================
void Disable_PWM(void){
EALLOW;
EPwm1Regs.TZFRC.all=0x04;
EPwm2Regs.TZFRC.all=0x04;
EPwm3Regs.TZFRC.all=0x04;
EDIS;
}
//=============================================================================
// PWM输出全部有效
//=============================================================================
void Enable_PWM(void){
EALLOW;
EPwm1Regs.TZCLR.all=0x07;
EPwm2Regs.TZCLR.all=0x07;
EPwm3Regs.TZCLR.all=0x07;
EDIS;
}
void InitEPwm1(void)
{
// Enable PWM0~5
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1; // disEnable pullup on GPIO0
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1; // disEnable pullup on GPIO1
//GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1; // disEnable pullup on GPIO2
//GpioCtrlRegs.GPAPUD.bit.GPIO3 = 1; // disEnable pullup on GPIO3
//GpioCtrlRegs.GPAPUD.bit.GPIO4 = 1; // disEnable pullup on GPIO4
//GpioCtrlRegs.GPAPUD.bit.GPIO5 = 1; // disEnable pullup on GPIO5
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // GPIO0 = PWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // GPIO1 = PWM1B
//GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // GPIO2 = PWM2A
//GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // GPIO3 = PWM2B
//GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // GPIO4 = PWM3A
//GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // GPIO5 = PWM3B
EDIS;
//=====================================================================
// Initialization Time
//=====================================================================
EPwm1Regs.TBPRD = 3000; //T=100us,dead rise=2us,fail=2us
// Period = 5000 TBCLK counts
//TBCLK=SYSCLKOUT/(HSPCLKDIV * CLKDIV)-----TBCTL
EPwm1Regs.TBPHS.half.TBPHS=0;// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = 2; // Symmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = 0; // Master module
EPwm1Regs.TBCTL.bit.PRDLD = 0;
EPwm1Regs.TBCTL.bit.SYNCOSEL = 1; // Sync down-stream module
EPwm1Regs.TBCTL.bit.HSPCLKDIV =2;; //TBCLK=100M/4
EPwm1Regs.TBCTL.bit.CLKDIV = 3;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0; //1// load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0; //1// load on CTR=Zero
EPwm1Regs.AQCTLA.bit.CAU = 2; // set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAD = 1; // PWM低开通
EPwm1Regs.AQCTLB.bit.CAU = 1; // set actions for EPWM1B
EPwm1Regs.AQCTLB.bit.CAD = 2;
EPwm1Regs.DBFED = 400; // FED = 50 TBCLKs
EPwm1Regs.DBRED = 400; // RED = 50 TBCLKs
//EPwm1Regs.DBCTL.bit.POLSEL = 1; // Active Lo complementary
EPwm1Regs.DBCTL.bit.POLSEL = 2; // Active Hi complementary
EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // enable Dead-band module
EPwm1Regs.ETSEL.all=0x9901; // SOCA,B启动使能
// CNT=0时触发
// CNT=0 EPWM1INT发生
EPwm1Regs.ETPS.all = 0x1101; // Generate pulse on 1st event
// EPWM Module 2 config
EPwm2Regs.TBPRD = 3000; // Period = 1600 TBCLK counts
EPwm2Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
EPwm2Regs.TBCTL.bit.CTRMODE = 2; // Symmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = 1; // Slave module
EPwm2Regs.TBCTL.bit.PRDLD = 0;
EPwm2Regs.TBCTL.bit.SYNCOSEL = 0; // sync flow-through
EPwm2Regs.TBCTL.bit.HSPCLKDIV =2; //TBCLK=100M/4
EPwm2Regs.TBCTL.bit.CLKDIV = 3;
EPwm2Regs.AQCTLA.bit.CAU = 2; // set actions for EPWM2A
EPwm2Regs.AQCTLA.bit.CAD = 1;
EPwm2Regs.AQCTLB.bit.CAU = 1; // set actions for EPWM2A
EPwm2Regs.AQCTLB.bit.CAD = 2;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm2Regs.CMPCTL.bit.LOADAMODE = 0; //1// load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = 0; //1// load on CTR=Zero
EPwm2Regs.DBFED = 400; // FED = 50 TBCLKs
EPwm2Regs.DBRED = 400; // RED = 50 TBCLKs
EPwm2Regs.DBCTL.bit.POLSEL = 1; // Active Hi complementary
EPwm2Regs.DBCTL.bit.OUT_MODE = 3; // enable Dead-band module
// EPWM Module 3 config
EPwm3Regs.TBPRD = 3000; // Period = 1600 TBCLK counts
EPwm3Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
EPwm3Regs.TBCTL.bit.CTRMODE = 2;// Symmetrical mode
EPwm3Regs.TBCTL.bit.PHSEN = 1; // Slave module
EPwm3Regs.TBCTL.bit.PRDLD = 0;
EPwm3Regs.TBCTL.bit.SYNCOSEL = 0; // sync flow-through
EPwm3Regs.TBCTL.bit.HSPCLKDIV =2; //TBCLK=100M
EPwm3Regs.TBCTL.bit.CLKDIV = 3;
EPwm3Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm3Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm3Regs.CMPCTL.bit.LOADAMODE = 0; //1// load on CTR=Zero
EPwm3Regs.CMPCTL.bit.LOADBMODE = 0; //1// load on CTR=Zero
EPwm3Regs.AQCTLA.bit.CAU = 2; // set actions for EPWM3A
EPwm3Regs.AQCTLA.bit.CAD = 1;
EPwm3Regs.AQCTLB.bit.CAU = 1;//1; // set actions for EPWM3A
EPwm3Regs.AQCTLB.bit.CAD = 2;//2;
EPwm3Regs.DBFED = 400; // FED = 50 TBCLKs
EPwm3Regs.DBRED = 400; // RED = 50 TBCLKs
EPwm3Regs.DBCTL.bit.POLSEL = 1; // Active Hi complementary
EPwm3Regs.DBCTL.bit.OUT_MODE = 3; // enable Dead-band module
//------------------------------------------
//TZ
//EALLOW;
//EPwm1Regs.TZSEL.all=0x1000; //TZ5 OST
//EPwm2Regs.TZSEL.all=0x1000; //TZ5 OST
//EPwm3Regs.TZSEL.all=0x1000; //TZ5 OST
//EPwm1Regs.TZEINT.all=4; //Trip-zones Cycle by Cycle Interrupt
//EPwm1Regs.TZCTL.all=0; //One Shot mod
//EPwm2Regs.TZEINT.all=4; //Trip-zones Cycle by Cycle Interrupt
//EPwm2Regs.TZCTL.all=0; //One Shot mod
//EPwm3Regs.TZEINT.all=4; //Trip-zones Cycle by Cycle Interrupt
//EPwm3Regs.TZCTL.all=0; //One Shot mod
//EDIS;
// 关断PWM输出
//=========================================================//
Disable_PWM();
}
//----------------------------------------------------------
// 使能中断,使能计数器
//----------------------------------------------------------
void EnableInterrupt(void)
{
//---------------------------------------
EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable EPWM1INT generation
EPwm1Regs.ETCLR.bit.INT = 1; // Enable more interrupts
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
// Enable PWM1 int: INT3
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
// clear INT FLAG
EPwm1Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACK.all = 0xFFFF;
// Enable the PIE
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
IER |= M_INT3;
//使能中断,寄存器等//
EINT; // Enable Global interrupt INTM,使能所有中断
ERTM; // Enable Global realtime interrupt DBGM
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -