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

📄 power.c

📁 smdk40100 40mhz test code
💻 C
字号:
/********************************************************************************/
/*			   Power Down Function Test				*/
/* Function : power.c								*/
/* Description : Power-down mode test main routine				*/
/*               void Test_SlowMode(void) : Slow mode test			*/
/*		 void Test_StopMode(void) : Stop mode test			*/
/*		 void Test_IdleMode(void) : Idle mode test			*/
/* Author : Yong Hyeon Kim	E-mail: telecom2@sec.samsung.com		*/
/********************************************************************************/

#include "..\include\k401.h"
#include "..\include\k401lib.h"
#include "..\include\def.h"
#include "..\include\power.h"
#include "math.h"
#include "..\include\rtc.h"

void __irq Eint0Int(void);
void __irq AlarmInt(void);
void __irq T1matchInt(void);
void __irq T2matchInt(void);

void Test_SlowMode(void);
void Test_StopMode(void);
void Test_IdleMode(void);
void Test_Idle(void);
void Test_DIdleMode(void);

/********************************************************************************/
/* Function : void PowerDown_Test(void)						*/
/* Description : Power-down mode test main routine				*/
/********************************************************************************/

void Test_StopMode(void)
{
    char saveSyscon;

    Uart_Printf("[STOP Mode Test]\n");
    Uart_Printf("Check the current cunsumption.\n");
    Uart_Printf("Push the buttons to exit STOP mode.\n");
    Uart_Printf("After 10 seconds, KS17C40100 will wake up by RTC alarm interrupt\n");

    Rtc_Init();
    rRTCCON = 0x01;    // R/W enable, 1/32768, Normal(merge), No reset


    rALMYEAR=TESTYEAR2 ;
    rALMMON =TESTMONTH2;
    rALMDAY =TESTDAY2  ;
    rALMHOUR=TESTHOUR2 ;
    rALMMIN =TESTMIN2  ;
    rALMSEC =TESTSEC2+9;
 
    rRTCALM=0x7f;

    rEINTCON=0x1;
    rEINTMOD=0x0;
    pISR_EINT0=(U32)Eint0Int;
    pISR_RTCA=(U32)AlarmInt;

    saveSyscon=rSYSCON;
    rSYSCON|=BIT_GLOBAL;
    rINTMSK=(BIT_EINT0|BIT_RTCA);

    //Port_Stop();

    EnterPWDN(0x59);

    Delay(1);  //wait until KS17C40100 enters STOP mode.

    //
    // wait EINT[7:0] or alarm interrupt
    //

    //Port_Init();
    rSYSCON=saveSyscon;

    Uart_Printf("Return to Normal Mode.\n");
}

void Test_IdleMode(void)
{
    int saveSYSCON;

    saveSYSCON=rSYSCON;

    Uart_Printf("[IDLE Mode Test]\n");
    Uart_Printf("Check the current cunsumption. Push the buttons to exit IDLE mode.\n");
    Uart_Printf("After 10 seconds, KS17C40100 will wake up by RTC alarm interrupt.\n");
    Uart_Printf("KS17C40100 will also wake up by EINT0.\n");
    Uart_TxEmpty();	//Wait until UART1 Tx buffer empty.


    Rtc_Init();
    rRTCCON = 0x01;    // R/W enable, 1/32768, Normal(merge), No reset

    rALMYEAR=TESTYEAR2 ;
    rALMMON =TESTMONTH2;
    rALMDAY =TESTDAY2  ;
    rALMHOUR=TESTHOUR2 ;
    rALMMIN =TESTMIN2  ;
    rALMSEC =TESTSEC2+9;

    rRTCALM=0x7f;

    rEINTCON=0x1;
    rEINTMOD=0x0;

    pISR_EINT0=(U32)Eint0Int;
    pISR_RTCA=(U32)AlarmInt;
    rSYSCON|=BIT_GLOBAL;
    rINTMSK=(BIT_EINT0|BIT_RTCA);

    rSYSCON|=BIT_IDLE;

    Delay(1);  //wait until KS17C40100 enters IDLE mode.

    //
    // wait EINT[7:0] interrupt or alarm wake-up
    //

    Uart_Printf("Return to Normal Mode.\n");
    rSYSCON=saveSYSCON;
}

void __irq Eint0Int(void)
{
    rINTPND&=~(BIT_EINT0);
    Uart_Printf("EINT0 ISR is occurred for wake-up from IDLE or STOP mode.\n");
}


void __irq AlarmInt(void)
{
    rINTPND&=~(BIT_RTCA);
    Uart_Printf("ALARM ISR is occurred for wake-up from IDLE or STOP mode.\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -