資源簡(jiǎn)介
基于DSP28335產(chǎn)生4路PWM移相程序,每路以A為準(zhǔn),B與之互補(bǔ),帶死區(qū)。移相以第一路信號(hào)(EPWM1A)為基準(zhǔn)。假設(shè)第一路與第二路之間的移相角為D1 若D1=x,則D1對(duì)應(yīng)0.24*x度,例如x=50時(shí),D1對(duì)應(yīng)12度。
代碼片段和文件信息
//###############################################################################################
//?Description:
//?program?for?4路PWM信號(hào),每路以A為準(zhǔn),B與之互補(bǔ),帶死區(qū)。移相以第一路信號(hào)(EPWM1A)為基準(zhǔn)
//?$TI?Release:?F2833x/F2823x?Header?Files?and?Peripheral?Examples?V142?$
//?$Release?Date:?July?30?2017?$
//?$Copyright:?Copyright?孫川(Sun?Chuan)?$
//###############################################################################################
#include?“DSP28x_Project.h“?????
void?InitExInt(void);
void?InitEPwm1Example(void);
void?InitEPwm2Example(void);
void?InitEPwm3Example(void);
void?InitEPwm4Example(void);
//interrupt?void?epwm1_isr(void);
//interrupt?void?epwm2_isr(void);
//interrupt?void?epwm3_isr(void);
//interrupt?void?epwm4_isr(void);
//?Configure?the?period?for?each?timer
//第一路
volatile?Uint16?EPWM1_TIMER_TBPRD?=?1500;??//?Period=1501?TBCLK?counts
volatile?Uint16?EPWM1_CMPA?=?750;??????????//?Set?50%?占空比?for?EPWM1A?->?S1
//第二路
volatile?Uint16?EPWM2_TIMER_TBPRD?=?1500;??
volatile?Uint16?EPWM2_CMPA?=?750;??????????
//第三路
volatile?Uint16?EPWM3_TIMER_TBPRD?=?1500;??
volatile?Uint16?EPWM3_CMPA?=?750;
//第四路
volatile?Uint16?EPWM4_TIMER_TBPRD?=?1500;
volatile?Uint16?EPWM4_CMPA?=?750;
volatile?Uint16?D1?=?50;???//第一路與第二路之間的移相角?若D1=x,則D1對(duì)應(yīng)0.24*x度,例如x=50時(shí),D1對(duì)應(yīng)12度
volatile?Uint16?D2?=?100;??//第一路與第三路之間的移相角
volatile?Uint16?D3?=?72;???//第一路與第四路之間的移相角
#define?DBTIME_FED?28??死區(qū)設(shè)置
#define?DBTIME_RED?28
void?main(void)
{
//?Step?1.?Initialize?System?Control:
//?PLL?WatchDog?enable?Peripheral?Clocks
//?This?example?function?is?found?in?the?DSP2833x_SysCtrl.c?file.
???InitSysCtrl();
//?Step?2.?Initialize?GPIO:
//?This?example?function?is?found?in?the?DSP2833x_Gpio.c?file?and
//?illustrates?how?to?set?the?GPIO?to?it‘s?default?state.
//?InitGpio();??//?Disenable?pull-up?on?GPIO0?~?GPIO11
//?For?this?case?just?init?GPIO?pins?for?ePWM1?ePWM2?ePWM3?ePWM4
//?These?functions?are?in?the?DSP2833x_EPwm.c?file
???InitEPwm1Gpio();
???InitEPwm2Gpio();
???InitEPwm3Gpio();
???InitEPwm4Gpio();
//?Step?3.?Clear?all?interrupts?and?initialize?PIE?vector?table:
//?Disable?CPU?interrupts
???DINT;
//?Initialize?the?PIE?control?registers?to?their?default?state.
//?The?default?state?is?all?PIE?interrupts?disabled?and?flags
//?are?cleared.
//?This?function?is?found?in?the?DSP2833x_PieCtrl.c?file.
???InitPieCtrl();
//?Disable?CPU?interrupts?and?clear?all?CPU?interrupt?flags:
???IER?=?0x0000;
???IFR?=?0x0000;
//?Initialize?the?PIE?vector?table?with?pointers?to?the?shell?Interrupt
//?Service?Routines?(ISR).
//?This?will?populate?the?entire?table?even?if?the?interrupt
//?is?not?used?in?this?example.??This?is?useful?for?debug?purposes.
//?The?shell?ISR?routines?are?found?in?DSP2833x_DefaultIsr.c.
//?This?function?is?found?in?DSP2833x_PieVect.c.
???InitPieVectTable();
???MemCopy(&RamfuncsLoadStart?&RamfuncsLoadEnd?&RamfuncsRunStart);??//燒錄進(jìn)Flash中運(yùn)行
???InitFlash();
???InitExInt();
???EALLOW;
???PieVect
評(píng)論
共有 條評(píng)論