//###########################################################################////文件名:Example_281xEvPwm.c////说明://设置事件管理器的定时器(TIMER1,TIMER2,TIMER3andTIMER4)//来产生T1PWM,T2PWM,T3PWM,T4PWM和PWM1-12波形(16路PWM波)。////############################################################################includeDSP281x_Device.h//DSP281x设备包含文件#includeDSP281x_Examples.h//DSP281x例程包含文件//函数原型声明voidinit_eva(void);voidinit_evb(void);voidmain(void)//主函数{//第1步:初始化系统控制量:PLL,看门狗,使能外围时钟InitSysCtrl();//系统初始化程序,原型在DSP281x_SysCtrl.c中//第2步:初始化GPIO:EALLOW;//使能保护寄存器GpioMuxRegs.GPAMUX.all=0x00FF;//将EVAPWM1-6引脚配置成通用I/OGpioMuxRegs.GPBMUX.all=0x00FF;//将EVBPWM7-12引脚配置成通用I/OEDIS;//禁止修改保护寄存器//第3步:清除所有中断,初始化PIE向量表DINT;//关闭总中断IER=0x0000;//关闭外设中断IFR=0x0000;//清除中断标志InitPieCtrl();//初始化PIE控制寄存器InitPieVectTable();//初始化PIE向量表//第4步:初始化所有外围设备init_eva();//初始化事件管理器Ainit_evb();//初始化事件管理器B//第5步:IDLE循环,采用示波器可以观察波形for(;;);}voidinit_eva(){//初始化EVATimer1EvaRegs.T1PR=0xFFFF;//定时器1周期值EvaRegs.T1CMPR=0x3C00;//定时器1比较值EvaRegs.T1CNT=0x0000;//定时器1计数器初值EvaRegs.T1CON.all=0x1042;//控制方式:连续增减;定时器使能,比较使能//初始化EVATimer2EvaRegs.T2PR=0x0FFF;//定时器2周期值EvaRegs.T2CMPR=0x03C0;//定时器2比较值EvaRegs.T2CNT=0x0000;//定时器2计数器初值EvaRegs.T2CON.all=0x1042;//控制方式:连续增减;定时器使能,比较使能//设置T1PWMandT2PWMEvaRegs.GPTCONA.bit.TCMPOE=1;//比较逻辑驱动T1/T2PWMEvaRegs.GPTCONA.bit.T1PIN=1;//定时器1比较器极性设置为低电平有效EvaRegs.GPTCONA.bit.T2PIN=2;//定时器2比较器极性设置为高电平有效//使能PWM1-PWM6比较功能EvaRegs.CMPR1=0x0C00;//比较单元比较器1设值EvaRegs.CMPR2=0x3C00;//比较单元比较器2设值EvaRegs.CMPR3=0xFC00;//比较单元比较器3设值EvaRegs.ACTRA.all=0x0666;//输出引脚1、3、5高有效,2、4、6低有效EvaRegs.COMCONA.all=0xA600;//允许比较输出;下溢或等于周期值时重载EvaRegs.DBTCONA.all=0x0000;//禁止死区}voidinit_evb(){//初始化EVBTimer3//Timer3控制T3PWMandPWM7-12EvbRegs.T3PR=0xFFFF;//Timer3周期值EvbRegs.T3CMPR=0x3C00;//Timer3比较值EvbRegs.T3CNT=0x0000;//Timer3计数器初值//TMODE=连续增减//Timer使能//Timer比较使能EvbRegs.T3CON.all=0x1042;//初始化EVBTimer4//Timer4控制T4PWMEvbRegs.T4PR=0x00FF;//Timer4周期值EvbRegs.T4CMPR=0x0030;//Timer4比较值EvbRegs.T4CNT=0x0000;//Timer4计数初值//TMODE=连续增减//Timer使能//Timer比较使能EvbRegs.T4CON.all=0x1042;//设置T3PWMandT4PWM//由比较逻辑来驱动T3/T4PWMEvbRegs.GPTCONB.bit.TCMPOE=1;//T3PWM的比较极性=低有效EvbRegs.GPTCONB.bit.T3PIN=1;//T4PWM的比较极性=高有效EvbRegs.GPTCONB.bit.T4PIN=2;//使能PWM7-PWM12比较功能EvbRegs.CMPR4=0x0C00;EvbRegs.CMPR5=0x3C00;EvbRegs.CMPR6=0xFC00;EvbRegs.ACTRB.all=0x0666;//比较动作控制,动作在一个比较情况下发生//输出管脚1CMPR4-高有效//输出管脚2CMPR4-低有效//输出管脚3CMPR5-高有效//输出管脚4CMPR5-低有效//输出管脚5CMPR6-高有效//输出管脚6CMPR6-低有效EvbRegs.COMCONB.all=0xA600;//允许比较输出;下溢或等于周期值时重载EvbRegs.DBTCONB.all=0x0000;//禁止死区}//此例程没有使用ISR(中断服务子程序)