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

📄 main.c

📁 基于ARM的44B0开发板的中断IRQ程序的原代码
💻 C
字号:
#include "ctrl_set.h"
#include "console.h"
#include "utils.h"

#include "DataType.h"
#include "44b0x.h"

/*
KEY0 EINT4
KEY1 EINT5
KEY2 EINT6
KEY3 EINT7
*/
    void    __irq Timer5_Exception(void);
    void    __irq EXT_Exception(void);

extern void  DelayNS(int  dly);

extern U32 MCLK;


void LEDON(char i)
{

if(i==1)
{ rPDATC&=0xfff1;
rPDATC|=2;

}
if(i==2){
 rPDATC&=0xfff1;
rPDATC|=4;

}
if(i==3){
 rPDATC&=0xfff1;
rPDATC|=8;


}
}

void beep(char i)
{
if(i==0)
rPDATE|=0x20;
if(i==1)
rPDATE&=~0x20;
}




void Time5IntTest(void)
{

unsigned long int prescaler,mux5,timer5control;



pISR_TIMER5	=(int)Timer5_Exception;
rINTCON=1;

rINTMOD&=~BIT_TIMER5;//set timer5 as irq interrupt mode
//rINTMSK=~(BIT_TIMER5|BIT_GLOBAL); //timer5 interrupt enable
prescaler=255;
prescaler<<=16;

rTCFG0&=0xfffff0ff;
rTCFG0|=prescaler; //seting  timer5 prescaler

mux5=0  ;//0  1/2  
mux5<<=20;
rTCFG1&=0xff0fffff;
rTCFG1|=mux5;
rTCNTB5=65535/4;
timer5control=2;  //
timer5control<<=24;

rTCON=timer5control;
timer5control=5;  //
timer5control<<=24;
rTCON=timer5control;  

}


void Test_Eint(void)
{

rINTCON=1;//irq interrupt

pISR_EINT4567=(int)EXT_Exception;
rSPUCR=4;
//rPCONG=0x0000;
    rPCONG=0xff00;	//EINT7~4
    rPUPG=0x0;		//pull up enable
    rEXTINT=0x0; //low level interrupt 

 //  rI_ISPC=BIT_EINT4567;
   rINTMOD&=~(BIT_EINT4567|BIT_GLOBAL);
 
//    rINTMSK=~(BIT_EINT4567|BIT_GLOBAL);


   
}


        void    __irq EXT_Exception(void)
{
static int i;   
//DisableInt();	 


rEXTINTPND=0xf;

if(i%2==0)
LEDON(1);
else LEDON(2);
i++;
//EnableInt();
rI_ISPC=BIT_EINT4567;
}



        void    __irq Timer5_Exception(void)
{
static int i;   
	 
//DisableInt();



if(i%2==0)
beep(0);
else

beep(1);



i++;
//EnableInt();
rI_ISPC=BIT_TIMER5;
}




/*********************************************************/
#include "44b0x.h"

int Main()
{
	int i,j, key,temp,temp1,temp2;
	
		
		
//	ChangePllValue(88, 6, 1);	//修改系统主频为6倍频
	ChangePllValue(120, 8, 1);	//修改系统主频为6.4倍频
	PortInit();

    beep(1);

rINTMSK=0xffffffff;	
  initIRQ();//enable irq


 Time5IntTest();
 Test_Eint();
rINTMSK=~(BIT_EINT4567|BIT_GLOBAL|BIT_TIMER5); //intermask必须放这里,否则中断不能同时进入
 
    while(1);
	
}



        void  FIQ_Exception(void)
{


}

⌨️ 快捷键说明

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