📄 wake.c
字号:
/****************************************************************************
* 文件名:WAKE.C
* 功能:系统进行掉电状态,并允许外部中断0唤醒。每唤醒一次,蜂鸣器响一声。
* 说明:将跳线器JP9短接,JP4断开。
* 在J7的P0.16脚上连接一个按键,按键的另一端与GND连接,P0.16脚上还
* 要接一个上拉电阻。按下按键,即可触发外部中断0中断。
****************************************************************************/
#include "config.h"
#define BEEP (1<<7) /* 蜂鸣器控制口 */
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<5000; i++);
}
/****************************************************************************
* 名称:IRQ_EINT0()
* 功能:外部中断1中断处理程序。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void __irq IRQ_EINT0(void)
{ EXTINT = 0x01; // 清除EINT0中断标志
VICVectAddr = 0x00; // 中断处理结束
}
/****************************************************************************
* 名称:InitEint0()
* 功能:初始化外部中断0,使能IRQ中断。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void InitEint0(void)
{ PINSEL1 = (PINSEL1&0xFFFFFFFC) | 0x01;
EXTMODE = EXTMODE & 0x0E;
EXTPOLAR = EXTPOLAR & 0x0E;
EXTWAKE = EXTWAKE | 0x01; // 允许外部中断1唤醒掉电的CPU
EXTINT = 0x0F; // 清除所有外部中断标志
VICIntSelect = 0x00000000; // 设置所有VIC通道为IRQ中断
VICVectCntl0 = 0x2E; // EINT0通道分配到IRQ slot 0,即优先级最高
VICVectAddr0 = (int)IRQ_EINT0; // 设置EINT0向量地址
VICIntEnable = 0x00004000; // 使能EINT0中断
}
/****************************************************************************
* 名称:main()
* 功能:使用外部中断0唤醒掉电的CPU。
* 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。
****************************************************************************/
int main(void)
{ PINSEL0 = 0x00000000; // 设置I/O口连接
IO0DIR = BEEP;
InitEint0(); // 初始化外部中断0,使能IRQ中断
while(1)
{ PCON = 0x02; // 系统进行掉电模式
IO0CLR = BEEP; // 唤醒CPU后,控制蜂鸣器响一声
DelayNS(5);
IO0SET = BEEP;
DelayNS(5);
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -