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

📄 interrupts.c

📁 Firmware for lpc2148, including mmc, uart, rtc, lcd, interrupts
💻 C
字号:
//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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -