📄 subsleep.c
字号:
/*******************************Copyright (c)**********************************
***************************************By Z.Q.Yang****************************/
/******************************************************************************
*文件名:subsleep
*功能:睡眠模式服务函数
*头文件:"user.h","config.h"
*作者:Z.Q.Yang
*******************************************************************************/
#include"config.h"
#include"user.h"
extern void EINT0_Handler(void);
extern void InitialiseUART0(uint32 bps);
extern void TargetInit(void);
/******************************************************************************
*函数名:EINT0
*功能:睡眠唤醒处理函数
*入口参数:无
*出口参数:无
******************************************************************************/
void SleepWake(void)
{
PCONP=0x2be;
TargetInit();
}
/******************************************************************************
*函数名:EINT0
*功能:外部中断0服务函数
*入口参数:无
*出口参数:无
******************************************************************************/
void EINT0(void)
{
while( (EXTINT&0x01)!=0 ) // 等待外部中断信号恢复为高电平
{
EXTINT = 0x01; // 清除EINT0中断标志
}
VICVectAddr=0;
}
/******************************************************************************
*函数名:EINT0_Init
*功能:外部中断0初始化函数
*入口参数:无
*出口参数:无
******************************************************************************/
void EXINT0_Init(void)
{
VICIntSelect &=0xffffbfff; // 设置所有外部中断0为IRQ中断
VICVectCntl14 = (0x20|14); // EINT0通道分配到IRQ slot 0,即优先级最高
VICVectAddr14 = (int)EINT0_Handler; // 设置EINT0向量地址
VICIntEnable = (1<<14); // 使能EINT1中断
// EXTWAKE = 0x01; // 允许外部中断0唤醒掉电的CPU
EXTINT = 0x07; // 清除外部中断标志
}
/******************************************************************************
*函数名:Sleep
*功能:睡眠函数
*入口参数:无
*出口参数:无
******************************************************************************/
void Sleep(void)
{
uint32 vicen;
UART_MODE uset;
uset.bps=115200;
uset.stp=1;
uset.datlen=8;
uset.parity=0xff;
GUIClr();
GUIPrintf(36,28,1,"SLEEPING...");
LCDRefresh(GUIBuf);
vicen= VICIntEnable;
VICIntEnClr=0xffffffff;
PINSEL0 = 0x00000000;
PINSEL1 = 0x00000001;
EXINT0_Init();
PCONP=0x200;
PCON=0x01;
SleepWake();
VICIntEnClr=0xffffffff;
VICIntEnable=vicen;
UARTInit(0,uset);
Back();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -