⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsleep.c

📁 一个arm7实例
💻 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 + -