TMS32F2812仿真实验

使用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模式,

}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值