亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? example_280xepwmtimerint.c

?? TI DSP TMS320F280x PWM定時器例程。
?? C
字號:
// TI File $Revision: /main/5 $
// Checkin $Date: March 29, 2005   15:41:29 $
//###########################################################################
//
// FILE:    Example_280xEPwmTimerInt.c
//
// TITLE:   DSP280x ePWM Timer Interrupt example.
//
// ASSUMPTIONS:
//
//    This program requires the DSP280x header files.  
//
//    Other then boot mode configuration, no other hardware configuration
//    is required.   
//
//    As supplied, this project is configured for "boot to SARAM" 
//    operation.  The 280x Boot Mode table is shown below.  
//    For information on configuring the boot mode of an eZdsp, 
//    please refer to the documentation included with the eZdsp,  
//
//       Boot      GPIO18     GPIO29    GPIO34
//       Mode      SPICLKA    SCITXDA
//                 SCITXB
//       -------------------------------------
//       Flash       1          1        1
//       SCI-A       1          1        0
//       SPI-A       1          0        1
//       I2C-A       1          0        0
//       ECAN-A      0          1        1        
//       SARAM       0          1        0  <- "boot to SARAM"
//       OTP         0          0        1
//       I/0         0          0        0 
//
//
//
// DESCRIPTION:
//
//    This example configures the ePWM Timers and increments
//    a counter each time an interrupt is taken.
//
//    As supplied:
//
//    All ePWM's are initalized.  Note that not all devices in the 280x
//    family have all 6 ePWMs. 
//
//    All timers have the same period
//    The timers are started sync'ed
//    An interrupt is taken on a zero event for each ePWM timer
//
//       ePWM1: takes an interrupt every event
//       ePWM2: takes an interrupt every 2nd event
//       ePWM3: takes an interrupt every 3rd event
//       ePWM4-ePWM6: take an interrupt every event
//      
//    Thus the Interrupt count for ePWM1, ePWM4-ePWM6 should be equal
//    The interrupt count for ePWM2 should be about half that of ePWM1
//    and the interrupt count for ePWM3 should be about 1/3 that of ePWM1
//
//    Watch Variables:
//       EPwm1TimerIntCount
//       EPwm2TimerIntCount
//       EPwm3TimerIntCount
//       EPwm4TimerIntCount
//       EPwm5TimerIntCount
//       EPwm6TimerIntCount
//
//###########################################################################
// $TI Release: DSP280x, DSP2801x Header Files V1.41 $
// $Release Date: August 7th, 2006 $
//###########################################################################


#include "DSP280x_Device.h"     // DSP280x Headerfile Include File
#include "DSP280x_Examples.h"   // DSP280x Examples Include File

// Configure which ePWM timer interrupts are enabled at the PIE level:
// 1 = enabled,  0 = disabled
#define PWM1_INT_ENABLE  1
#define PWM2_INT_ENABLE  1
#define PWM3_INT_ENABLE  1
#define PWM4_INT_ENABLE  1
#define PWM5_INT_ENABLE  1
#define PWM6_INT_ENABLE  1

// Configure the period for each timer
#define PWM1_TIMER_TBPRD   0x1FFF
#define PWM2_TIMER_TBPRD   0x1FFF
#define PWM3_TIMER_TBPRD   0x1FFF
#define PWM4_TIMER_TBPRD   0x1FFF
#define PWM5_TIMER_TBPRD   0x1FFF
#define PWM6_TIMER_TBPRD   0x1FFF


// Prototype statements for functions found within this file.
interrupt void epwm1_timer_isr(void);
interrupt void epwm2_timer_isr(void);
interrupt void epwm3_timer_isr(void);
interrupt void epwm4_timer_isr(void);
interrupt void epwm5_timer_isr(void);
interrupt void epwm6_timer_isr(void);
void InitEPwmTimer(void);

// Global variables used in this example
Uint32  EPwm1TimerIntCount;
Uint32  EPwm2TimerIntCount;
Uint32  EPwm3TimerIntCount;
Uint32  EPwm4TimerIntCount;
Uint32  EPwm5TimerIntCount;
Uint32  EPwm6TimerIntCount;


