extint.c

来自「在AT91sam7SE上」· C语言 代码 · 共 81 行

C
81
字号
//ExtInt.c

#include	"Preprocess.h"
#include	"ExtInt.h"


CALL_BACK	g_pEiTaskHandler;


VOID	EiIrqHandler ( VOID ){
	EiClrIf();
	if(EI_FREQ != (AT91F_PIO_GetInput(EI_BASE) & EI_FREQ)){
		return;
	}
	if(NULL != g_pEiTaskHandler){
		g_pEiTaskHandler();
	}
}//VOID EiIrqHandler ( VOID ){




VOID	EiInit(CALL_BACK pEiHandler){
	AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << EI_ID ) ;

	g_pEiTaskHandler = pEiHandler;
	
	AT91F_PIO_CfgInput(EI_BASE, EI_FREQ );
	EI_BASE ->PIO_PPUER = EI_FREQ;
	EI_BASE ->PIO_IFER = EI_FREQ;
	
	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, 
		EI_ID,
		EI_INTERRUPT_LEVEL,
		AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
		EiIrqHandler
	);
}//VOID	EiInit(VOID){




VOID	EiPlay(VOID){
    EiClrIf();
    
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, EI_ID);
    AT91F_PIO_InterruptEnable(EI_BASE, EI_FREQ);

}//VOID	EiPlay(VOID){




VOID	EiStop(VOID){
    AT91F_AIC_DisableIt (AT91C_BASE_AIC, EI_ID);
    AT91F_PIO_InterruptDisable(EI_BASE, EI_FREQ);
}//VOID	EiStop(VOID){



VOID	EiPause(VOID){
    AT91F_AIC_DisableIt (AT91C_BASE_AIC, EI_ID);
}//VOID	EiPause(VOID){


VOID	EiContinue(VOID){
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, EI_ID);
}//VOID	EiPause(VOID){







VOID	EiClrIf(VOID){
	UINT uiDummy;
    uiDummy =EI_BASE->PIO_ISR;
    uiDummy =uiDummy;
}//VOID	EiClrIf(VOID){

⌨️ 快捷键说明

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