at91.c

来自「基于ARM7微控制器AT91X40开发板的定时器程序」· C语言 代码 · 共 46 行

C
46
字号
/* * at91.c *  * author: Kexin (kexin28@126.com) Tel:+8613714451195 * date:   2007-11-22	 */#include "at91.h"#include "at91_aic.h"#include "at91_timer.h"extern unsigned long svr[32];void at91_install_irqhandler(void *isr){  unsigned int *irq_vec_addr = (unsigned int*)0x18;  unsigned int *isr_entry_addr = (unsigned int*)0x38;  unsigned int instruction;  *isr_entry_addr=(unsigned int)isr;  instruction=((unsigned int)isr_entry_addr-(unsigned int)irq_vec_addr-0x08)|0xe59ff000;  *irq_vec_addr = instruction;}void do_irq(void){  unsigned int irq_num=0;  void (*isr)(void); label_again:  irq_num=*(volatile unsigned int  *)AIC_IVR;  if(irq_num!=0)  {    at91_mask_irq(irq_num);    isr=(void*)svr[irq_num];    if(isr!=0) isr();    at91_unmask_irq(irq_num);    *(volatile unsigned int  *)AIC_EOICR=irq_num;    goto label_again;   }}void at91_init(void *isr){	at91_install_irqhandler(isr);	at91_init_aic();}

⌨️ 快捷键说明

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