📄 pwm.c
字号:
#include "DSP28_Device.h"
void xnitgpio()
{
EALLOW;
GpioMuxRegs.GPEMUX.bit.XINT2_ADCSOC_GPIOE1=1;
GpioMuxRegs.GPEQUAL.BIT.QUALPRD=0x0ff;
XIntruptRegs.XINT2CR.bit.ENABLE=1;
XIntruptRegs.XINT2CR.bit.POLARITY=0;
EDIS;
}
void InitEvA(void){
//设置GPIO
EALLOW;
GpioMuxRegs.GPAMUX.all=0x00ff;
//GpioMuxRegs.GPAMUX.all=0x00fe;
//GpioMuxRegs.GPADIR.bit.GPIOA0=1;
//GpioDataRegs.GPADAT.bit.GPIOA0=1;
EDIS;
// 初始化定时器控制寄存器 (EV A)
EvaRegs.GPTCONA.all = 0;
//设置定时器1
// 设置定时器1的周期和比较;
EvaRegs.T1PR = 0x1d4c;//10khz; // 周期
EvaRegs.T1CMPR = 0x1d4c; // 比较
// 中断使能
EvaRegs.EVAIMRA.bit.T1PINT = 1;
EvaRegs.EVAIFRA.bit.T1PINT = 1;
// 清除计数寄存器
EvaRegs.T1CNT = 0x0000;
// 设置定时器控制寄存器
//EvaRegs.T1CON.all = 0x1042;
EvaRegs.T1CON.all = 0x1040;
//连续递增/递减计数,定时器使能,比较使能
//设置定时器2
// 设置定时器2的周期和比较;
EvaRegs.T2PR = 0x1d4c;//0x0fff; // 周期
EvaRegs.T2CMPR = 0x000; // 比较
// 清除计数寄存器
EvaRegs.T2CNT = 0x0000;
// 设置定时器控制寄存器
//EvaRegs.T2CON.all = 0x1042;
EvaRegs.T2CON.all = 0x1040;
EvaRegs.EVAIMRB.bit.T2PINT = 1;//定时器2周期中断允许
EvaRegs.EVAIFRB.bit.T2PINT = 1;//清除标志
//设置T1PWM和T2PWM
//比较逻辑驱动T1/T2PWM
EvaRegs.GPTCONA.bit.TCOMPOE=1;
//EvaRegs.GPTCONA .bit .TCMPOE=1;
//定时器1比较其极性设置为低电平有效
EvaRegs.GPTCONA .bit .T1PIN =1;
//定时器2比较其极性设置为高电平有效
EvaRegs.GPTCONA .bit .T2PIN =2;
//使能产生PWM1-PWM6的比较功能
/*EvaRegs.CMPR1 =0x00c0;
EvaRegs.CMPR2 =0x03c0;
EvaRegs.CMPR3 =0x0fc0;*/
//比较方式控制
//输出引脚1CMPR1-高有效 输出引脚2CMPR1-低有效
//输出引脚3CMPR2-高有效 输出引脚4CMPR2-低有效
//输出引脚5CMPR3-高有效 输出引脚6CMPR3-低有效
//EvaRegs.ACTRA .all=0x0666;
//EvaRegs.DBTCONA.all=0x0Af8;//x/4,死区开,m=2,p=4,t=0.2us
// EvaRegs.COMCONA .all=0xA600;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -