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

📄 int.c

📁 三星s3c2460开发板完整功能测试代码
💻 C
字号:

#include <stdio.h>
#include <string.h>

#include "option.h"
#include "2460addr.h"
#include "2460lib.h"
#include "2460slib.h" 

volatile int fiqCnt0, fiqCnt1;

static void __irq T0Int(void)           //FIQ
{
    ClearPending(BIT_TIMER0);
    fiqCnt0 += 1;

}

//--------------------------------------------------------------------
static void __irq T1Int(void)           //IRQ
{
    ClearPending(BIT_TIMER1);           
    fiqCnt1 += 1;
    
    if(fiqCnt0!=fiqCnt1)
        fiqCnt1 = 0; 
    if(fiqCnt0==10000)                  
        rTCON   = 0x0;                  
}

//**********************[ Test_Fiq ]**********************************
void Test_Fiq(void)
{
    int intmod;

    printf("[ FIQ Interrupt Test ]\n");
    fiqCnt0     = 0;
    fiqCnt1     = 0;    
    pISR_FIQ    = (unsigned int)T0Int;                
    pISR_TIMER1 = (unsigned int)T1Int;                
    intmod      = rINTMOD;                      
    rINTMOD     = BIT_TIMER0;                   
    rSRCPND     = BIT_TIMER0 | BIT_TIMER1;      
    rINTPND     = BIT_TIMER0 | BIT_TIMER1;      

    rTCFG0  = 0x0;      
    rTCFG1  = 0x0;      
    rTCNTB0 = 2570;
    rTCNTB1 = 2570;
    rTCON   = 0xa0a;
    rTCON   = 0x909;

    rINTMSK = ~(BIT_TIMER0 | BIT_TIMER1);      

    while(fiqCnt1<10000)
    {
	       if((fiqCnt1%100)==0)   
           printf(".");
    }
    rTCON = 0x0;       
    Delay(1);
    printf("\nfiqCnt0 = %d, fiqCnt1 = %d (10000,10000)\n",fiqCnt0,fiqCnt1);
    rINTMOD = intmod;
    rINTMSK = BIT_ALLMSK;
}

//***************[ Change_IntPriorities ]*************************
void Change_IntPriorities(void)
{
    int key;

 
    printf("[ Interrupt Controller Priority Policy ]\n\n");
    printf("1. Reverse Priority   2. Priority Rotate Off   3. Default\n\n");
    printf("Select : ");
    key = getchar();
    printf("%c\n\n",key);

    switch(key)
    {
       case '1':
          printf("Reverse priority is selected.\n");
          rPRIORITY_MODE = 0x9000000;
		  printf("rPRIORITY_MODE=%x\n",rPRIORITY_MODE);
          break;
       case '2':
          printf("Priority rotate off is selected.\n");
          rPRIORITY_MODE = 0x0;
          rPRIORITY_UPDATE = 0x0;              //Arbiter 0 to 6 group priority does not rotate
		  printf("rPRIORITY_MODE=%x\n",rPRIORITY_MODE);
		  break;
       case '3':
          printf("Default mode is selected.\n");
          rPRIORITY_MODE = 0x0;
          rPRIORITY_UPDATE = 0x7f;             //Arbiter 0 to 6 group priority rotate enable
		  printf("rPRIORITY_MODE=%x\n",rPRIORITY_MODE);
		  break;
    }
}

⌨️ 快捷键说明

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