使用TMS32F2812控制PWM7输出频率为5kHz的方波
程序还未测试
# include "DSP281x_Device.h" // DSP281x Headerfile Include File
# include "DSP281x_Examples.h" // DSP281x Examples Include File
void init_eva(void);
void main(void)
{
InitSysCtrl();
//InitGpio(); 配置IO口功能为PWM模式
EALLOW;
GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0 = 1; // EVB PWM 7 pins
EDIS;
DINT; //关CPU总中断
InitPieCtrl(); //初始化PIE控制寄存器
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable(); //初始化PIE中断向量表
init_eva(); //初始化EV-B
EvbRegs.T3CON.bit.TENABLE=1; //启动定时器3
EINT; // 使能INTM(全局中断)
ERTM; // Enable Global realtime interrupt DBGM
for(;;); // while(1)
}
//EV-B初始化
void init_eva(void)
{
EvbRegs.T3PR = 7500; //周期值--连续增减时,PWM频率=TCLK/(2*T1PR)---频率设为5K, PWM=75M/(2*7500)=5kHz
EvbRegs.T3CMPR = 0x3C00; // Compare Reg--比较值
EvbRegs.T3CNT = 0x0000; //计数器初值
//连续增/减模式,x/1分频,内部时钟,使能比较,使用自己的周期,禁止定时器启动(等初始化全部完成后手工启动)
EvbRegs.T3CON.all = 0x0802;
EvbRegs.GPTCONB.bit.TCMPOE = 1; //使能T3比较输出
EvbRegs.GPTCONB.bit.T3PIN = 1; //GP定时器1比较时低有效
//连续增减--低有效时:PWM占空比=CMPR4/T3PR,高有效时:PWM占空比=(T1PR-CMPR4)/T1PR
EvbRegs.CMPR4 = 5625;
//第一路PWM占空比设为0.75,0.75=5625/7500
// output pin 7 CMPR4 - 低有效,output pin 8 CMPR4 - 低有效
// output pin 9 CMPR5 - 低有效,output pin 10 CMPR5 - 低有效
// output pin 11 CMPR6 - 低有效,output pin 12 CMPR6 - 低有效
EvbRegs.ACTRB.all = 0x0000; //比较方式控制寄存器,控制PWM引脚的 高/低 有效
EvbRegs.DBTCONB.all = 0x0000; //静止死区
EvbRegs.COMCONB.all = 0xA600; //比较控制寄存器--使能比较操作,CMPRB、ACTR下溢或周期匹配装载,禁止空间矢量PWM模式,
}