interrupts.c

来自「Firmware for lpc2148, including mmc, uar」· C语言 代码 · 共 97 行

C
97
字号
//interrupts.c
#include "interrupts.h"

/**** INTERRUPTS FUNCTION ****/
void (*UART0_function)(unsigned char);
void (*UART1_function)(unsigned char);
void (*EINT0_function)();
void (*EINT1_function)();
void (*EINT2_function)();
void (*RTC_function)();

void VIC_EnableInt(unsigned int IntType)
{
  VICIntEnable |= IntType;            //Enable inerrupt
}

void VIC_DisableInt(unsigned int IntType)
{
  VICIntEnClear |= IntType;           //Disable interrupt
}

void Vic_Init()
{
  VICProtection = 0;                  // Setup interrupt controller.
  VICIntEnClear = 0xffffffff;         // Disable all interrupts
}

void InitUART0Interrupt(void(*UART0_func)(unsigned char))
{

  UART0_function = UART0_func;        // Setup UART0 callback function.
  VICIntSelect &= ~VIC_UART0_bit;     // IRQ on UART0 line.
  VICVectAddr0 = (unsigned int)&UART0Interrupt;
  VICVectCntl0 = 0x20 | VIC_UART0;    // Enable vector interrupt for UART0.
  VICIntEnable |= VIC_UART0_bit;      // Enable UART0 interrupt.

}

void InitUART1Interrupt(void(*UART1_func)(unsigned char))
{

  UART1_function = UART1_func;        // Setup UART1 callback function.
  VICIntSelect &= ~VIC_UART1_bit;     // IRQ on UART1 line.
  VICVectAddr1 = (unsigned int)&UART1Interrupt;
  VICVectCntl1 = 0x20 | VIC_UART1;    // Enable vector interrupt for UART1.
  VICIntEnable |= VIC_UART1_bit;      // Enable UART1 interrupt.

}

void InitEINT0Interrupt(void(*EINT0_func)())
{

  EINT0_function = EINT0_func;        // Setup timer callback function.
  VICIntSelect &= ~VIC_EINT0_bit;     // IRQ on EINT0 line.
  VICVectAddr2 = (unsigned int)&EINT0Interrupt;
  VICVectCntl2 = 0x20 | VIC_EINT0;    // Enable vector interrupt for EINT0.
  VICIntEnable |= VIC_EINT0_bit;      // Enable EINT0 interrupt.

}

void InitEINT1Interrupt(void(*EINT1_func)())
{

  EINT1_function = EINT1_func;        // Setup timer callback function.
  VICIntSelect &= ~VIC_EINT1_bit;     // IRQ on EINT1 line.
  VICVectAddr3 = (unsigned int)&EINT1Interrupt;
  VICVectCntl3 = 0x20 | VIC_EINT1;    // Enable vector interrupt for EINT1.
  VICIntEnable |= VIC_EINT1_bit;      // Enable EINT1 interrupt.

}

void InitEINT2Interrupt(void(*EINT2_func)())
{

  EINT2_function = EINT2_func;        // Setup timer callback function.
  VICIntSelect &= ~VIC_EINT2_bit;     // IRQ on EINT2 line.
  VICVectAddr4 = (unsigned int)&EINT2Interrupt;
  VICVectCntl4 = 0x20 | VIC_EINT2;    // Enable vector interrupt for EINT2.
  VICIntEnable |= VIC_EINT2_bit;      // Enable EINT2 interrupt.

}


void InitRTCInterrupt(void(*RTC_func)())
{

  RTC_function = RTC_func;            // Setup timer callback function.
  VICIntSelect &= ~VIC_RTC_bit;       // IRQ on RTC line.
  VICVectAddr5 = (unsigned int)&RTCInterrupt;
  VICVectCntl5 = 0x20 | VIC_RTC;      // Enable vector interrupt for RTC.
  VICIntEnable |= VIC_RTC_bit;        // Enable RTC interrupt.

}



⌨️ 快捷键说明

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