Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-dev2 max32630fthr USBDevice
main.cpp
- Committer:
- MI
- Date:
- 2018-01-24
- Revision:
- 1:8834bc22c2e7
- Parent:
- 0:41ed595f83f5
- Child:
- 2:33b3b46a9c0d
File content as of revision 1:8834bc22c2e7:
#include "mbed.h"
#include "max32630fthr.h"
#include "mxc_config.h"
#include "lp.h"
#include "gpio.h"
#include "rtc.h"
#include "MAX14690.h"
DigitalOut rLED(LED1);
DigitalOut gLED(LED2);
DigitalOut bLED(LED3);
DigitalIn sw1(SW1);
// *****************************************************************************
void RTC_Setup()
{
rtc_cfg_t RTCconfig;
RTCconfig.compareCount[0] = 1;//1 second timer
RTCconfig.compareCount[1] = 10;//10 second timer
RTCconfig.prescaler = RTC_PRESCALE_DIV_2_12; //1Hz clock
RTCconfig.prescalerMask = RTC_PRESCALE_DIV_2_12;//used for prescaler compare
RTCconfig.snoozeCount = 0;
RTCconfig.snoozeMode = RTC_SNOOZE_DISABLE;
RTC_Init(&RTCconfig);
RTC_Start();
}
/******************************************************************************/
int main(void)
{
MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
//check if starting at main because of LP0 wake-up
if(LP_IsLP0WakeUp()) {
}
else {
//We did not wake up from sleep and this is first power-on
//Only configure RTC the first time around
RTC_Setup();
}
gLED = LED_ON;
rLED = LED_ON;
bLED = LED_ON;
while(1) {
//hold down switch 1 to prevent the microcontroller from going into LP0
while(sw1 == 0);
//keep LED on long enough to see it!
wait_ms(100);
gLED = LED_OFF;
rLED = LED_OFF;
bLED = LED_OFF;
//disable unused PMIC rails to minimize power consumption
pegasus.max14690.ldo2SetMode(MAX14690::LDO_DISABLED);
pegasus.max14690.ldo3SetMode(MAX14690::LDO_DISABLED);
//Clear existing wake-up config
LP_ClearWakeUpConfig();
//Clear any event flags
LP_ClearWakeUpFlags();
//configure wake-up on RTC compare 0
//LP_ConfigRTCWakeUp(enable compare 0, enable compare 1, set prescale, set rollover)
LP_ConfigRTCWakeUp(1, 0, 0, 0);
//read the current RTC timer and add 5 seconds to it
uint32_t cmp = RTC_GetCount() + 5;
//set RTC to generate an interrupt 5 seconds from current value
RTC_SetCompare(0,cmp);
//clear comparison flag in the RTC registers
RTC_ClearFlags(MXC_F_RTC_FLAGS_COMP0);
LP_EnterLP0();
//firmware will reset with no prior knowledge on wake-up
}
}

