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

📄 tsf_main.c

📁 变频器程序
💻 C
📖 第 1 页 / 共 3 页
字号:
                       
void led(void)/*	interrupt void timer1_isr(void)*/
	{   
			led_cnt++;
     	if(led_cnt==1000)
     	{ 

     		/*----FOR DEMO BORAD-------*/
     		/**PBDATDIR = *PBDATDIR ^ 0x0001;*/    /*IOPB0*/ 
  		    *PFDATDIR = *PFDATDIR ^ 0x0040;    //IOPF6取反,使LED变化
     		
      
     
     		/*---counter reset---*/
     	led_cnt=0; 
     
     	
     } 
		
	}
	
	
	


      
 void observe(unsigned int x0,unsigned int x1,unsigned int x2,unsigned int x3)
 /*DA0~DA3 and DACUD must be defined as global variables*/
 { DAC0=x0;
   DAC1=x1;
   DAC2=x2;
   DAC3=x3;
   DAOUT=3;/*start DAC*/
 }


 
 void delay(void)       
 { int i;
   for(i=1;i<5000;i++)
   { asm(" NOP");
   }
 }
 
 void sysinit(void)
 {*IMR = 0x0000;
 
 /*** Configure the System Control and Status registers ***/
    *SCSR1 = 0x00FD;
/*
 bit 15        0:      reserved
 bit 14        0:      CLKOUT = CPUCLK
 bit 13-12     00:     IDLE1 selected for low-power mode
 bit 11-9      000:    PLL x4 mode
 bit 8         0:      reserved
 bit 7         1:      1 = enable ADC module clock
 bit 6         1:      1 = enable SCI module clock
 bit 5         1:      1 = enable SPI module clock
 bit 4         1:      1 = enable CAN module clock
 bit 3         1:      1 = enable EVB module clock
 bit 2         1:      1 = enable EVA module clock
 bit 1         0:      reserved
 bit 0         1:      clear the ILLADR bit           */

    *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
/*
 bit 15-6      0's:    reserved
 bit 5         0:      do NOT clear the WD OVERRIDE bit
 bit 4         0:      XMIF_HI-Z, 0=normal mode, 1=Hi-Z'd
 bit 3         1:      disable the boot ROM, enable the FLASH
 bit 2     no change   MP/MC* bit reflects state of MP/MC* pin
 bit 1-0      11:      11 = SARAM mapped to prog and data       */


/*** Disable the watchdog timer ***/
    *WDCR  = 0x00E8;
/*
 bits 15-8     0's:     reserved
 bit 7         1:       clear WD flag
 bit 6         1:       disable the dog
 bit 5-3       101:     must be written as 101
 bit 2-0       000:     WDCLK divider = 1          */


/*** Setup external memory interface for LF2407 EVM ***/
    WSGR = 0x0000;
    asm(" NOP");
    WSGR = 0x0040;   
    WSGR=0x0100;
/*
 bit 15-11     0's:    reserved
 bit 10-9      00:     bus visibility off
 bit 8-6       001:    1 wait-state for I/O space
 bit 5-3       000:    0 wait-state for data space
 bit 2-0       000:    0 wait state for program space   */


/*** Setup shared I/O pins ***/
   // *MCRA = 0x0FC0;                   /* group A pins */
   *MCRA = 0x0540;   
  // *MCRA = 0x0000; 
   
/* 0 0 0 0,1 1 1 1,1 1 0 0,0 0 0 0
   F E D C B A 9 8 7 6 5 4 3 2 1 0
 bit 15        0:      0=IOPB7,     1=TCLKINA
 bit 14        0:      0=IOPB6,     1=TDIRA
 bit 13        0:      0=IOPB5,     1=T2PWM/T2CMP
 bit 12        0:      0=IOPB4,     1=T1PWM/T1CMP
 bit 11        0:      0=IOPB3,     1=PWM6
 bit 10        0:      0=IOPB2,     1=PWM5
 bit 9         0:      0=IOPB1,     1=PWM4
 bit 8         0:      0=IOPB0,     1=PWM3
 bit 7         0:      0=IOPA7,     1=PWM2
 bit 6         0:      0=IOPA6,     1=PWM1
 bit 5         0:      0=IOPA5,     1=CAP3
 bit 4         0:      0=IOPA4,     1=CAP2/QEP2
 bit 3         0:      0=IOPA3,     1=CAP1/QEP1
 bit 2         0:      0=IOPA2,     1=XINT1
 bit 1         0:      0=IOPA1,     1=SCIRXD
 bit 0         0:      0=IOPA0,     1=SCITXD       */

    *MCRB = 0xFE00;                     /* group B pins */
/*
 bit 15        1:      0=reserved,  1=TMS2 (always write as 1)
 bit 14        1:      0=reserved,  1=TMS  (always write as 1)
 bit 13        1:      0=reserved,  1=TD0  (always write as 1)
 bit 12        1:      0=reserved,  1=TDI  (always write as 1)
 bit 11        1:      0=reserved,  1=TCK  (always write as 1)
 bit 10        1:      0=reserved,  1=EMU1 (always write as 1)
 bit 9         1:      0=reserved,  1=EMU0 (always write as 1)
 bit 8         0:      0=IOPD0,     1=XINT2/ADCSOC
 bit 7         0:      0=IOPC7,     1=CANRX
 bit 6         0:      0=IOPC6,     1=CANTX
 bit 5         0:      0=IOPC5,     1=SPISTE
 bit 4         0:      0=IOPC4,     1=SPICLK
 bit 3         0:      0=IOPC3,     1=SPISOMI
 bit 2         0:      0=IOPC2,     1=SPISIMO
 bit 1         0:      0=IOPC1,     1=BIO*
 bit 0         0:      0=IOPC0,     1=W/R*            */

    *MCRC = 0x0000;                     /* group C pins */
/*
 bit 15        0:      reserved
 bit 14        0:      0=IOPF6,     1=IOPF6
 bit 13        0:      0=IOPF5,     1=TCLKINB
 bit 12        0:      0=IOPF4,     1=TDIRB
 bit 11        0:      0=IOPF3,     1=T4PWM/T4CMP
 bit 10        0:      0=IOPF2,     1=T3PWM/T3CMP
 bit 9         0:      0=IOPF1,     1=CAP6
 bit 8         0:      0=IOPF0,     1=CAP5/QEP4
 bit 7         0:      0=IOPE7,     1=CAP4/QEP3
 bit 6         0:      0=IOPE6,     1=PWM12
 bit 5         0:      0=IOPE5,     1=PWM11
 bit 4         0:      0=IOPE4,     1=PWM10
 bit 3         0:      0=IOPE3,     1=PWM9
 bit 2         0:      0=IOPE2,     1=PWM8
 bit 1         0:      0=IOPE1,     1=PWM7
 bit 0         0:      0=IOPE0,     1=CLKOUT      */


/*** Configure IOPC0 pin as an output ***/
   /* *PCDATDIR = *PCDATDIR | 0x0100;   */
    

/*** Setup timers 1 and 2, and the PWM configuration ***/
*T1CON = 0x0000;                   /* disable timer 1 */
*T2CON = 0x0000;                   /* disable timer 2 */

*GPTCONA = 0x0080;                  /* configure GPTCONA */  //timer 1 下溢启动AD
/*     
 bit 15        0:      reserved
 bit 14        1:      software reset then set back to 0 
 bit 13        0:      T1STAT, read-only
 bit 12-11     00:     reserved
 bit 10-9      00:     T2TOADC, 00 = no timer2 event starts ADC
 bit 8-7       01:     T1TOADC, 00 = no timer1 event starts ADC
 bit 6         0:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5-4       00:     reserved
 bit 3-2       00:     T2PIN, 00 = forced low
 bit 1-0       00:     T1PIN, 00 = forced low  */     
 
 

 


   /* Timer 1: configure to clock the PWM on PWM1 pin */
   /* Symmetric PWM, 20KHz carrier frequency, 25% duty cycle */
*T1CNT = 0x0000;                     /* clear timer counter */
*T1PR = timer1_per;                /* set timer period 750*/// 4000
//*DBTCONA = 0x0FE4;                /* deadband units off */
    /*  0 0 0 0,1 1 1 1,1 1 1 0,0 0 0 0
      0 | | | | | | | | | | | | | | | RESERVED 
      1 | | | | | | | | | | | | | | RESERVED
      2 | | | | | | | | | | | | | -----|DBTPS0, 000 X/1;001 X/2; 010 X/4;
      3 | | | | | | | | | | | | -------|DBTPS1  011 X/8;100 X/16;101 X/32;  
      4 | | | | | | | | | | | ---------|DBTPS2  110 X/8;111 X/16;
      5 | | | | | | | | | | EDBT1, En bit of PWM1,PWM2
      6 | | | | | | | | | EDBT2, En bit of PWM3,PWM4
      7 | | | | | | | | EDBT3, En bit of PWM5,PWM6
      8 | | | | | | | --|DBT0  
      9 | | | | | | ----|DBT1
      A | | | | | ------|DBT2
      B | | | | --------|DBT3
      C | | | reserved
      D | | reserved
      E | reserved
      F reserved
*/
*CMPR1 = 0;/*pwm_duty;*/                 /* set PWM1 duty cycle 563*/
*CMPR2 = 0;/*pwm_duty;*/
*CMPR3 = 0;/*pwm_duty;*/ 
//*ACTRA =0xA888;                   /* PWM1 pin set active high */     
//*ACTRA=0x0666;
 *ACTRA=0xA555;
//*ACTRA=0x0000;
//*ACTRA=0x0FFF;
/*  1 0 1 0,1 0 1 0,1 0 1 0,0 0 1 0
    F E D C B A 9 8 7 6 5 4 3 2 1 0
 bit 15        0:      space vector dir is CCW (don't care)
 bit 14-12     000:    basic space vector is 000 (dont' care)
 bit 11-10     00:     PWM6/IOPB3 pin forced low
 bit 9-8       00:     PWM5/IOPB2 pin forced low
 bit 7-6       00:     PWM4/IOPB1 pin forced low
 bit 5-4       00:     PWM3/IOPB0 pin forced low
 bit 3-2       00:     PWM2/IOPA7 pin forced low
 bit 1-0       10:     PWM1/IOPA6 pin active high     */

*COMCONA = 0x8200;  /* configure COMCON register */
    /*  1 0 0 0,0 0 1 0,0 0 0 0,1 1 0 0
      0 | | | | | | | | | | | | | | | reserved, 
      1 | | | | | | | | | | | | | | reserved,
      2 | | | | | | | | | | | | | reserved, 
      3 | | | | | | | | | | | | reserved,
      4 | | | | | | | | | | | reserved,
      5 | | | | | | | | | | reserved,
      6 | | | | | | | | | reserved,
      7 | | | | | | | | reserved,
      8 | | | | | | | --PDPINTA STATUS  
      9 | | | | | | ----FCOMPOE; ENABLE
      A | | | | | --ACTRLD0
      B | | | | ----ACTRLD1
      C | | | ----SVENABLE
      D | | --CLD0| 00 when T1CNT=0(underflow); 01 when T1CNT=0 OR T1PR
      E | ----CLD1| 10 initiate    ; 11 reserved
      F CENABLE
     */ 


*T1CON = 0x0840;                   /* configure T1CON register */
    /*  0 0 0 0,1 0 0 0,0 1 0 0,0 0 0 0
      0 | | | | | | | | | | | | | | | SELT1PR/SELT3PR+ SELT1PR, 0 = use own period register 
      1 | | | | | | | | | | | | | | TECMP EN
      2 | | | | | | | | | | | | | TCLD0;period reload |00 for TxCNT=0; 01 for TxCNT=0/TxPER; 
      3 | | | | | | | | | | | | TCLD1;----------------|10 imidiately ; 11 reserved
      4 | | | | | | | | | | | TCLKS0-|00 internal cup clk; 01 external clock
      5 | | | | | | | | | | TCLKS1---|10 reserved        ; 11 QEP only for T2 and T4
      6 | | | | | | | | | TENABLE 
      7 | | | | | | | | T2SWT1/T4SWT1+
      8 | | | | | | | --TPS0|000 X/1  001 X/2  010 X/4  
      9 | | | | | | ----TPS1|011 X/8  100 X/16 101 X/32
      A | | | | | ------TPS2|110 X/64 111 X/128
      B | | | | --|TMODE0---|00-stop/hold 01-continuous inc & dec
      C | | | ----|TMODE1---|10-continuous inc 11-directional inc & dec
      D | | RESERVED
      E | SOFT
      F FREE
     */ 
/*     
 bit 15-14     00:     stop immediately on emulator suspend
 bit 13        0:      reserved
 bit 12-11     01:     01 = continous-up/down count mode
 bit 10-8      000:    000 = x/1 prescaler
 bit 7         0:      reserved in T1CON
 bit 6         1:      TENABLE, 1 = enable timer
 bit 5-4       00:     00 = CPUCLK is clock source
 bit 3-2       00:     
 bit 1         0:      
 bit 0         0:                  */

  
/* Timer 2: configure to generate a 250ms periodic interrupt */    
    *T2CNT = 0x0000;                    /* clear timer counter */
    //*T2PR = timer2_per;                 /* set timer period */
    //*T2CON = 0x124C;                    /* configure T2CON register */
/*     
 bit 15-14     00:     stop immediately on emulator suspend
 bit 13        0:      reserved
 bit 12-11     10:     10 = continous-up count mode
 bit 10-8      010:    111 = x/4 prescaler
 bit 7         0:      T2SWT1, 0 = use own TENABLE bit
 bit 6         0:      TENABLE, 0 =Disable timer operation
 bit 5-4       00:     00 = CPUCLK is clock source
 bit 3-2       00:     00 = reload compare reg on underflow
 bit 1         0:      0 = disable timer compare
 bit 0         0:      SELT1PR, 0 = use own period register     */

    

/*** Setup the core interrupts ***/
   // *IMR = 0x0000;                      /* clear the IMR register */
    /**IFR = 0x003F;*/                      /* clear any pending core interrupts */
    *IFR = 0xFFFF;
*IMR = 0x0002;                      /* enable desired core interruptsINT2 */
    /* 0 0 0 0 0 0 1 0
       | | | | | | | int1
       | | | | | | int2 
       | | | | | int3
       | | | | int4
       | | | int5
       | | int6
       | reserved
       reserved
    */
    
/*** Setup the event manager interrupts ***/
    *EVAIFRA = 0xFFFF;                  /* clear all EVA group A interrupts */   
    /*  0 0 0 0,0 0 0 0,1 0 0 0,0 0 0 0
      0 | | | | | | | | | | | | | | | PDPINTA FLAG;READ: 0 RESET;1 SET
      1 | | | | | | | | | | | | | | CMP1INT FLAG  ;WRITE:0 NO FUNCTION;1 RESET
      2 | | | | | | | | | | | | | CMP2INT FLAG
      3 | | | | | | | | | | | | COMP3INT FLAG
      4 | | | | | | | | | | | RESERVED
      5 | | | | | | | | | | RESERVED 
      6 | | | | | | | | | RESERVED 
      7 | | | | | | | | T1PINT FLAG 
      8 | | | | | | | T1CINT FLAG
      9 | | | | | | T1UFINT FLAG
      A | | | | | T1OFINT FLAG
      B | | | | RESERVED
      C | | | RESERVED
      D | | RESERVED
      E | RESERVED
      F RESERVED
     */ 
    *EVAIFRB = 0xFFFF;                  /* clear all EVA group B interrupts */
    /*  0 0 0 0,0 0 0 0,1 0 0 0,0 0 0 0
      0 | | | | | | | | | | | | | | | T2PINT FLAG
      1 | | | | | | | | | | | | | | T2CINT FLAG
      2 | | | | | | | | | | | | | T2UFINT FLAG
      3 | | | | | | | | | | | | T2OFINT FLAG
      4 | | | | | | | | | | | RESERVED
      5 | | | | | | | | | | RESERVED 
      6 | | | | | | | | | RESERVED 
      7 | | | | | | | | RESERVED 
      8 | | | | | | | RESERVED
      9 | | | | | | RESERVED
      A | | | | | RESERVED
      B | | | | RESERVED
      C | | | RESERVED
      D | | RESERVED
      E | RESERVED
      F RESERVED
     */ 
    *EVAIFRC = 0xFFFF;                  /* clear all EVA group C interrupts */
*EVAIMRA = 0x0200;                  /* enable desired EVA group A interrupts */
    /* 0 0 0 0,0 0 1 0,0 0 0 0,0 0 0 0
       | | | | | | | | | | | | | | | PDPINTA EN
       | | | | | | | | | | | | | | CMP1INT EN
       | | | | | | | | | | | | | CMP2INT EN
       | | | | | | | | | | | | COMP3INT EN
       | | | | | | | | | | | RESERVED
       | | | | | | | | | | RESERVED 
       | | | | | | | | | RESERVED 
       | | | | | | | | T1PINT EN 
       | | | | | | | T1CINT EN
       | | | | | | T1UFINT EN
       | | | | | T1OFINT EN
        RESERVED
     */ 
     
*EVAIMRB = 0x0000;                  /* enable desired EVA group B interrupts */
    /* 0 0 0 0 0 0 0 0
       | | | | | | | T2PINT EN
       | | | | | | T2CINT EN
       | | | | | T2UFINT EN
       | | | | T2OFINT EN
       | | | RESERVED
       | | RESERVED
       | RESERVED
       RESERVED
    */
    
    
*EVAIMRC = 0x0000;                  /* enable desired EVA group C interrupts */
    /* 0 0 0 0 0 0 0 0
       | | | | | | | CAP1INT  EN
       | | | | | | CAP2INT EN
       | | | | | CAP3INT EN
       | | | | RESERVED
       | | | RESERVED
       | | RESERVED
       | RESERVED
       RESERVED
    */

 /*** Setup ADC and  configuration ***/                                                
*GPTCONA = *GPTCONA|0x0080; 
	/*GPTCONA = *GPTCONA&0xFDEF;  */
	/**GPTCONA = 0x0000;  */
    /*  \ \ \ \,\ 0 0 0,1 0 \ \,0 0 0 0
      0 | | | | | | | | | | | | | | | T1PIN-|00 force low;   01 active low
      1 | | | | | | | | | | | | | | T1PIN---|10 active high; 11 force high
      2 | | | | | | | | | | | | | T2PIN-|00 force low;   01 active low
      3 | | | | | | | | | | | | T2PIN---|10 active high; 11 force high
      4 | | | | | | | | | | | RESERVED
      5 | | | | | | | | | | RESERVED 
      6 | | | | | | | | | TCOMPOE-enable compare output 
      7 | | | | | | | | T1TOADC-|00 no start;       01 uderflow int flag
      8 | | | | | | | T1TOADC---|10 period int flag 11 comp int flag 
      9 | | | | | | T2TOADC-| 00 no start;    01 uderflow int flag
      A | | | | | T2TOADC---|10 per int flag 11 comp int flag
      B | | | | RESERVED
      C | | | RESERVED
      D | | T1STAT-T1 status:0 dec;1 inc (Read only)
      E | T2STAT-T2 status:0 dec;1 inc   (Read only)
      F RESERVED
     */ 	

*ADCTRL1=0x4000;      /*reset ADC */
asm("NOP");

*ADCTRL1=0x0010;      
/*     
 bit 15        0:      Reserved;
 bit 14        0:      no action;
 bit 13-12     00:     Immediate stop on suspend; 
 bit 11-8      0000:   2 x Tclk
 bit 7         1:      Fclk = CLK/2,Tclk = 2 × (1/CLK)(example, for CLK = 30 MHz, Tclk = 66 ns)
 bit 6         0:      Start-stop mode..
 bit 5         0:      ADC interrupt request priority=high
 bit 4         0:      Dual-sequencer mode.
 bit 3         0:      Calibration mode disabled
 bit 2         0:      Full reference voltage is applied to the ADC input  
 bit 1         1:      VREFHI is used as precharge value at ADC input
 bit 0         0:      Self-test mode disabled   */  
 
 *ADCTRL2=0x8100;  
/*     
 bit 15        0:      No action
 bit 14        0:      0 No action
 bit 13        0:      Clears a pending SOC trigger.
 bit 12        0:      Sequencer is Idle (i.e., waiting for trigger)
 bit 11-10     01:     Interrupt requested immediately when INT FLAG SEQ1 flag is set
 bit 9         0:      This bit must be cleared by the user writing a 1 to it.
 bit 8         1:      Allows SEQ1/SEQ to be started by Event Manager A trigger.
 bit 7         0:      Disable External signal start-of-conversion bit for SEQ1
 bit 6         0:      No action  
 bit 5         0:      Clears a Pending SOC trigger.
 bit 4         0:      Sequencer is idle
 bit 3-2       01:     Interrupt requested immediate on INT FLAG SEQ2 flag set 
 bit 1         0:      No interrupt event.
 bit 0         0:      SEQ2 cannot be started by EVB trigger.  */    
 
 *MAX_CONV=0x000f;      /* Number of conversions=4*/  
 *CHSELSEQ1=0x3210; 
 *CHSELSEQ2=0x7654;
 *CHSELSEQ3=0xBA98;
 *CHSELSEQ4=0xFEDC; 
 
  
   
    
      *PFDATDIR = *PFDATDIR | 0x4000;      //IOPF6输出有效      
   *PADATDIR=*PADATDIR|0x8080;
 *PBDATDIR=*PBDATDIR|0x5A5A;
    *PBDATDIR=*PBDATDIR&0x5FFF;
   *PEDATDIR=*PEDATDIR|0xFEFE;
   *PFDATDIR=*PFDATDIR|0x1111;
    *PFDATDIR=*PFDATDIR&0xD1FF;
   *PADATDIR=*PADATDIR|0xFFFF;  //test
     *PADATDIR=*PADATDIR|0x2000;      //cap3
     asm(" setc INTM ");
  EnDrive();
  // DisDrive();
  GndCeptRes();
  //UpJzgEn();
  UpJzgEn();
 UpJcqEn();
   
 
 UpVtgRes();
 
 UpPrtRes();
  *IMR=*IMR|0x0001; 
  
  
 }
 

⌨️ 快捷键说明

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