输出三路的epwm程序
时间: 2023-11-09 14:09:00 浏览: 36
以下是一个基本的三路ePWM程序:
#include "F2837xD_device.h"
#include "F2837xD_Examples.h"
#define EPWM_TIMER_TBPRD 5000 // 设置计数器周期
#define EPWM_TIMER_TBCLKDIV 2 // 设置时钟分频
#define EPWM_CMPA 2500 // 设置 A 通道占空比
#define EPWM_CMPB 1250 // 设置 B 通道占空比
#define EPWM_CMPC 625 // 设置 C 通道占空比
void InitEPwm()
{
EPwm1Regs.TBPRD = EPWM_TIMER_TBPRD; // 设置计数器周期
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 设置计数器为上下计数
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁用相位同步功能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 启用计数器周期阴影寄存器
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 选择计数器清零作为同步信号
EPwm1Regs.CMPA.bit.CMPA = EPWM_CMPA; // 设置 A 通道占空比
EPwm1Regs.CMPB.bit.CMPB = EPWM_CMPB; // 设置 B 通道占空比
EPwm1Regs.CMPC.bit.CMPC = EPWM_CMPC; // 设置 C 通道占空比
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 设置 A 通道上升沿时输出为高电平
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 设置 A 通道下降沿时输出为低电平
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // 设置 B 通道上升沿时输出为高电平
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; // 设置 B 通道下降沿时输出为低电平
EPwm1Regs.AQCTLC.bit.CCU = AQ_SET; // 设置 C 通道上升沿时输出为高电平
EPwm1Regs.AQCTLC.bit.CCD = AQ_CLEAR; // 设置 C 通道下降沿时输出为低电平
EPwm1Regs.TBCTL.bit.HSPCLKDIV = EPWM_TIMER_TBCLKDIV; // 设置高速时钟分频
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2; // 设置低速时钟分频
EPwm1Regs.TBCTL.bit.SWFSYNC = 1; // 同步各个 EPWM 模块
}
void main()
{
InitEPwm(); // 初始化 EPWM 模块
while(1) {} // 循环等待
}