详解DSP F28069的ePWM模块,及代码讲解(适用于2802x、2803x、2805x、2806x 型号)
熟悉ePWM模块
代码讲解
- 使用ePWM模块产生相移全桥(ZVSFB)的PWM波形,epwm2的波形在epwm1基础上相移了90°。并且各三个PWM周期触发一次ADC采样。
- 硬件电路如下:
- 波形图如下:
- ePWM.h 头文件
由于此代码ADC的采样值用串口打印出来,所以PWM的频率设置为10HZ,比较低。这样方便观察现象。PWM频率可以根据实际情况修改。
/*
* ePWM.h
*
* Created on: 2023年2月28日
* Author: chends
*/
#ifndef EPWM_H_
#define EPWM_H_
#include "DSP28x_Project.h"
void ePWM_init(void);
void ZVSFB_ePWM1Config(void);
void ZVSFB_ePWM2Config(void);
#endif /* EPWM_H_ */
- ePWM.c C文件
/*
* ePWM.c
*
* Created on: 2023年2月28日
* Author: chends
*/
#include "ePWM.h"
/*
* 初始化化ePWM模块
* 使能时钟,时基时钟同步,配置GPIO脚等
*/
void ePWM_init(void)
{
EALLOW;
//gpio口配置:禁用所选输出引脚的内部上拉降低功耗;设置为ePWM输出引脚
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1; // Disable pull-up on GPIO0 (EPWM1A)
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1; // Disable pull-up on GPIO1 (EPWM1B)
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1; // Disable pull-up on GPIO2 (EPWM2A)
GpioCtrlRegs.GPAPUD.bit.GPIO3 = 1; // Disable pull-up on GPIO3 (EPWM2B)
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // Configure GPIO0 as EPWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // Configure GPIO1 as EPWM1B
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // Configure GPIO2 as EPWM2A
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // Configure GPIO3 as EPWM2B
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK=1; //使能ePWM1的时钟
SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK=1; //使能ePWM2的时钟
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0; //停止ePWM模块的TB时钟;
ZVSFB_ePWM1Config();//配置预定标的值和ePWM1模块;
ZVSFB_ePWM2Config();//配置预定标的值和ePWM2模块;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1; //打开ePWM模块的TB时钟;
EDIS;
}
/*
* 配置预定标的值和ePWM1模块
*/
void ZVSFB_ePWM1Config(void)
{
/************************<<EPWM1配置 start>>***************************/
/***********************时基模块配置*********************************/
//TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)=90MHz/(128 * 14)=50.233KHz
EPwm1Regs.TBCTL.bit.CLKDIV=7; //分频值128
EPwm1Regs.TBCTL.bit.HSPCLKDIV=7; //分频值14
EPwm1Regs.TBPRD=5000; //周期值 输出频率为f=TBCLK/TBPRD=50.233KHz/5000=10Hz
EPwm1Regs.TBCTL.bit.PHSDIR=1; //相位方向位。0-在同步事件之后向下计数;1-在同步事件之后向上计数
//EPwm1Regs.TBCTL.bit.SWFSYNC=1; //软件强制同步脉冲,置1时,生成一次同步脉冲
//同步输出选择。这些位选择EPWMxSYNCO信号的源。
//0- EPWMxSYNC; 1- CTR=0,时间基准计数器等于零;2- CTR=CMPB;3- 关闭EPWMxSYNCO信号。
EPwm1Regs.TBCTL.bit.SYNCOSEL=1; //CTR=0时产生输出同步信号
EPwm1Regs.TBCTL.bit.PRDLD=0; //0-使用影子寄存器模式;1-立即加载TBPRD寄存器,而不使用影子寄存器。
EPwm1Regs.TBCTL.bit.PHSEN=0; //0-不使用同步信号
//计数器模式位
//0-向上计数模式;1-向下计数模式;2-向上向下计数模式;3-停止-冻结计数器操作(默认为复位)
EPwm1Regs.TBCTL.bit.CTRMODE=0;
EPwm1Regs.TBPHS.half.TBPHS=0; //设置相位寄存器为0
EPwm1Regs.TBCTR=0; //清除计数值
/****************************计数器比较模块(CC)配置*****************************/
EPwm1Regs.CMPCTL.bit.SHDWAMODE=0; //0-影子模式;1-立即加载模式
EPwm1Regs.CMPCTL.bit.SHDWBMODE=0; //0-影子模式;1-立即加载模式
//从影子寄存器加载到活动寄存器模式选择
//0- CTR=0时加载;1- CTR=PRD时加载;2- CTR=0或PRD时,加载;3- 不加载(冻结)。
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm1Regs.CMPA.half.CMPA=2500;
EPwm1Regs.CMPB =1250;
/****************************动作限定模块(AQ)配置***************************/
//当计数器等于活动的CMPA寄存器并且计数器在递增时进行操作。
//0-无动作;1-强制EPWMxA输出低;2-强制EPWMxA输出高;3-翻转EPWMxA输出
EPwm1Regs.AQCTLA.bit.CAU=1;
//计数器等于零时的动作
//0-无动作;1-强制EPWMxA输出低;2-强制EPWMxA输出高;3-翻转EPWMxA输出
EPwm1Regs.AQCTLA.bit.ZRO=2;
/*************************死区产生模块(DB)配置*****************************/
EPwm1Regs.DBCTL.bit.HALFCYCLE=0;//半周期时钟使能位。0-启用全周期时钟;1-启用半周期时钟
/*死区输入模式控制(bit5 bit4)
*00- EPWMxA In(来自动作限定模块)是下降边缘和上升边缘延迟的来源
*01- EPWMxB输入上升沿延时器,EPWMxA输入下降沿延时器
*10- EPWMxA输入上升沿延时器,EPWMxB输入下降沿延时器
*11- EPWMxB In(来自动作限定模块)是下降边缘和上升边缘延迟的来源
*/EPwm1Regs.DBCTL.bit.IN_MODE=0;
/* 上升沿延时器输出(EPWMxA)和下降沿输出(EPWMxB)的信号极性选择控制(bit3 bit2)
* 00- EPWMxA和EPWMxB都不反向,AH模式
* 01- EPWMxA反向,EPWMxB不反向。ALC模式
* 10- EPWMxB反向,EPWMxA不反向。AHC模式
* 11- EPWMxA和EPWMxB都反向,AL模式
*/EPwm1Regs.DBCTL.bit.POLSEL=2;
/*死区输出模式控制(bit1 bit0)
* 00-两个输出信号都绕过了死带生成器。在这种模式下,动作限定器的EPWMxA和EPWMxB输出信号都直接传递给PWM斩波模块。在这种模式下,POLSEL和IN_MODE位不起作用。
* 01-禁用上升边缘延迟器。动作限定器符的EPWMxA信号直接传递给PWM斩波子模块的EPWMxA输入。下降沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxB输入
* 10-禁用下降边缘延迟器。动作限定器符的EPWMxB信号直接传递给PWM斩波子模块的EPWMxB输入。上升沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxA输入
* 11-上升沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxA输入,下降沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxB输入。
*/EPwm1Regs.DBCTL.bit.OUT_MODE=11;
//上升沿延迟计数。10位计数器。(全周期模式)RED=DBRED*T(TBCLK);(半周期模式)RED=DBRED*T(TBCLK)/2
EPwm1Regs.DBRED=292;
//下降边缘延迟计数。10位计数器 (全周期模式)FED=DBFED*T(TBCLK);(半周期模式)FED=DBFED*T(TBCLK)/2
EPwm1Regs.DBFED=208;
/************************* PWM 斩波(PC)模块配置*****************************/
EPwm1Regs.PCCTL.bit.CHPEN=0;//0-禁用PWM斩波模块;1-启用PWM斩波模块
/************************* 错误联防(TZ)模块配置*****************************/
EPwm1Regs.TZSEL.all=0; //禁用所有的TZ模块的CBC和OSHT触发源
EPwm1Regs.TZDCSEL.all=0; //禁用所有的数字比较输出事件
/*数字比较输出A事件1对EPWMxA的动作:
* 0- EPWMxA=高阻抗状态
* 1- 强制EPWMxA进入高电平。
* 2- 强制EPWMxA进入低电平。
* 3- 不动作,禁用
*/EPwm1Regs.TZCTL.bit.DCAEVT1=3;
EPwm1Regs.TZCTL.bit.DCAEVT2=3;//同上解释
EPwm1Regs.TZCTL.bit.DCBEVT1=3;
EPwm1Regs.TZCTL.bit.DCBEVT2=3;
EPwm1Regs.TZCTL.bit.TZA=3;
EPwm1Regs.TZCTL.bit.TZB=3;
EPwm1Regs.TZEINT.bit.CBC=0; //禁用CBC事件中断
EPwm1Regs.TZEINT.bit.DCAEVT1=0;//禁用DCAEVT1中断
EPwm1Regs.TZEINT.bit.DCAEVT2=0;//禁用DCAEVT2中断
EPwm1Regs.TZEINT.bit.DCBEVT1=0;//禁用DCBEVT1中断
EPwm1Regs.TZEINT.bit.DCBEVT2=0;//禁用DCBEVT2中断
EPwm1Regs.TZEINT.bit.OST=0;//禁用OST中断
//清除TZFLG的所有标志位
EPwm1Regs.TZCLR.all=0X7F;
//1-对TZFRC相应位写入1强制相应事件触发条件并设置TZFLG相应位 。0-不使用。
EPwm1Regs.TZFRC.all=0;
/************************* 事件触发(ET)模块配置*****************************/
EPwm1Regs.ETSEL.bit.SOCBEN=0;//0-禁止产生EPWMxSOCB脉冲去触发ADC转换
EPwm1Regs.ETSEL.bit.SOCBSEL=0;//由于SOCB禁用,此处无用
EPwm1Regs.ETSEL.bit.SOCAEN=1;//1-允许产生EPWMxSOCA脉冲去触发ADC转换
/*EPWMxSOCA脉冲产生的选择选项
* 0-允许DCAEVT1.soc事件触发产生
* 1-允许TBCTR=0时触发产生
* 2-允许TBCTR=TBPRD时触发产生
* 3-允许TBCTR=0或TBCTR=TBPRD时触发产生
* 4-允许向上计数模式下TBCTR=CMPA时触发产生
* 5-允许向下计数模式下TBCTR=CMPA时触发产生
* 6-允许向上计数模式下TBCTR=CMPB时触发产生
* 7-允许向下计数模式下TBCTR=CMPB时触发产生
*/EPwm1Regs.ETSEL.bit.SOCASEL=6;
EPwm1Regs.ETSEL.bit.INTEN=0;//0-禁止EPWMx_INT生成
EPwm1Regs.ETSEL.bit.INTSEL=0;//由于EPWMx_INT禁用,此处无用
EPwm1Regs.ETPS.bit.SOCBPRD=0;//关闭SOCB事件计数器。不会产生EPWMxSOCB脉冲
/*ePWM ADC转换触发A事件(EPWMxSOCA)周期选择
* 0-禁用SOCA事件计数器。不会产生EPWMxSOCA脉冲
* 1-在第一个事件上生成EPWMxSOCA脉冲:ETPS[SOCACNT] =1
* 2-在第二个事件上生成EPWMxSOCA脉冲:ETPS[SOCACNT] =2
* 3-在第三个事件上生成EPWMxSOCA脉冲:ETPS[SOCACNT] =3
*/EPwm1Regs.ETPS.bit.SOCAPRD=3;
EPwm1Regs.ETPS.bit.INTPRD=0;//禁用中断事件计数器。不会产生中断,ETFRC[INT]将被忽略。
EPwm1Regs.ETCLR.bit.INT=1;//ePWM中断(EPWMx_INT)标志清除位:写1时清除ETFLG[INT]标志位,并允许生成进一步的中断脉冲(由于禁用中断,此处无用)
EPwm1Regs.ETCLR.bit.SOCA=1;//ePWM ADC转换触发A(EPWMxSOCA)标志清除位:写1清除ETFLG[SOCA]标志位
EPwm1Regs.ETCLR.bit.SOCB=1;//ePWM ADC转换触发B(EPWMxSOCB)标志清除位:写1清除ETFLG[SOCB]标志位(由于禁用SOCB,此处无用)
EPwm1Regs.ETFRC.bit.SOCA=0;//EPWMxSOCA软件强制触发位:写1-在EPWMxSOCA上生成脉冲并设置SOCBFLG位。此位用于测试目的。(只有需要启用EPWMxSOCA脉冲时才有用,即ETSEL.SOCAEN=1)
EPwm1Regs.ETFRC.bit.SOCB=0;//EPWMxSOCA软件强制触发位:写1-在EPWMxSOCB上生成脉冲并设置SOCBFLG位。此位用于测试目的。(只有需要启用EPWMxSOCB脉冲时才有用,即ETSEL.SOCBEN=1)
EPwm1Regs.ETFRC.bit.INT=0;//EPWMxINT软件强制触发位:写1-在EPWMxINT上生成一个中断,并设置INT标志位。此位用于测试目的(只有需要启用EPWMx_INT脉冲时才有用,即ETSEL.INTEN=1)
/************************* 数字比较(DC)模块配置*****************************/
//暂无使用
/************************<<EPWM1配置 end>>***************************/
}
/*
* 配置预定标的值和ePWM2模块
*/
void ZVSFB_ePWM2Config(void)
{
/************************<<EPWM2配置 start>>***************************/
/***********************时基模块配置*********************************/
//TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)=90MHz/(128 * 14)=50.233KHz
EPwm2Regs.TBCTL.bit.CLKDIV=7; //分频值128
EPwm2Regs.TBCTL.bit.HSPCLKDIV=7; //分频值14
EPwm2Regs.TBPRD=5000; //周期值 输出频率为f=TBCLK/TBPRD=50.233KHz/5000=10Hz
EPwm2Regs.TBCTL.bit.PHSDIR=1; //相位方向位。0-在同步事件之后向下计数;1-在同步事件之后向上计数
//EPwm1Regs.TBCTL.bit.SWFSYNC=1; //软件强制同步脉冲,置1时,生成一次同步脉冲
//同步输出选择。这些位选择EPWMxSYNCO信号的源。
//0- EPWMxSYNC; 1- CTR=0,时间基准计数器等于零;2- CTR=CMPB;3- 关闭EPWMxSYNCO信号。
EPwm2Regs.TBCTL.bit.SYNCOSEL=3; //关闭EPWMxSYNCO信号
EPwm2Regs.TBCTL.bit.PRDLD=0; //0-使用影子寄存器模式;1-立即加载TBPRD寄存器,而不使用影子寄存器。
EPwm2Regs.TBCTL.bit.PHSEN=1; //1-使能同步信号输入,触发移相
//计数器模式位
//0-向上计数模式;1-向下计数模式;2-向上向下计数模式;3-停止-冻结计数器操作(默认为复位)
EPwm2Regs.TBCTL.bit.CTRMODE=0;
EPwm2Regs.TBPHS.half.TBPHS=5000-1250; //设置相位寄存器为0
EPwm2Regs.TBCTR=0; //清除计数值
/****************************计数器比较模块(CC)配置*****************************/
EPwm2Regs.CMPCTL.bit.SHDWAMODE=0; //0-影子模式;1-立即加载模式
EPwm2Regs.CMPCTL.bit.SHDWBMODE=0; //0-影子模式;1-立即加载模式
//从影子寄存器加载到活动寄存器模式选择
//0- CTR=0时加载;1- CTR=PRD时加载;2- CTR=0或PRD时,加载;3- 不加载(冻结)。
EPwm2Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm2Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm2Regs.CMPA.half.CMPA=2500;
EPwm2Regs.CMPB =1250;
/****************************动作限定模块(AQ)配置***************************/
//当计数器等于活动的CMPA寄存器并且计数器在递增时进行操作。
//0-无动作;1-强制EPWMxA输出低;2-强制EPWMxA输出高;3-翻转EPWMxA输出
EPwm2Regs.AQCTLA.bit.CAU=1;
//计数器等于零时的动作
//0-无动作;1-强制EPWMxA输出低;2-强制EPWMxA输出高;3-翻转EPWMxA输出
EPwm2Regs.AQCTLA.bit.ZRO=2;
/*************************死区产生模块(DB)配置*****************************/
EPwm2Regs.DBCTL.bit.HALFCYCLE=0;//半周期时钟使能位。0-启用全周期时钟;1-启用半周期时钟
/*死区输入模式控制(bit5 bit4)
*00- EPWMxA In(来自动作限定模块)是下降边缘和上升边缘延迟的来源
*01- EPWMxB输入上升沿延时器,EPWMxA输入下降沿延时器
*10- EPWMxA输入上升沿延时器,EPWMxB输入下降沿延时器
*11- EPWMxB In(来自动作限定模块)是下降边缘和上升边缘延迟的来源
*/EPwm2Regs.DBCTL.bit.IN_MODE=0;
/* 上升沿延时器输出(EPWMxA)和下降沿输出(EPWMxB)的信号极性选择控制(bit3 bit2)
* 00- EPWMxA和EPWMxB都不反向,AH模式
* 01- EPWMxA反向,EPWMxB不反向。ALC模式
* 10- EPWMxB反向,EPWMxA不反向。AHC模式
* 11- EPWMxA和EPWMxB都反向,AL模式
*/EPwm2Regs.DBCTL.bit.POLSEL=2;
/*死区输出模式控制(bit1 bit0)
* 00-两个输出信号都绕过了死带生成器。在这种模式下,动作限定器的EPWMxA和EPWMxB输出信号都直接传递给PWM斩波模块。在这种模式下,POLSEL和IN_MODE位不起作用。
* 01-禁用上升边缘延迟器。动作限定器符的EPWMxA信号直接传递给PWM斩波子模块的EPWMxA输入。下降沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxB输入
* 10-禁用下降边缘延迟器。动作限定器符的EPWMxB信号直接传递给PWM斩波子模块的EPWMxB输入。上升沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxA输入
* 11-上升沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxA输入,下降沿延时器的信号经过极性选择后传递给PWM斩波子模块的EPWMxB输入。
*/EPwm2Regs.DBCTL.bit.OUT_MODE=11;
//上升沿延迟计数。10位计数器。(全周期模式)RED=DBRED*T(TBCLK);(半周期模式)RED=DBRED*T(TBCLK)/2
EPwm2Regs.DBRED=292;
//下降边缘延迟计数。10位计数器 (全周期模式)FED=DBFED*T(TBCLK);(半周期模式)FED=DBFED*T(TBCLK)/2
EPwm2Regs.DBFED=208;
/************************* PWM 斩波(PC)模块配置*****************************/
EPwm2Regs.PCCTL.bit.CHPEN=0;//0-禁用PWM斩波模块;1-启用PWM斩波模块
/************************* 错误联防(TZ)模块配置*****************************/
EPwm2Regs.TZSEL.all=0; //禁用所有的TZ模块的CBC和OSHT触发源
EPwm2Regs.TZDCSEL.all=0; //禁用所有的数字比较输出事件
/*数字比较输出A事件1对EPWMxA的动作:
* 0- EPWMxA=高阻抗状态
* 1- 强制EPWMxA进入高电平。
* 2- 强制EPWMxA进入低电平。
* 3- 不动作,禁用
*/EPwm2Regs.TZCTL.bit.DCAEVT1=3;
EPwm2Regs.TZCTL.bit.DCAEVT2=3;//同上解释
EPwm2Regs.TZCTL.bit.DCBEVT1=3;
EPwm2Regs.TZCTL.bit.DCBEVT2=3;
EPwm2Regs.TZCTL.bit.TZA=3;
EPwm2Regs.TZCTL.bit.TZB=3;
EPwm2Regs.TZEINT.bit.CBC=0; //禁用CBC事件中断
EPwm2Regs.TZEINT.bit.DCAEVT1=0;//禁用DCAEVT1中断
EPwm2Regs.TZEINT.bit.DCAEVT2=0;//禁用DCAEVT2中断
EPwm2Regs.TZEINT.bit.DCBEVT1=0;//禁用DCBEVT1中断
EPwm2Regs.TZEINT.bit.DCBEVT2=0;//禁用DCBEVT2中断
EPwm2Regs.TZEINT.bit.OST=0;//禁用OST中断
//清除TZFLG的所有标志位
EPwm2Regs.TZCLR.all=0X7F;
//1-对TZFRC相应位写入1强制相应事件触发条件并设置TZFLG相应位 。0-不使用。
EPwm2Regs.TZFRC.all=0;
/************************* 事件触发(ET)模块配置*****************************/
EPwm2Regs.ETSEL.bit.SOCBEN=0;//0-禁止产生EPWMxSOCB脉冲去触发ADC转换
EPwm2Regs.ETSEL.bit.SOCBSEL=0;//由于SOCB禁用,此处无用
EPwm2Regs.ETSEL.bit.SOCAEN=0;//0-禁止产生EPWMxSOCA脉冲去触发ADC转换;1-允许产生EPWMxSOCA脉冲去触发ADC转换
/*EPWMxSOCA脉冲产生的选择选项
* 0-允许DCAEVT1.soc事件触发产生
* 1-允许TBCTR=0时触发产生
* 2-允许TBCTR=TBPRD时触发产生
* 3-允许TBCTR=0或TBCTR=TBPRD时触发产生
* 4-允许向上计数模式下TBCTR=CMPA时触发产生
* 5-允许向下计数模式下TBCTR=CMPA时触发产生
* 6-允许向上计数模式下TBCTR=CMPB时触发产生
* 7-允许向下计数模式下TBCTR=CMPB时触发产生
*/EPwm2Regs.ETSEL.bit.SOCASEL=6;
EPwm2Regs.ETSEL.bit.INTEN=0;//0-禁止EPWMx_INT生成
EPwm2Regs.ETSEL.bit.INTSEL=0;//由于EPWMx_INT禁用,此处无用
EPwm2Regs.ETPS.bit.SOCBPRD=0;//关闭SOCB事件计数器。不会产生EPWMxSOCB脉冲
/*ePWM ADC转换触发A事件(EPWMxSOCA)周期选择
* 0-禁用SOCA事件计数器。不会产生EPWMxSOCA脉冲
* 1-在第一个事件上生成EPWMxSOCA脉冲:ETPS[SOCACNT] =1
* 2-在第二个事件上生成EPWMxSOCA脉冲:ETPS[SOCACNT] =2
* 3-在第三个事件上生成EPWMxSOCA脉冲:ETPS[SOCACNT] =3
*/EPwm2Regs.ETPS.bit.SOCAPRD=3;
EPwm2Regs.ETPS.bit.INTPRD=0;//禁用中断事件计数器。不会产生中断,ETFRC[INT]将被忽略。
EPwm2Regs.ETCLR.bit.INT=1;//ePWM中断(EPWMx_INT)标志清除位:写1时清除ETFLG[INT]标志位,并允许生成进一步的中断脉冲(由于禁用中断,此处无用)
EPwm2Regs.ETCLR.bit.SOCA=1;//ePWM ADC转换触发A(EPWMxSOCA)标志清除位:写1清除ETFLG[SOCA]标志位
EPwm2Regs.ETCLR.bit.SOCB=1;//ePWM ADC转换触发B(EPWMxSOCB)标志清除位:写1清除ETFLG[SOCB]标志位(由于禁用SOCB,此处无用)
EPwm2Regs.ETFRC.bit.SOCA=0;//EPWMxSOCA软件强制触发位:写1-在EPWMxSOCA上生成脉冲并设置SOCBFLG位。此位用于测试目的。(只有需要启用EPWMxSOCA脉冲时才有用,即ETSEL.SOCAEN=1)
EPwm2Regs.ETFRC.bit.SOCB=0;//EPWMxSOCA软件强制触发位:写1-在EPWMxSOCB上生成脉冲并设置SOCBFLG位。此位用于测试目的。(只有需要启用EPWMxSOCB脉冲时才有用,即ETSEL.SOCBEN=1)
EPwm2Regs.ETFRC.bit.INT=0;//EPWMxINT软件强制触发位:写1-在EPWMxINT上生成一个中断,并设置INT标志位。此位用于测试目的(只有需要启用EPWMx_INT脉冲时才有用,即ETSEL.INTEN=1)
/************************* 数字比较(DC)模块配置*****************************/
//暂无使用
/************************<<EPWM2配置 end>>***************************/
}
- ADC相关代码请到此处查看
请点击此处查看ADC相关代码的详情文章