The code is not doing what i want.
I am trying to let it hibernate 1 hour and after 1 hour, the led will light up 15s.The cycle should continue on. Is there something wrong with my code?
#include <stdint.h>
#include <stdbool.h>
#include "utils/ustdlib.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/pin_map.h"
#include "driverlib/debug.h"
#include "driverlib/hibernate.h"
#include "driverlib/gpio.h"
void HibernateHandler(void) {
uint32_t ui32Status;
// // Get the interrupt status, and clear any pending interrupts. //
ui32Status = HibernateIntStatus(1);
HibernateIntClear(ui32Status);
// // Process the RTC match 0 interrupt. //
if(ui32Status & HIBERNATE_INT_RTC_MATCH_0) {
GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_2, GPIO_PIN_2);
}
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x04);
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
HibernateEnableExpClk(SysCtlClockGet());
HibernateGPIORetentionEnable();
HibernateRTCSet(0);
HibernateRTCEnable();
HibernateRTCMatchSet(0,HibernateRTCGet()+ 60);
HibernateWakeSet(HIBERNATE_WAKE_PIN | HIBERNATE_WAKE_RTC);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2, 0x00);
HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0);
HibernateIntClear(HIBERNATE_INT_PIN_WAKE | HIBERNATE_INT_LOW_BAT | HIBERNATE_INT_RTC_MATCH_0);
HibernateIntRegister(HibernateHandler);
HibernateRequest();
while(1)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2, 0x00);
}
}
The code is not doing what i want.
I am trying to let it hibernate 1 hour and after 1 hour, the led will light up 15s.The cycle should continue on. Is there something wrong with my code?
#include <stdint.h>
#include <stdbool.h>
#include "utils/ustdlib.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/pin_map.h"
#include "driverlib/debug.h"
#include "driverlib/hibernate.h"
#include "driverlib/gpio.h"
void HibernateHandler(void) {
uint32_t ui32Status;
// // Get the interrupt status, and clear any pending interrupts. //
ui32Status = HibernateIntStatus(1);
HibernateIntClear(ui32Status);
// // Process the RTC match 0 interrupt. //
if(ui32Status & HIBERNATE_INT_RTC_MATCH_0) {
GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_2, GPIO_PIN_2);
}
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x04);
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
HibernateEnableExpClk(SysCtlClockGet());
HibernateGPIORetentionEnable();
HibernateRTCSet(0);
HibernateRTCEnable();
HibernateRTCMatchSet(0,HibernateRTCGet()+ 60);
HibernateWakeSet(HIBERNATE_WAKE_PIN | HIBERNATE_WAKE_RTC);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2, 0x00);
HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0);
HibernateIntClear(HIBERNATE_INT_PIN_WAKE | HIBERNATE_INT_LOW_BAT | HIBERNATE_INT_RTC_MATCH_0);
HibernateIntRegister(HibernateHandler);
HibernateRequest();
while(1)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2, 0x00);
}
}