主题中讨论的其他部件: LAUNCHLL-F2.8379万D
工具/软件:Code Composer Studio
你好
1.我正在为我的应用程序使用TMS320F2.8379万D.kit
以生成具有20kHz的PWM。
根据我的理解 ,SYSCLKOUT的器件脉冲宽度值=100 MHz。
根据该值,我应该得到TBPRD =5000(SYSCLKOUT/PWM频率)的值
但我不能 不去?
2.这是我正在工作的代码
#include "F28x_Project.h"
#define PWM_PRD 1250;
#define PHI 0;
void InitEPwm1示例(void);
__interrupt void epwm1_isr (void);
Void主(void)
{
InitSysCtrl();
CpuSysRegs.PCLKCR2.bit.EPWM1=1;
Initepwm1gpio();
色调;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectorTable();
EALLOW;
PieVectorTable.EPWM1_INT =&epwm1_ISR;
EDIS;
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
InitEPwm1Example();
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
IER |= M_INT3;
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
PieCtrlRegs.PIEIER3.bit.INTx2 = 1;
PieCtrlRegs.PIEIER3.bit.INTx3 = 1;
EINT;//启用全局中断INTM
ERTM;//启用全局实时中断DBGM
对于(;;)
{
ASM (" NOP");
}
}
__interrupt void epwm1_isr (void)
{
EPwm1Regs.TBPHS.bit.TBPHS = 0;
EPwm1Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACG.ALL = PIEACK_Group3;
}
void InitEPwm1example()
{
EPwm1Regs.TBPRD = PWM_PRD;//设置计时器周期801 TBCLK
EPwm1Regs.TBPHS.bit.TBPHS = 0;//相位为0
EPwm1Regs.TBCTR = 0;//清除计数器
////设置比较值0 //
EPwm1Regs.CMPA.bit.CMPA = 1250;// set比较值
EPwm1Regs.CMPB.bit.CMPB = 1250;
////设置计数器模式//
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;//向上和向下计数
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相加载
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//与SYSCLKOUT的时钟比率
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
////设置阴影//
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZE;//零加载
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
////设置操作//
EPwm1Regs.AQCTLA.bit.CAU = AQ_set;//在事件A上设置PWM1A,up
//计数
EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;//清除事件A上的PWM1A,
//向下计数
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;//在事件B上设置PWM1B,UP
//计数
EPwm1Regs.AQCTLB.bit.ZRO= AQ_set;//清除事件B上的PWM1B,
//向下计数
////中断,我们将在此处更改比较值//
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;//在零事件上选择INT
EPwm1Regs.ETSEL.bit.inten = 1;//启用INT
EPwm1Regs.ETPS.bit.INTPRD = ET_3;//在第三个事件上生成INT
}
我的计划的红色部分改变了吗?