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

📄 vic.c

📁 周立功arm7(lpc2104)的工程模板
💻 C
字号:

// *********************************
// LPC2000 SYSTEM WITHOUT OS
// FILE:     VIC.H
// MODIFIED: ZPCYP 2005-3-16 20:16
// *********************************


#include "lpc22xx.h"
#include "vic.h"

__irq void IRQ_Handler(void) {        // Main IRQ handler (called from vector.s)

  void (* p_isr)(void);

  while ((p_isr = (void (*)(void))VICVectAddr) != 0) {
                                      // Get ISR address & make sure it's not NULL
    (* p_isr)();                      // Execute ISR
    VICVectAddr = 0;                  // Acknowledge VIC
  }

}


void vect_irq_install(int vic_ch_id, int priority, void (* p_isr)(void)) {
// vic_ch_id: VIC channel id of interrupt to be installed
// priority:  Priority of interrupt to be installed ( 0..15 )
// p_isr:     ISR address of interrupt to be installed

  *((& VICVectCntl0) + priority) = vic_ch_id | 0x20;
  *((& VICVectAddr0) + priority) = (unsigned long) p_isr;

}


void non_vect_irq_install(void (* p_isr)(void)) {
// p_isr:     Common ISR address of non-vectored interrupts

  VICDefVectAddr = (unsigned long) p_isr;

}


void vic_irq_enable(int vic_ch_id, int enable) {
// vic_ch_id: VIC channel id of interrupt to be enabled/disabled
// enable   : Enable or Disable

  if (enable) {
    VICIntEnable = 1 << vic_ch_id;
  } else {
    VICIntEnClr  = 1 << vic_ch_id;
  }

}

⌨️ 快捷键说明

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