event.h

来自「基于ADI 公司的blackfin芯片的通用中断框架程序」· C头文件 代码 · 共 74 行

H
74
字号
#ifndef	INTERRUPT_EVENT_HANDLER

#define INTERRUPT_EVENT_HANDLER

#include "..\common\common.h"

//! type of interrupt handler
typedef void (*HINTR)(void);



//! core interrupt vector 14
#define IVG14	*(volatile unsigned long*)0xffe02038

//! core interrupt vector 15
#define IVG15	*(volatile unsigned long*)0xffe0203c

/// In the safe region of a interrupt handler,
/// another higher priority interrupt may be triggered.
#define BEGIN_SAFE_REGION		BEGIN_REGION	asm("[--sp] = reti;");

#define END_SAFE_REGION			asm("reti = [sp++];");	END_REGION


//! get ivg number
#define IVG_ID(val)		(1UL << (val))


//! max number of storage of imask temporary variables
#define MAX_TEMP_IMASK	64


//! max number of elements in the event queue
#define MAX_QUEUE_ELEM	5


//! Processor frequency
#define PROCESSOR_FREQ	(400UL << 20)

//! core timer tick
#define CORE_TIMER_TICK	((PROCESSOR_FREQ >> 10) * 5)		// 5 ms per tick 



//! register user-defined system interrupt vector
EXTERN void reg_sys_intrv(HINTR handler, unsigned handler_type);

//! unregister user-defined system interrupt vector
EXTERN void unreg_sys_intrv(unsigned handler_type);

//! initialize core interrupt vector
EXTERN void init_interrupt_vector(void);

//! set core interrupt mask
EXTERN void set_imask(unsigned event_id);

//! clear core interrupt mask
EXTERN void clear_imask(unsigned event_id);

//! enable core interrupt temporarily
EXTERN void enable_intr(unsigned event_id);

//! disable core interrupt temporarily
EXTERN void disable_intr(unsigned event_id);

//! restore the current imask to the original one
EXTERN void restore_imask(void);



#endif


⌨️ 快捷键说明

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