?? pdrun.c
字號:
/****************************************************************************
* File:PDRUN.C
* 功能:系統進行掉電狀態,并允許外部中斷1喚醒。
; 說明:將跳線器JP8_LED1短接。
****************************************************************************/
#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 slot 0,即優先級最高
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 + -