void main(void)
{
   int i;

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP280x_SysCtrl.c file.
   InitSysCtrl();

// Step 2. Initalize GPIO: 
// This example function is found in the DSP280x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
// InitGpio();  // Skipped for this example  


// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts 
   DINT;

// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.  
// This function is found in the DSP280x_PieCtrl.c file.
   InitPieCtrl();
   
// Disable CPU interrupts and clear all CPU interrupt flags:
   IER = 0x0000;
   IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt 
// Service Routines (ISR).  
// This will populate the entire table, even if the interrupt
// is not used in this example.  This is useful for debug purposes.
// The shell ISR routines are found in DSP280x_DefaultIsr.c.
// This function is found in DSP280x_PieVect.c.
   InitPieVectTable();

// Interrupts that are used in this example are re-mapped to
// ISR functions found within this file.  
   EALLOW;  // This is needed to write to EALLOW protected registers
   PieVectTable.EPWM1_INT = &epwm1_timer_isr;
   PieVectTable.EPWM2_INT = &epwm2_timer_isr;
   PieVectTable.EPWM3_INT = &epwm3_timer_isr;
   PieVectTable.EPWM4_INT = &epwm4_timer_isr;
   PieVectTable.EPWM5_INT = &epwm5_timer_isr;
   PieVectTable.EPWM6_INT = &epwm6_timer_isr;
   EDIS;    // This is needed to disable write to EALLOW protected registers

// Step 4. Initialize all the Device Peripherals:
// This function is found in DSP280x_InitPeripherals.c
// InitPeripherals();  // Not required for this example
   InitEPwmTimer();    // For this example, only initialize the ePWM Timers

// Step 5. User specific code, enable interrupts:

// Initalize counters:   
   EPwm1TimerIntCount = 0;
   EPwm2TimerIntCount = 0;
   EPwm3TimerIntCount = 0;
   EPwm4TimerIntCount = 0;
   EPwm5TimerIntCount = 0;         
   EPwm6TimerIntCount = 0;
   
// Enable CPU INT3 which is connected to EPWM1-6 INT:
   IER |= M_INT3;

// Enable EPWM INTn in the PIE: Group 3 interrupt 1-6
   PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE;
   PieCtrlRegs.PIEIER3.bit.INTx2 = PWM2_INT_ENABLE;
   PieCtrlRegs.PIEIER3.bit.INTx3 = PWM3_INT_ENABLE;
   PieCtrlRegs.PIEIER3.bit.INTx4 = PWM4_INT_ENABLE;
   PieCtrlRegs.PIEIER3.bit.INTx5 = PWM5_INT_ENABLE;
   PieCtrlRegs.PIEIER3.bit.INTx6 = PWM6_INT_ENABLE;            

// Enable global Interrupts and higher priority real-time debug events:
   EINT;   // Enable Global interrupt INTM
   ERTM;   // Enable Global realtime interrupt DBGM

// Step 6. IDLE loop. Just sit and loop forever (optional):
   for(;;)
   {
       asm("          NOP");
       for(i=1;i<=10;i++)
       {}
   }

} 


void InitEPwmTimer()
{

   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;      // Stop all the TB clocks
   EDIS;

   // Setup Sync
   EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // Pass through 
   EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // Pass through
   EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // Pass through
   EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // Pass through
   EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // Pass through
   EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // Pass through

   // Allow each timer to be sync'ed

   EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;
   EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
   EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;
   EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE;
   EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE;            
   EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE;

   EPwm1Regs.TBPHS.half.TBPHS = 100;
   EPwm2Regs.TBPHS.half.TBPHS = 200;    
   EPwm3Regs.TBPHS.half.TBPHS = 300;        
   EPwm4Regs.TBPHS.half.TBPHS = 400;
   EPwm5Regs.TBPHS.half.TBPHS = 500;   
   EPwm6Regs.TBPHS.half.TBPHS = 600;
   
   EPwm1Regs.TBPRD = PWM1_TIMER_TBPRD;
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;    // Count up
   EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // Select INT on Zero event
   EPwm1Regs.ETSEL.bit.INTEN = PWM1_INT_ENABLE;  // Enable INT
   EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;           // Generate INT on 1st event

   
   EPwm2Regs.TBPRD = PWM2_TIMER_TBPRD;
   EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;     // Count up
   EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;      // Enable INT on Zero event
   EPwm2Regs.ETSEL.bit.INTEN = PWM2_INT_ENABLE;   // Enable INT
   EPwm2Regs.ETPS.bit.INTPRD = ET_2ND;            // Generate INT on 2nd event

   
   EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD;
   EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;     // Count up
   EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;      // Enable INT on Zero event
   EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE;   // Enable INT
   EPwm3Regs.ETPS.bit.INTPRD = ET_3RD;            // Generate INT on 3rd event

   EPwm4Regs.TBPRD = PWM4_TIMER_TBPRD;
   EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;     // Count up
   EPwm4Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;      // Enable INT on Zero event
   EPwm4Regs.ETSEL.bit.INTEN = PWM4_INT_ENABLE;   // Enable INT
   EPwm4Regs.ETPS.bit.INTPRD = ET_1ST;            // Generate INT on 1st event

   
   EPwm5Regs.TBPRD = PWM5_TIMER_TBPRD;
   EPwm5Regs.TBCTL.bit.CTRMODE= TB_COUNT_UP;      // Count up
   EPwm5Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;      // Enable INT on Zero event
   EPwm5Regs.ETSEL.bit.INTEN = PWM5_INT_ENABLE;   // Enable INT
   EPwm5Regs.ETPS.bit.INTPRD = ET_1ST;            // Generate INT on 1st event

   
   EPwm6Regs.TBPRD = PWM6_TIMER_TBPRD;
   EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;     // Count up
   EPwm6Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;      // Enable INT on Zero event
   EPwm6Regs.ETSEL.bit.INTEN = PWM6_INT_ENABLE;   // Enable INT
   EPwm6Regs.ETPS.bit.INTPRD = ET_1ST;            // Generate INT on 1st event

   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;         // Start all the timers synced
   EDIS;


}


