⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int.c

📁 Dignostic test program for SMDK441f board chip peripellel. ADS1.2 compiler
💻 C
字号:
#include "def.h"
#include "option.h"
#include <string.h>
#include "k44.h"
#include "k44lib.h"



void MakeHwInt(void)	
{
        
 	Uart_Printf("[]HW vector interrupt mode is enabled.\n");
    
    	// for only test, the order of interrupt priority is reversed 
    	// in comparision with the default settings.
    	/*rINTPRI0=0xef101112;
    	rINTPRI1=0x0b0c0d0e;
    	rINTPRI2=0x0708090a;
    	rINTPRI3=0x03040506;
    	rINTPRI4=0x13000102;*/  

	//To test whether or not h/w vector interrupt works,use HandlerIRQ in k44init2.s
        pISR_IRQ=0x0;
 	pISR_FIQ=0x0;

    	rINTPRI0=0xe3020100;
    	rINTPRI1=0x07060504;
    	rINTPRI2=0x0b0a0908;
    	rINTPRI3=0x0f0e0d0c;
    	rINTPRI4=0x13121110;  
}





volatile int cntEint0;
volatile int cntEint1;
volatile int cntEint2;

void __irq IsrEint0(void)
{
    rINTPEND=~BIT_EINT0;  
    cntEint0++;
}


void __irq IsrEint1(void)
{
    rINTPEND=~BIT_EINT1;  
    cntEint1++;
}


void __irq IsrEint2(void)
{
    rINTPEND=~BIT_EINT2;  
    cntEint2++;
}


void Test_Eint(void)	
{
    int i;
    rP0=rP0|0x1; //GPIO0=H
    rP0CON|=0x1; //GPIO0=output
    
    
    pISR_EINT0=(unsigned)IsrEint0;
    pISR_EINT1=(unsigned)IsrEint1;
    pISR_EINT2=(unsigned)IsrEint2;


    rINTPEND=~(BIT_EINT0|BIT_EINT1|BIT_EINT2);  //to clear rINTPEND

    rINTMASK=BIT_EINT0|BIT_EINT1|BIT_EINT2;

    cntEint0=0; 
    cntEint1=0;
    cntEint2=0;
    
    rEINTMOD=(0<<4)|(0<<2)|(0);//falling edge
    rEINTCON=0x7; //EINT0,1,2 interrupt is enabled.
    
    rP0=rP0&(~0x1);	//GPIO0=L;
    
    for(i=0;i<10;i++); //wait until the eint012 interrupt occurs.
    Uart_Printf("Falling Eint test.\n");
    Uart_Printf("cntEint0=%d, cntEint1=%d,cntEint2=%d\n",1,1,1);
    Uart_Printf("cntEint0=%d, cntEint1=%d,cntEint2=%d\n",cntEint0,cntEint1,cntEint2);



    cntEint0=0; 
    cntEint1=0;
    cntEint2=0;
    
    rEINTMOD=(1<<4)|(1<<2)|(1);//rising edge
    
    rP0=rP0|0x1; 	//GPIO0=H    

    for(i=0;i<10;i++); //wait until the eint012 interrupt occurs.

    Uart_Printf("Rising Eint test.\n");
    Uart_Printf("cntEint0=%d, cntEint1=%d,cntEint2=%d\n",1,1,1);
    Uart_Printf("cntEint0=%d, cntEint1=%d,cntEint2=%d\n",cntEint0,cntEint1,cntEint2);
    

/*
    cntEint0=0; 
    cntEint1=0;
    cntEint2=0;

    rEINTMOD=(3<<4)|(3<<2)|(3);//low level

    rP0=rP0&(~0x1);	//GPIO0=L;
    for(i=0;i<10;i++); //wait until the eint012 interrupt occurs.
    rP0=rP0&(~0x1);	//GPIO0=H;

    //may be pended here???

    Uart_Printf("Low level Eint test.\n");
    Uart_Printf("cntEint0>%d, cntEint1>%d,cntEint2>%d\n",2,2,2);
    Uart_Printf("cntEint0=%d, cntEint1=%d,cntEint2=%d\n",cntEint0,cntEint1,cntEint2);



    cntEint0=0; 
    cntEint1=0;
    cntEint2=0;
    
    rEINTCON=0x7; //EINT0,1,2 interrupt is enabled.
    rP0=rP0&(~0x1);	//GPIO0=L;
    rEINTMOD=(2<<4)|(2<<2)|(2);//High level
    rEINTCON=0x7; //EINT0,1,2 interrupt is enabled.

    rP0=rP0|0x1; 	//GPIO0=H    
    for(i=0;i<10;i++); //wait until the eint012 interrupt occurs.
    rP0=rP0&(~0x1);	//GPIO0=L;
    
    //may be pended here???

    Uart_Printf("High level Eint test.\n");
    Uart_Printf("cntEint0>%d, cntEint1>%d,cntEint2>%d\n",2,2,2);
    Uart_Printf("cntEint0=%d, cntEint1=%d,cntEint2=%d\n",cntEint0,cntEint1,cntEint2);
*/
    rINTMASK=0;
}    

⌨️ 快捷键说明

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