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

📄 vectors.c

📁 基于MB95F168气体检漏仪软件代码
💻 C
字号:
/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
/* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
/* ELIGIBILITY FOR ANY PURPOSES.                                             */
/*                 (C) Fujitsu Microelectronics Europe GmbH                  */
/*---------------------------------------------------------------------------
  VECTORS.C
  - Interrupt level (priority) setting
  - Interrupt vector definition
-----------------------------------------------------------------------------*/

 #include "mb95100.h" 
 #include "fgm.h"
 #include "define.h"
extern	__interrupt void reload_timer_0(void);
extern	__interrupt void PPG0_2int(void);
extern	__interrupt void PPG1int(void);
/*---------------------------------------------------------------------------
   InitIrqLevels()

   This function  pre-sets all interrupt control registers. It can be used
   to set all interrupt priorities in static applications. If this file
   contains assignments to dedicated resources, verify  that the
   appropriate controller is used.

   NOTE: value 0xFF disables the interrupt and value 0 sets highest priority.
   NOTE: For all resource interrupts exists 3 Interrupt level registers (ILRx).
         Each register sets the level for 4 different resources (IRQx).
   NOTE: This list is prepared for the 8FX-emulation chip MB95FV100 'Horn'.
         Not all resources will be supported by all 8FX-devices
-----------------------------------------------------------------------------*/

void InitIrqLevels(void)
{
/*  ILRx                  IRQs defined by ILRx */

    ILR0 = 0xFF;      //  IRQ0:  external interrupt ch0 | ch4
                      //  IRQ1:  external interrupt ch1 | ch5 
                      //  IRQ2:  external interrupt ch2 | ch6
                      //  IRQ3:  external interrupt ch3 | ch7

    ILR1 = 0xFf;      //  IRQ4:  UART/SIO ch0
                      //  IRQ5:  8/16-bit timer ch0 (lower)
                      //  IRQ6:  8/16-bit timer ch0 (upper)
                      //  IRQ7:  LIN-UART (reception)

    ILR2 = 0xff;      //  IRQ8:  LIN-UART (transmission)
                      //  IRQ9:  8/16-bit PPG ch1 (lower) | UART/SIO ch1
                      //  IRQ10: 8/16-bit PPG ch1 (upper) | I2C ch1
                      //  IRQ11: 16-bit reload timer ch0

    ILR3 = 0x3F;      //  IRQ12: 8/16-bit PPG ch0 (upper)
                      //  IRQ13: 8/16-bit PPG ch0 (lower)
                      //  IRQ14: 8/16-bit timer ch1 (upper)
                      //  IRQ15: 16-bit PPG ch0 + ch2
                          
    ILR4 = 0xFF;      //  IRQ16: 16-bit reload timer ch1 | I2C ch0
                      //  IRQ17: 16-bit PPG ch1
                      //  IRQ18: 10-biat A/D-converter
                      //  IRQ19: Timebase timer
                          
    ILR5 = 0xFF;      //  IRQ20: Watch timer / counter
                      //  IRQ21: external interrupt ch 8-11
                      //  IRQ22: 8/16-bit timer ch1 (lower) | external interrupt ch 12-15
                      //  IRQ23: Flash | Custom ch1                           
}

/*---------------------------------------------------------------------------
   Prototypes
   
   Add your own prototypes here. Each vector definition needs is proto-
   type. Either do it here or include a header file containing them.
-----------------------------------------------------------------------------*/

__interrupt void DefaultIRQHandler (void);

/*---------------------------------------------------------------------------
   Vector definiton

   Use following statements to define vectors. 
   All resource related vectors are predefined. 
   Remaining software interrupts can be added hereas well.
-----------------------------------------------------------------------------*/

#pragma intvect DefaultIRQHandler 0   //  IRQ0:  external interrupt ch0 | ch4 
#pragma intvect DefaultIRQHandler 1   //  IRQ1:  external interrupt ch1 | ch5  
#pragma intvect DefaultIRQHandler 2   //  IRQ2:  external interrupt ch2 | ch6 
#pragma intvect DefaultIRQHandler 3   //  IRQ3:  external interrupt ch3 | ch7 
                                      
#pragma intvect FGM_INT 4   		  //  IRQ4:  UART/SIO ch0 
#pragma intvect DefaultIRQHandler 5   //  IRQ5:  8/16-bit timer ch0 (lower) 
#pragma intvect DefaultIRQHandler 6   //  IRQ6:  8/16-bit timer ch0 (upper) 
#pragma intvect DefaultIRQHandler 7   //  IRQ7:  LIN-UART (reception) 
                                      