// Interrupt routines uses in this example:
interrupt void epwm1_timer_isr(void)
{
   EPwm1TimerIntCount++;

   // 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;
}

interrupt void epwm2_timer_isr(void)
{
   EPwm2TimerIntCount++;

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

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

interrupt void epwm3_timer_isr(void)
{
   EPwm3TimerIntCount++;

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

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

interrupt void epwm4_timer_isr(void)
{
   EPwm4TimerIntCount++;

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

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

interrupt void epwm5_timer_isr(void)
{
   EPwm5TimerIntCount++;

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

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

interrupt void epwm6_timer_isr(void)
{
   EPwm6TimerIntCount++;

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

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




//===========================================================================
// No more.
//===========================================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品| 中文字幕在线观看一区| 国产精品不卡在线| 日韩av网站免费在线| 成人av在线资源网站| 欧美一区二区三区视频| 17c精品麻豆一区二区免费| 九九在线精品视频| 欧美在线啊v一区| 国产精品丝袜一区| 国产在线视频不卡二| 欧美喷潮久久久xxxxx| 日韩理论在线观看| 成人视屏免费看| 精品卡一卡二卡三卡四在线| 亚洲成人激情综合网| 91玉足脚交白嫩脚丫在线播放| 精品久久99ma| 免费精品99久久国产综合精品| 欧美影院午夜播放| 1000部国产精品成人观看| 国产一区二区在线观看视频| 在线电影国产精品| 偷窥国产亚洲免费视频| 欧美亚洲一区二区在线观看| 亚洲少妇屁股交4| 成人免费高清在线| 中文字幕va一区二区三区| 黄页网站大全一区二区| 精品国产免费久久| 精品一区二区三区免费毛片爱| 91精品国产色综合久久不卡蜜臀 | 欧美韩国一区二区| 国产在线看一区| 久久久青草青青国产亚洲免观| 久久99蜜桃精品| 久久久久国产精品麻豆| 国产69精品久久久久毛片| 中文字幕精品三区| 99精品热视频| 洋洋av久久久久久久一区| 日本久久精品电影| 午夜视频在线观看一区二区 | 亚洲精品一二三四区| www.爱久久.com| 亚洲女女做受ⅹxx高潮| 欧美在线免费观看视频| 亚洲网友自拍偷拍| 日韩一区二区不卡| 国产自产2019最新不卡| 中文字幕在线观看一区二区| 欧洲日韩一区二区三区| 肉丝袜脚交视频一区二区| 精品久久免费看| 国产69精品久久777的优势| 国产精品国产三级国产三级人妇| 91丝袜高跟美女视频| 亚洲高清视频的网址| 日韩精品一区二区三区在线播放| 国产一区二区三区久久悠悠色av| 国产精品视频你懂的| 欧美在线视频你懂得| 免费观看成人av| 国产欧美日韩亚州综合| 91成人免费电影| 久久国产精品第一页| 一区二区中文视频| 欧美一区二区三区在线电影| 成人午夜短视频| 日本不卡一区二区三区| 国产欧美视频一区二区三区| 欧美性淫爽ww久久久久无| 国产综合色在线| 一区二区高清在线| 久久精品一区二区| 欧美日韩精品一区二区三区四区| 国产乱子轮精品视频| 亚洲一区二区三区爽爽爽爽爽| 精品国产一区二区三区忘忧草| 一本一道综合狠狠老| 国内精品免费在线观看| 亚洲综合av网| 国产精品久久久久久久第一福利| 678五月天丁香亚洲综合网| 成人福利视频网站| 久久99深爱久久99精品| 亚洲综合免费观看高清完整版| 久久久精品欧美丰满| 欧美老人xxxx18| 色天天综合久久久久综合片| 韩国一区二区在线观看| 亚洲国产精品一区二区久久 | 极品少妇xxxx精品少妇偷拍| 一区二区三区美女| 国产精品久久久久影院亚瑟| 日韩午夜激情视频| 精品一区二区三区在线播放 | 日韩av不卡在线观看| 国产精品久久久久三级| 精品处破学生在线二十三| 欧美日韩亚洲综合一区二区三区 | 中文一区在线播放| 欧美电影免费观看高清完整版在| 欧美午夜电影网| 色老汉av一区二区三区| 成人污视频在线观看| 欧美日韩久久久| 99这里只有精品| 不卡一区二区三区四区| 国产大陆亚洲精品国产| 国产在线视频一区二区三区| 看国产成人h片视频| 蜜臀精品一区二区三区在线观看| 图片区小说区区亚洲影院| 亚洲国产精品久久久久婷婷884 | 亚洲在线视频免费观看| 亚洲三级电影全部在线观看高清| 中文av一区二区| 国产精品久久久久影院亚瑟| 国产精品视频看| 国产精品久久国产精麻豆99网站| 国产精品日日摸夜夜摸av| 欧美激情艳妇裸体舞| 亚洲欧洲日产国码二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品色呦呦| 亚洲欧美日韩国产另类专区| 亚洲精品福利视频网站| 亚洲综合丝袜美腿| 男女男精品视频网| 国产精品888| av资源网一区| 欧美午夜一区二区| 欧美一级搡bbbb搡bbbb| 亚洲精品一区二区三区四区高清| 久久久久久久久久久久久久久99 | 欧美挠脚心视频网站| 欧美sm极限捆绑bd| 欧美国产在线观看| 一级做a爱片久久| 日本va欧美va欧美va精品| 极品尤物av久久免费看| 成人av免费观看| 欧美日本一区二区| 久久这里只有精品视频网| 国产精品高清亚洲| 丝袜美腿一区二区三区| 国产精品99久久久久久久女警| 本田岬高潮一区二区三区| 欧美日韩夫妻久久| 国产视频一区二区在线观看| 一区二区三区成人在线视频| 日本色综合中文字幕| 成人黄色在线视频| 欧美伊人久久久久久久久影院 | 一本大道久久精品懂色aⅴ | 婷婷开心久久网| 粉嫩av一区二区三区在线播放| 日本乱码高清不卡字幕| 久久人人爽爽爽人久久久| 亚洲乱码中文字幕综合| 国产九色sp调教91| 欧美精品一级二级三级| 国产精品超碰97尤物18| 黑人巨大精品欧美黑白配亚洲| 91福利小视频| 久久久久久**毛片大全| 香蕉成人伊视频在线观看| proumb性欧美在线观看| 日韩视频在线永久播放| 亚洲综合偷拍欧美一区色| 国产成人99久久亚洲综合精品| 91精品国产美女浴室洗澡无遮挡| 亚洲色欲色欲www| 国产精品18久久久久久久久久久久| 欧美日韩亚洲国产综合| 中文字幕色av一区二区三区| 国内精品写真在线观看| 欧美一区二区三区免费观看视频| 亚洲少妇中出一区| 成人精品免费看| 久久精品视频一区二区| 另类的小说在线视频另类成人小视频在线 | 亚洲乱码精品一二三四区日韩在线| 麻豆精品国产传媒mv男同| 欧美午夜不卡在线观看免费| 亚洲欧洲国产日本综合| 国产成人一区在线| 久久亚洲免费视频| 久草这里只有精品视频| 欧美一级片在线看| 亚洲不卡av一区二区三区| 色婷婷av一区二区三区软件| 自拍偷拍亚洲综合| 99久久99久久综合| 国产精品超碰97尤物18| 99天天综合性| 亚洲欧美激情插| 色吧成人激情小说| 一区二区三区四区乱视频|