level 1
白开水123568
楼主
#include "epwm.h"
#include "leds.h"
void EPWM1_Init(Uint16 t
bp
rd)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;
EDIS;
InitEPwm1Gpio();
//EALLOW;
//SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
//EDIS;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; //不使用时钟同步
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm1Regs.TBPHS.half.TBPHS = 0;
EPwm1Regs.TBCTR = 0x0000;
EPwm1Regs.TBPRD = tbprd; //周期!!!!
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV=TB_DIV1; //1分频
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // 加载方式的选择
// 配置EPWM1模块的死区时间
//EPwm1Regs.DBCTL.bit.POLSEL = 0; // 死区时间适用于所有输出极性
//EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // 死区时间输出控制方式为PWM模式
//EPwm1Regs.DBCTL.bit.POLSEL = 2; // 死区时间适用于所有输出极性
EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // 死区时间输出控制方式为PWM模式
EPwm1Regs.DBRED = 10; // 死区时间上升沿延迟值
EPwm1Regs.DBFED = 10; // 死区时间下降沿延迟值
//EPwm1Regs.DBCTL.bit.IN_MODE = 0; // 死区时间输入信号为ePWMxA
EPwm1Regs.CMPA.half.CMPA = 0;
EPwm1Regs.CMPB = 0;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // 设定高低电平
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; //预留 中断使用
EPwm1Regs.DBRED=100;
EPwm1Regs.DBFED=100;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
}
void EPwm1A_SetCompare(Uint16 val)
{
EPwm1Regs.CMPA.half.CMPA = val; //设置占空比
}
void EPwm1B_SetCompare(Uint16 val)
{
EPwm1Regs.CMPB = val; //设置占空比
}
/*
* main.c
*
* Created on: 2018-3-21
* Author: Administrator
*/
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#include "leds.h"
#include "time.h"
#include "epwm.h"
Uint16 flag = 0;
Uint16 pwmState=0;
void main()
{
int i2=3750;
DINT;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
while(1)
{
EPWM1_Init(7500);
EPwm1A_SetCompare(i2);
EPwm1B_SetCompare(7500);
EPwm1Regs.AQCSFRC.bit.CSFA = 0; // 打开EPWM1A
EPwm1Regs.AQCSFRC.bit.CSFB = 1; // 关闭EPWM1B
DELAY_US(1000);
EPWM1_Init(7500);
EPwm1B_SetCompare(i2);
EPwm1A_SetCompare(7500);
EPwm1Regs.AQCSFRC.bit.CSFA = 1; // 关闭EPWM1A
EPwm1Regs.AQCSFRC.bit.CSFB = 0; // 打开EPWM1B
DELAY_US(1000);
}
}
2023年10月12日 07点10分
1
#include "leds.h"
void EPWM1_Init(Uint16 t
bp
rd)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;
EDIS;
InitEPwm1Gpio();
//EALLOW;
//SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
//EDIS;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; //不使用时钟同步
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm1Regs.TBPHS.half.TBPHS = 0;
EPwm1Regs.TBCTR = 0x0000;
EPwm1Regs.TBPRD = tbprd; //周期!!!!
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV=TB_DIV1; //1分频
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // 加载方式的选择
// 配置EPWM1模块的死区时间
//EPwm1Regs.DBCTL.bit.POLSEL = 0; // 死区时间适用于所有输出极性
//EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // 死区时间输出控制方式为PWM模式
//EPwm1Regs.DBCTL.bit.POLSEL = 2; // 死区时间适用于所有输出极性
EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // 死区时间输出控制方式为PWM模式
EPwm1Regs.DBRED = 10; // 死区时间上升沿延迟值
EPwm1Regs.DBFED = 10; // 死区时间下降沿延迟值
//EPwm1Regs.DBCTL.bit.IN_MODE = 0; // 死区时间输入信号为ePWMxA
EPwm1Regs.CMPA.half.CMPA = 0;
EPwm1Regs.CMPB = 0;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // 设定高低电平
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; //预留 中断使用
EPwm1Regs.DBRED=100;
EPwm1Regs.DBFED=100;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
}
void EPwm1A_SetCompare(Uint16 val)
{
EPwm1Regs.CMPA.half.CMPA = val; //设置占空比
}
void EPwm1B_SetCompare(Uint16 val)
{
EPwm1Regs.CMPB = val; //设置占空比
}
/*
* main.c
*
* Created on: 2018-3-21
* Author: Administrator
*/
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#include "leds.h"
#include "time.h"
#include "epwm.h"
Uint16 flag = 0;
Uint16 pwmState=0;
void main()
{
int i2=3750;
DINT;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
while(1)
{
EPWM1_Init(7500);
EPwm1A_SetCompare(i2);
EPwm1B_SetCompare(7500);
EPwm1Regs.AQCSFRC.bit.CSFA = 0; // 打开EPWM1A
EPwm1Regs.AQCSFRC.bit.CSFB = 1; // 关闭EPWM1B
DELAY_US(1000);
EPWM1_Init(7500);
EPwm1B_SetCompare(i2);
EPwm1A_SetCompare(7500);
EPwm1Regs.AQCSFRC.bit.CSFA = 1; // 关闭EPWM1A
EPwm1Regs.AQCSFRC.bit.CSFB = 0; // 打开EPWM1B
DELAY_US(1000);
}
}