#pragma intvect DefaultIRQHandler 8   //  IRQ8:  LIN-UART (transmission) 	     
#pragma intvect DefaultIRQHandler 9   //  IRQ9:  8/16-bit PPG ch1 (lower) | UART/SIO ch1 
#pragma intvect DefaultIRQHandler 10  //  IRQ10: 8/16-bit PPG ch1 (upper) | I2C ch1 
//#pragma intvect DefaultIRQHandler 11  //  IRQ11: 16-bit reload timer ch0 
#pragma intvect reload_timer_0	11	/* 16bit reload timer ch0 Vector */
                                      
#pragma intvect DefaultIRQHandler 12  //  IRQ12: 8/16-bit PPG ch0 (upper) 
#pragma intvect DefaultIRQHandler 13  //  IRQ13: 8/16-bit PPG ch0 (lower) 
#pragma intvect DefaultIRQHandler 14  //  IRQ14: 8/16-bit timer ch1 (upper) 
//#pragma intvect DefaultIRQHandler 15  //  IRQ15: 16-bit PPG ch0 + ch2 
#pragma intvect PPG0_2int	15	/* 16bitPPG0,2 Vector */                                          
#pragma intvect DefaultIRQHandler 16  //  IRQ16: 16-bit reload timer ch1 | I2C ch0 
//#pragma intvect DefaultIRQHandler 17  //  IRQ17: 16-bit PPG ch1 
#pragma intvect PPG1int	17	/* 16bitPPG1 Vector */
#pragma intvect DefaultIRQHandler 18  //  IRQ18: 10-biat A/D-converter 
#pragma intvect DefaultIRQHandler 19  //  IRQ19: Timebase timer 
                                          
#pragma intvect DefaultIRQHandler 20  //  IRQ20: Watch timer / counter 
#pragma intvect DefaultIRQHandler 21  //  IRQ21: external interrupt ch 8-11
#pragma intvect DefaultIRQHandler 22  //  IRQ22: 8/16-bit timer ch1 (lower) | external interrupt ch 12-15
#pragma intvect DefaultIRQHandler 23  //  IRQ23: Flash | Custom ch1    

/*--------------------------------------------------------------------------*/
/* Set the startup function in reset vector.
/*--------------------------------------------------------------------------*/
extern void _start(void);			/* Reference declaration of the startup function to be set. */
									/* Set RESETVECT section attribute to CONST	*/
#pragma section CONST=RESETVECT, locate=0xfffc
void (* const reset_vector[2])() = {
		(void (*)())(0x00),
		/* _start */
		FGM_INIT		/* 0xfffe,f = "FGM_INIT" (Monitor Debugger) */
};


__interrupt 
void DefaultIRQHandler (void)
{
    __DI();             // disable interrupts
    while(1)
        __wait_nop();   // halt system
}

/*--------------------------------------------------------------------------*/
/*  Switch the clock from Main Clock to PLL Clock.                          */
/*--------------------------------------------------------------------------*/
void SetClockMainToPll(void)
{
	/* Set PLL Control Register */
	/* (Main Clock Oscillation Frequency [FCH = 4MHz]) */
	PLLC_MPMC0 = CLOCK_X2_0;		/* Set the PLL multiplication rate.	*/
	PLLC_MPMC1 = CLOCK_X2_1;		/*				[4MHz=(FCH/2)*2]	*/
	PLLC_MPEN  = ENABLE;			/* Enable Main PLL Clock Oscillation */
	/* Wait until Main PLL Clock Oscillation is stabilized	*/
	while(PLLC_MPRDY == 0) {;}

	/* Set System Clock Control Register */
	SYCC_DIV0 = CLOCK_DIV1_0;	/* Select System Clock Dividing Ratio.*/
	SYCC_DIV1 = CLOCK_DIV1_1;	/*				[No Dividing]		*/
	SYCC_SCS0 = MAIN_PLL_CLOCK_MODE_0;	/* Select Main PLL Clock Mode */
	SYCC_SCS1 = MAIN_PLL_CLOCK_MODE_1;
	while( !((SYCC_SCM0 == MAIN_PLL_CLOCK_MODE_0) &&
			 (SYCC_SCM1 == MAIN_PLL_CLOCK_MODE_1)) ) {;}

	return;
}

⌨️ 快捷键说明

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