?? pwm.c
字號(hào):
//###########################################################################
//
// FILE: pwm.c
//
// TITLE: PWM發(fā)生器配置程序
//
// DESCRIPTION:
// 配置PWM寄存器
// ePWM:EPWM1產(chǎn)生PWM波形控制泵,EPWM2定時(shí)觸發(fā)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系統(tǒng)時(shí)鐘
#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; //寄存器值,要查對應(yīng)的分頻凳
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -