📄 event.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -