用GPIO1和GPIO2生成双通道PWM波,一般为10Khz,通过修改Duty可以直接进行占空比
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
Uint16 *ExRamStart = (Uint16 *)0x100000;
void ConfigEPwm(void);
interrupt void EPWM_INT(void);
float Duty;
void main(void)
{
// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
InitSysCtrl();
// Step 2. Initalize GPIO:
// This example function is found in the DSP2833x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
InitGpio(); // Skipped for this example
// InitXintf16Gpio(); //zq
InitEPwm1Gpio();
Duty=0.5;
// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts
DINT;// 禁用CPU全局中断(防止配置过程中被中断打断)
InitPieCtrl();// 初始化PIE(外设中断扩展)控制寄存器
IER = 0x0000;// 清零CPU中断使能寄存器(禁用所有CPU级中断)
IFR = 0x0000;// 清零CPU中断标志寄存器(清除所有未处理的中断标志)
InitPieVectTable();// 初始化PIE向量表(存储中断服务函数地址)
EALLOW;
PieVectTable.EPWM1_INT=&EPWM_INT;// 将EPWM1中断服务函数地址写入PIE向量表
EDIS;
IER |= M_INT3;// 使能CPU的第3组中断(对应ePWM、eQEP等外设中断)
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;// 使能PIE第3组的第1个中断(即ePWM1中断)
EINT;// 启用全局中断(允许CPU响应中断)
ConfigEPwm();
// Step 4. Initialize the Device Peripheral. This function can be
// found in DSP2833x_CpuTimers.c
// InitCpuTimers(); // For this example, only initialize the Cpu Timers
// Configure CPU-Timer 0, 1, and 2 to interrupt every second:
// 150MHz CPU Freq, 1 second Period (in uSeconds)
//ConfigCpuTimer(&CpuTimer0, 150, 1000000);
//ConfigCpuTimer(&CpuTimer1, 150, 1000000);
//ConfigCpuTimer(&CpuTimer2, 150, 1000000);
// |