📄 pwm1.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 + -