#include <stdio.h>
#include "OB90A64M1.h"
#include "gpio.h"
#include "uart.h"

#define SBR_ADDR     0xE000ED10

void Dealay(uint32_t delay)
{
    while(delay--);
}

int main(void)
{
   volatile uint32_t  *pAddr;

    SystemCoreClockUpdate();
    GPIO_SetPinMFType(OB_GPIO2, GPIO_PIN0, GPIO_MF_UART1_RX);
    GPIO_SetPinMFType(OB_GPIO2, GPIO_PIN1, GPIO_MF_UART1_TX);
    UART_Open(OB_UART1, 19200);
 
    printf(" P1.5(Falling/Rising edge) to wake up cpu \n\r");

    GPIO_SetPinMFType(OB_GPIO1, GPIO_PIN5, GPIO_MF_TYPE_GPIO);
    GPIO_SetPinMode( OB_GPIO1, GPIO_PIN5, GPIO_PINMODE_PULL_UP);
    
    // P1.5(Falling/Rising edge) to wake up cpu
    GPIO_EnableINT(OB_GPIO1, GPIO_PIN5, GPIO_TADC_BOTH_EDGE); 
    NVIC_EnableIRQ(GPIO0_IRQn);

    //--------sleep mode ---------------------
    pAddr = (uint32_t *) SBR_ADDR;
    *pAddr = *pAddr | 0x04;
    __wfi();  //sleep
    WaitingCPUReady();
    printf(" Wake up success \n\r");

    while(1);
}
