stt.c

来自「包括EPA协议栈」· C语言 代码 · 共 44 行

C
44
字号
#include "stt.h"

static PHDLR pit_hdlr;
static PHDLR rtt_hdlr;

void SttIntHandler(void);

void SttInt(void) {
	uint32 state;
	
	state = AT91C_BASE_ST->ST_SR;

	if(state & AT91C_ST_ALMS) {
		(*rtt_hdlr)();
	}
	if(state & AT91C_ST_PITS) {
		(*pit_hdlr)();
	}
}

void RegHdlr(uint32 prh, PHDLR hldr) {
	if(prh == AT91C_ST_PITS) {
		pit_hdlr = hldr;
	}
	if(prh == AT91C_ST_ALMS) {
		rtt_hdlr = hldr;
	}
}

void SttInit(void) {
	uint32 state;
	
	state = AT91C_BASE_ST->ST_SR;
	
	AT91C_BASE_ST->ST_IDR = (AT91C_ST_PITS | AT91C_ST_WDOVF | AT91C_ST_RTTINC | AT91C_ST_ALMS);
	
	AT91F_AIC_ConfigureIt(AT91C_BASE_ST,
	                      AT91C_ID_SYS, 
	                      AT91C_AIC_PRIOR_HIGHEST,
	                      AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, 
	                      SttIntHandler); 

	AT91C_BASE_ST->ST_IER = (AT91C_ST_PITS | AT91C_ST_ALMS);
}

⌨️ 快捷键说明

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