📄 2808pwm1.0.c
字号:
//###########################################################################
// $TI Release: DSP280x Header Files V1.60 $
// $Release Date: December 3, 2007 $
//###########################################################################
#include "DSP280x_Device.h"
void InitEPwm1Example(void);
void InitEPwm1Gpio();
void main(void)
{
InitSysCtrl();//初始化系统控制器
InitEPwm1Gpio();//IO初始化
DINT;//关闭总中断,清中断标志
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//关闭TB时钟
EDIS;
InitEPwm1Example();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//开TB时钟
EDIS;
}
void InitEPwm1Gpio()
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // 将GPIO0和GPIO1设置为EWPM端口,并设置为输出
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; //
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; //
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
EDIS;
}
void InitEPwm1Example()
{
EPwm1Regs.TBPRD = 8000; // 设置定时器周期
EPwm1Regs.TBPHS.all = 0; // 相位值为0
EPwm1Regs.TBCTR = 0x0000; // 计数器清0
EPwm1Regs.TBCTL.bit.CTRMODE = 0x2; //增减计数模式
EPwm1Regs.TBCTL.bit.PHSEN = 0; // 不装载相位值
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0x0; // TB时钟为系统时钟
EPwm1Regs.TBCTL.bit.CLKDIV = 0x0;
// EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0; // Load registers every ZERO
//EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
//EPwm1Regs.CMPCTL.bit.LOADAMODE = 0x0;
//EPwm1Regs.CMPCTL.bit.LOADBMODE = 0x0;
EPwm1Regs.CMPA.half.CMPA =4000; //比较器A的值为4000
EPwm1Regs.AQCTLA.bit.CAU = 0x2; // 当时基计数器的值等于比较器A的值,且计数器处于增计数时将EPWMxA的输出置为 高 EPwm1Regs.AQCTLA.bit.CAD = 0x1; //当时基计数器的值等于比较器A的值,且计数器处于减计数时将EPWMxA的输出置为 低
EPwm1Regs.AQCTLB.bit.CAD = 0x1; //当时基计数器的值等于比较器A的值时且处于减计数时将EPWMxB的输出置为 低
EPwm1Regs.AQCTLB.bit.CAU = 0x2; // 当时基计数器的值等于比较器A的值,且计数器处于增计数时将EPWMxB的输出置为 高
EPwm1Regs.DBCTL.bit.IN_MODE = 0x0;//从动作限定模块出来的EPWMxA作为上升沿和下降沿延迟的输入
EPwm1Regs.DBCTL.bit.OUT_MODE = 0x1;//上升不延迟,下降沿延迟
EPwm1Regs.DBCTL.bit.POLSEL = 0x2;//EPWMxB的输出取反
EPwm1Regs.DBFED = 1000;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -