📄 main.c
字号:
/*******************************************************************************
*File: Main.c
*功能: 系统进入掉电状态,并允许外部中断1唤醒
*******************************************************************************/
#include "config.h"
#define LED1CON 0x00000400 /*P0.10口为LED1控制端*/
/*******************************************************************************
*名称: IRQ_EINT1()
*功能: 外部中断1中断处理程序
*******************************************************************************/
void __irq IRQ_EINT1(void)
{ while((EXTINT&0x02)!=0) //等待外部中断信号恢复为高电平
{EXTINT=0x02; //清除EINT1中断标志
}
VICVectAddr=0x00; //中断处理结束
}
/*******************************************************************************
*名称:InitEint1()
*功能: 初始化外部中断1,使能IRQ中断
*******************************************************************************/
void InitEint1(void)
{ VICIntSelect=0x00000000; //设置所有VIC通道为IRQ中断
VICVectCntl0=0x2F; //EINT0通道分配到IRQ Slot0,即优先级最高
VICVectAddr0=(int)IRQ_EINT1; //设置EINT1向量地址
VICIntEnable=0x00008000; //使能EINT1中断
EXTWAKE=0x02; //允许外部中断1唤醒掉电的CPU
EXTINT=0x07; //清除外部中断标志
}
/*******************************************************************************
*名称:main()
*功能:掉电测试
*******************************************************************************/
int main(void)
{ PINSEL0=0x20000000; //设置I/O口连接,P0.14设置为EINT1
PINSEL1=0x00000000;
IODIR=LED1CON; //设置LED1控制口为输出,其它I/O为输入
InitEint1(); //初始化外部中断1,使能IRQ中断
while(1)
{ PCONP=0x000; //关闭定时器,RTC,UART等功能部件
PCON=0x02; //系统进入掉电模式
/*当系统被唤醒后,取反LED控制*/
if((IOSET&LED1CON)==0)IOSET=LED1CON;
else IOCLR=LED1CON;
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -