📄 testeint.c
字号:
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
static void __irq EINT0_ISR(void)
{
rSRCPND |= (1<<0);
rINTPND |= (1<<0);
Uart_Printf("EINT0 is occurred.\n");
}
static void __irq EINT2_ISR(void)
{
rSRCPND |= (1<<2);
rINTPND |= (1<<2);
Uart_Printf("EINT2 is occurred.\n");
}
void xmain(void)
{
ChangeClockDivider(3,1);
ChangeMPllValue(127,2,1); //405MHZ
Isr_Init();
Uart_Init(0, 115200);
Uart_Select(0);
Uart_Printf("the main is running.\n");
//-----------------中断初始化----------------//
//选择功能管脚
rGPFCON = ( rGPFCON | (3<<0) ) & ( ~(1<<0) );//EINT0 -> GPF0
rGPFCON = ( rGPFCON | (3<<4) ) & ( ~(1<<4) );//EINT2 -> GPF2
//中断模式
rINTMOD = rINTMOD & ( ~(1<<0) );//EINT0 IRQ mode
rINTMOD = rINTMOD & ( ~(1<<2) );//EINT2 IRQ mode
//触发方式
rEXTINT0 = ( rEXTINT0 | (7<<0) ) & ( ~(4<<0) );//EINT0 falling edge triggered
rEXTINT0 = ( rEXTINT0 | (7<<6) ) & ( ~(4<<6) );//EINT2 falling edge triggered
//使能中断
rINTMSK = rINTMSK & ( ~(1<<0) );//EINT0 interrupt service availalbe
rINTMSK = rINTMSK & ( ~(1<<2) );//EINT2 interrupt service available
//清中断
rSRCPND |= (1<<0);//to clear EINT0
rINTPND |= (1<<0);//
rSRCPND |= (1<<2);//to clear EINT2
rINTPND |= (1<<2);//
//中断向量
pISR_EINT0 = (U32)EINT0_ISR;//EINT0
pISR_EINT2 = (U32)EINT2_ISR;//EINT2
while(1)
{
Uart_Printf("the main is running.\n");
Delay(1000000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -