⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 DSP TMS320F28335下MS5540大气压力传感器全程序
💻 C
字号:
//###########################################################################
//
// FILE:    pwm.c
//
// TITLE:   PWM发生器配置程序
//
// DESCRIPTION:
//			配置PWM寄存器
//			ePWM:EPWM1产生PWM波形控制泵,EPWM2定时触发ADC中断
//
//###########################################################################
//  Release: 
//  Date:		 2008.11.15
//	Modified:	 2008.11.15
//###########################################################################

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File


/////////////////////////////////////////////////////////////
/////PWM寄存器初值	/////

// Configure the period for each timer
#define EPWM1_TIMER_TBPRD  230  //PWM频率7.6KHz,30MHz系统时钟
#define EPWM1_MAX_CMPA      229
#define EPWM1_MIN_CMPA        1
#define EPWM1_MAX_CMPB      229
#define EPWM1_MIN_CMPB        1

// To keep track of which way the compare value is moving
#define EPWM_CMP_UP   1
#define EPWM_CMP_DOWN 0

Uint16 pwm_m=115;


typedef struct
{
   volatile struct EPWM_REGS *EPwmRegHandle;
   Uint16 EPwm_CMPA_Direction;
   Uint16 EPwm_CMPB_Direction;
   Uint16 EPwmTimerIntCount;
   Uint16 EPwmMaxCMPA;
   Uint16 EPwmMinCMPA;
   Uint16 EPwmMaxCMPB;
   Uint16 EPwmMinCMPB;
}EPWM_INFO;


void update_compare(EPWM_INFO*);

EPWM_INFO epwm1_info;


//////////////////////////////////////////////////////
//////PWM中断	////////

interrupt void epwm_isr(void)
{
   // Update the CMPA and CMPB values
   update_compare(&epwm1_info);

   // Clear INT flag for this timer
   EPwm1Regs.ETCLR.bit.INT = 1;

   // Acknowledge this interrupt to receive more interrupts from group 3
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}

/////////////////////////////////////////////////////
/////初始化PWM寄存器	/////

void pwm_init(void)
{

   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
   EDIS;

   // Setup TBCLK
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up
   EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD;       // Set timer period
   EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;    // Disable phase loading
   EPwm1Regs.TBPHS.half.TBPHS = 0x0000;       // Phase is 0
   EPwm1Regs.TBCTR = 0x0000;                  // Clear counter
   EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2;   // Clock ratio to SYSCLKOUT
   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2;	//寄存器值,要查对应的分频凳

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -