Deep Sleep RTC просыпается LPC17xx - PullRequest
0 голосов
/ 06 ноября 2018

Я хочу перевести мой LPC1769 в режим глубокого сна и дать ему проснуться с прерыванием RTC. LPC должен просыпаться каждую минуту, чтобы прочитать датчик. Сначала я хочу проверить его с мигающей лампочкой на выводе test_pin, как показано в приведенном ниже коде. Но проблема в том, что светодиод не мигает. Прерывание RTC работает, потому что я проверил его без режима глубокого сна, и он работал нормально.

Итак, мой вопрос, может ли кто-нибудь помочь мне перевести мой LPC1769 в режим глубокого сна и разбудить его с прерыванием RTC.

Это код, который у меня есть:

int main(){
    RTC_init();
    RTC_start();
    deepSleepOn();
    while(1);
}
void RTC_init(){
    PCONP |= (1 << RTC_POWER);
    CCR = 0;
    AMR = 0;
    CIIR = 0;
    ILR |= 0x01;    //reset interrupt
}
void RTC_start(){
    CIIR |= 0x02;   //an increment of the minute value generatues an interrupt
    CCR |= 0x01;    //time counter enabled
    ISER0 |= (1 << RTC_INTERRUPT);
}
void deepSleepOn(){
    SCR |= (1 << SLEEPBIT);
    PCON &= ~((1 << PM1) | (1 << PM0));
    asm("wfi");
}
void RTC_IRQHandler(void){
    ILR |= 0x01;    //reset interrupt
    GPIO_toggle(test_port, test_pin);
    deepSleepOn();
}
...