求DSP产生可变占空比PWM波程序

2025-01-05 13:35:52
推荐回答(1个)
回答1:

用EVA事件管理器产生 重点看哈那张的内容 占空比有公式计算 自己动手做了才知道是怎么回事
/****************************************************************************
*
*文件名:EvPwm02.c
*
*功 能:PWM1和PWM2输出频率为1KHz的PWM波形。波形的占空比每隔1s变化5%,范围在10%
* 到90%之间。
*
*说 明:EVA下面的通用定时器T1工作于连续增/减计数模式,产生对称的PWM波形。通过
* T1的周期中断来计时,每隔1s钟改变1次占空比。死区时间为4.27us。
*
****************************************************************************/

#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"

Uint32 intcount;
int increase;
int decrease;

/****************************************************************************
*
*名 称:main()
*
*功 能:初始化系统和各个外设
*
*入口参数:无
*
*出口参数:无
*
****************************************************************************/

void main(void)
{

InitSysCtrl(); //初始化系统函数

DINT;
IER = 0x0000; //禁止CPU中断
IFR = 0x0000; //清除CPU中断标志

InitPieCtrl(); //初始化PIE控制寄存器

InitPieVectTable(); //初始化PIE中断向量表

InitGpio(); //初始化Gpio口

InitEv(); //初始化EV

intcount=0; //T1定时器周期中断计数器
increase=0; //占空比逐渐变小的变化趋势标志位
decrease=1; //占空比逐渐变大的变化趋势标志位

PieCtrl.PIEIER2.bit.INTx4=1; //使能PIE中断,T1定时器中断位于INT2.4

IER|=M_INT2;

EINT; //开全局中断
ERTM; //开实时中断

EvaRegs.T1CON.bit.TENABLE=1; //使能定时器T1计数操作

while(1)
{

}

}