?? vic.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 + -