帮我写一个利用F28335编程产生SPWM波的代码 
时间: 2023-03-31 10:01:46 浏览: 56
我可以回答这个问题。以下是一个利用F28335编程产生SPWM波的代码示例:
#include <DSP2833x_Device.h>
#include <DSP2833x_Examples.h>
#define PWM_PERIOD 200 // PWM周期,单位为us
#define PWM_DEADBAND 50 // 死区时间,单位为us
#define PWM_DUTY_CYCLE .5 // 占空比
void InitEPwm1(void)
{
EPwm1Regs.TBPRD = PWM_PERIOD * 150; // 设置PWM周期
EPwm1Regs.TBPHS.bit.TBPHS = ; // 相位寄存器清零
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 上下计数模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁用相位同步
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时钟分频系数为1
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时钟分频系数为1
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 选择计数器清零时同步
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; // 当计数器清零时加载比较值
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 当计数器等于CMPA时,PWM输出高电平
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 当计数器等于CMPA时,PWM输出低电平
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // 全使能死区
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // 死区电平为高电平
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; // 死区应用于A信号
EPwm1Regs.DBRED = PWM_DEADBAND * 150; // 设置死区时间
EPwm1Regs.DBFED = PWM_DEADBAND * 150; // 设置死区时间
EPwm1Regs.CMPA.bit.CMPA = PWM_PERIOD * 150 * PWM_DUTY_CYCLE; // 设置占空比
}
int main(void)
{
InitEPwm1(); // 初始化EPwm1
while(1); // 循环等待
return ;
}
相关推荐


















