?? dsp28_evpwm.c
字號:
#include "DSP281x_Device.h"
void main(void)
{//Step1 初始化系統控制寄存器,PLL,看門狗,時鐘
InitSysCtrl();
//Step2 設置GPIO功能
EALLOW;
//使能PWM輸出引腳
GpioMuxRegs.GPAMUX.all=0x00FF;
GpioMuxRegs.GPBMUX.all=0x00FF;
EDIS;
//Step3 初始化PIE中斷向量表
//禁止和清除所有CPU中斷
DINT;
IER=0X0000;
IFR=0X0000;
//初始化Pie控制寄存器位默認狀態
InitPieCtrl();
//將PIE向量表設置為特定狀態
InitPieVectTable();
//Step4 EVA配置T1PWM,T2PWM,PWM1-PWM6
//初始化定時器
//初始化EVA定時器1
EvaRegs.T1PR=0xFFFF;
EvaRegs.T1CMPR=0x3C00;
EvaRegs.T1CNT=0x0000;
//TMODE=連續遞增/遞減計數,定時器使能,比較使能
EvaRegs.T1CON.all=0x1042;
//初始化EVA定時器2
EvaRegs.T2PR=0x0FFF;
EvaRegs.T2CMPR=0x03C0;
EvaRegs.T2CNT=0x0000;
//TMODE=連續遞增/遞減計數,定時器使能,比較使能
EvaRegs.T2CON.all=0x1042;
//設置T1PWM和T2PWM
//比較邏輯驅動T1/T2PWM
EvaRegs.GPTCONA.bit.TCMPOE=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
//初始化定時器
//初始化EVB定時器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;
EvbRegs.T4CMPR=0x0030;
EvbRegs.T4CNT=0x0000;
//TMODE=連續遞增/遞減計數,定時器使能,比較使能
EvbRegs.T4CON.all=0x1042;
//設置T3PWM和T4PWM
EvbRegs.GPTCONB.bit.TCMPOE=1;
EvbRegs.GPTCONB.bit.T3PIN=1;
EvbRegs.GPTCONB.bit.T4PIN=2;
//使能產生PWM7-12的比較功能
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;
//Step IDLE循環
//采用示波器觀察PWM信號波形
for(;;);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -