?? pdrun.c
字號:
/****************************************************************************
* File:PDRUN.C
* 功能:系統進行掉電狀態,并允許外部中斷1喚醒。
; 說明:將跳線器JP8_LED1短接。
****************************************************************************/
#include "config.h"
#define LED1CON 0x00000800 /* P0.10口為LED1控制端 */
/****************************************************************************
* 名稱:IRQ_EINT1()
* 功能:外部中斷1中斷處理程序。
* 入口參數:無
* 出口參數:無
****************************************************************************/
void __irq IRQ_EINT2(void)
{ while( (EXTINT&0x04)!=0 ) // 等待外部中斷信號恢復為高電平
{ EXTINT = 0x04; // 清除EINT2中斷標志
}
VICVectAddr = 0x00; // 中斷處理結束
} // ljx
void __irq IRQ_EINT1(void)
{ while( (EXTINT&0x02)!=0 ) // 等待外部中斷信號恢復為高電平
{ EXTINT = 0x02; // 清除EINT1中斷標志
}
VICVectAddr = 0x00; // 中斷處理結束
} // ljx
void __irq IRQ_EINT0(void)
{ while( (EXTINT&0x01)!=0 ) // 等待外部中斷信號恢復為高電平
{ EXTINT = 0x01; // 清除EINT0中斷標志
}
VICVectAddr = 0x00; // 中斷處理結束
}
/****************************************************************************
* 名稱:InitEint1()
* 功能:初始化外部中斷1,使能IRQ中斷。
* 入口參數:無
* 出口參數:無
****************************************************************************/
void InitEint1(void)
{ VICIntSelect = 0x00000000; // 設置所有VIC通道為IRQ中斷
VICVectCntl2 = 0x30; //EINT2通道分配到IRQ slot 2,即優先級低
VICVectCntl1 = 0x2F; // EINT1通道分配到IRQ slot 1,即優先級次高
VICVectCntl0 = 0x2E; // EINT0通道分配到IRQ slot 0,即優先級最高
VICVectAddr2 = (int)IRQ_EINT2; // 設置EINT2向量地址
VICVectAddr1 = (int)IRQ_EINT1; // 設置EINT1向量地址
VICVectAddr0 = (int)IRQ_EINT0; // 設置EINT0向量地址
VICIntEnable = 0x0001c000; // P156 0x00008000 // 使能EINT1中斷
EXTWAKE = 0x07; // 0x02 // 允許外部中斷1喚醒掉電的CPU
EXTINT = 0x07; // 清除外部中斷標志
}
/****************************************************************************
* 名稱:main()
* 功能:掉電測試。
****************************************************************************/
int main(void)
{ PINSEL0 = 0xa0000000; //0x20000000 LJX // 設置I/O口連接,P0.14設置為EINT1
PINSEL1 = 0x00000001; //0x00000000
IODIR = LED1CON; // 設置LED1控制口為輸出,其它I/O為輸入
InitEint1(); // 初始化外部中斷1,使能IRQ中斷
while(1)
{ PCONP = 0x000; // P141 // 關閉定時器,RTC,UART等功能部件
PCON = 0x02; // P141 // 系統進行掉電模式
/* 當系統被喚醒后,取反LED控制 */
if( (IOSET&LED1CON)==0 ) IOSET = LED1CON;
else IOCLR = LED1CON;
}
return(0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -