⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm1.c

📁 PWM发生器
💻 C
字号:
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File


void main(void)
{
//Step1,初始化系统控制寄存器,PLL,看门狗,时钟等
    InitSysCtrl();

//Step2,设置GPIO功能
    EALLOW;
	//使能PWM引脚
	GpioMuxRegs.GPAMUX.all = 0x00FF; //EVA PWM1-6引脚
	GpioMuxRegs.GPBMUX.all = 0x00FF; //EVB PWM7-12引脚

    EDIS;

//Step3,初始化PIE中断向量表vector table;
    //进制和清楚所有CPU中断:
	DINT;
	IER = 0x0000;
	IFR = 0x0000;

    //初始化PIE控制寄存器位默认状态
	InitPieCtrl();

    //将PIE向量表设置为特定状态
	InitPieVectTable();

//Step4,EVA配置T1PWM,T2PWM,PWM1-PWM6
//初始化定时器
    //初始化EVA定时器1:
	EvaRegs.T1PR = 0xFFFF;    //定时器1周期
	EvaRegs.T1CMPR = 0x3C00;  //定时器1比较器
	EvaRegs.T1CNT = 0x0000;   //定时器1计数器
	//TMODE=连续递增/递减计数,定时器使能,比较使能

    EvaRegs.T1CON.all = 0x1042;

    //初始化EVA定时器2:

	//EvaRegs.DBTCONA.all = 0x0C4C;    //使能死区控制

	EvaRegs.T2PR = 0x0FFF;    //定时器2周期
	EvaRegs.T2CMPR = 0x03C0;  //定时器2比较器
	EvaRegs.T2CNT = 0x0000;   //定时器2计数器
	//TMODE=连续递增/递减计数,定时器使能,比较使能

    EvaRegs.T2CON.all = 0x1042;

//设置T1PWM和T2PWM
    //比较逻辑驱动T1/T2 PWM
	EvaRegs.GPTCONA.bit.T1CMPOE = 1;
	//定时器1比较器极性设置为低电平有效
	EvaRegs.GPTCONA.bit.T1PIN = 1;
	//定时器2比较器极性设置为高电平有效
	EvaRegs.GPTCONA.bit.T2PIN = 2;

//使能产生PWM1-PWM6的比较功能
    EvaRegs.CMPR1 = 0x0C00;
	EvaRegs.CMPR2 = 0x3C00;
	EvaRegs.CMPR3 = 0xFC00;

    //比较方式控制
	//输出引脚1CMPR1-高有效
	//输出引脚2CMPR1-低有效
	//输出引脚3CMPR2-高有效
	//输出引脚4CMPR2-低有效
	//输出引脚5CMPR3-高有效
	//输出引脚6CMPR3-低有效

    EvaRegs.ACTRA.all = 0x0666;
	EvaRegs.DBTCONA.all = 0x0000;   //禁止死区
	EvaRegs.COMCONA.all = 0xA600;
/*
//Step5,EVB配置T3PWM,T4PWM,和PWM7-PWM12
//初始化定时器

    //初始化定时器3
//定时器3控制T3PWM和PWM7-12
    EvbRegs.T3PR = 0xFFFF;    //定时器3周期
	EvbRegs.T3CMPR = 0x3C00;  //定时器3比较器
	EvbRegs.T3CNT = 0x0000;   //定时器3计数器
	//TMODE=连续递增/递减计数,定时器使能,比较使能
	EvbRegs.T3CON.all = 0x1042;

    //初始化EVB定时器4
//定时器4控制T4PWM
/*    EvbRegs.T4PR = 0x00FF;    //定时器4周期
	EvbRegs.T4CMPR = 0x0030;  //定时器4比较器
	EvbRegs.T4CNT = 0x0000;   //定时器4计数器
	//TMODE=连续递增/递减计数,定时器使能,比较使能
	EvbRegs.T4CON.all = 0x1042;
*/
//设置T3PWM和T4PWM
    //比较逻辑驱动T3/T4 PWM
/*	EvbRegs.GPTCONB.bit.T3CMPOE = 1;
	//定时器3比较器设置为低电平有效
	EvbRegs.GPTCONB.bit.T3PIN = 1;
	//定时器4比较器设置为高电平有效
	EvbRegs.GPTCONB.bit.T4PIN = 2;
*/
//使能产生PWM7-PWM12的比较功能
/*    EvbRegs.CMPR4 = 0x0C00;
	EvbRegs.CMPR5 = 0x3C00;
	EvbRegs.CMPR6 = 0xFC00;
*/
    //比较方式控制
	//输出引脚1CMPR4-高有效
	//输出引脚2CMPR4-低有效
	//输出引脚3CMPR5-高有效
	//输出引脚4CMPR5-低有效
	//输出引脚5CMPR6-高有效
	//输出引脚6CMPR6-低有效
//	EvbRegs.ACTRB.all = 0x0666;
//	EvbRegs.DBTCONB.all = 0x0000;   //禁止死区
//	EvbRegs.COMCONB.all = 0xA600;

//Step6,IDLE循环
//采用示波器观察PWM信号波形
    for(;;);


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -