1 //***************************************************************************** 2 // 3 // hibernate.h - API definition for the Hibernation module. 4 // 5 // Copyright (c) 2007-2011 Texas Instruments Incorporated. All rights reserved. 6 // Software License Agreement 7 // 8 // Texas Instruments (TI) is supplying this software for use solely and 9 // exclusively on TI's microcontroller products. The software is owned by 10 // TI and/or its suppliers, and is protected under applicable copyright 11 // laws. You may not combine this software with "viral" open-source 12 // software in order to form a larger program. 13 // 14 // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS. 15 // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT 16 // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 17 // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY 18 // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL 19 // DAMAGES, FOR ANY REASON WHATSOEVER. 20 // 21 // This is part of revision 8264 of the Stellaris Peripheral Driver Library. 22 // 23 //***************************************************************************** 24 25 #ifndef __HIBERNATE_H__ 26 #define __HIBERNATE_H__ 27 28 //***************************************************************************** 29 // 30 // If building with a C++ compiler, make all of the definitions in this header 31 // have a C binding. 32 // 33 //***************************************************************************** 34 #ifdef __cplusplus 35 extern "C" 36 { 37 #endif 38 39 //***************************************************************************** 40 // 41 // Macros needed for selecting the clock source for HibernateClockSelect() 42 // 43 //***************************************************************************** 44 #define HIBERNATE_CLOCK_SEL_RAW 0x00000004 45 #define HIBERNATE_CLOCK_SEL_DIV128 0x00000000 46 47 //***************************************************************************** 48 // 49 // Macros need to configure wake events for HibernateWakeSet() 50 // 51 //***************************************************************************** 52 #define HIBERNATE_WAKE_PIN 0x00000010 53 #define HIBERNATE_WAKE_RTC 0x00000008 54 #define HIBERNATE_WAKE_LOW_BAT 0x00000200 55 56 //***************************************************************************** 57 // 58 // Macros needed to configure low battery detect for HibernateLowBatSet() 59 // 60 //***************************************************************************** 61 #define HIBERNATE_LOW_BAT_DETECT 0x00000020 62 #define HIBERNATE_LOW_BAT_ABORT 0x000000A0 63 #define HIBERNATE_LOW_BAT_1_9V 0x00000000 64 #define HIBERNATE_LOW_BAT_2_1V 0x00002000 65 #define HIBERNATE_LOW_BAT_2_3V 0x00004000 66 #define HIBERNATE_LOW_BAT_2_5V 0x00006000 67 68 //***************************************************************************** 69 // 70 // Macros defining interrupt source bits for the interrupt functions. 71 // 72 //***************************************************************************** 73 #define HIBERNATE_INT_WR_COMPLETE 0x00000010 74 #define HIBERNATE_INT_PIN_WAKE 0x00000008 75 #define HIBERNATE_INT_LOW_BAT 0x00000004 76 #define HIBERNATE_INT_RTC_MATCH_0 0x00000001 77 #define HIBERNATE_INT_RTC_MATCH_1 0x00000002 78 79 //***************************************************************************** 80 // 81 // Macros defining oscillator configuration options for the 82 // HibernateClockConfig() function. 83 // 84 //***************************************************************************** 85 #define HIBERNATE_OSC_LOWDRIVE 0x00040000 86 #define HIBERNATE_OSC_HIGHDRIVE 0x00060000 87 #define HIBERNATE_OSC_DISABLE 0x00010000 88 89 //***************************************************************************** 90 // 91 // API Function prototypes 92 // 93 //***************************************************************************** 94 extern void HibernateEnableExpClk(unsigned long ulHibClk); 95 extern void HibernateDisable(void); 96 extern void HibernateClockSelect(unsigned long ulClockInput); 97 extern void HibernateRTCEnable(void); 98 extern void HibernateRTCDisable(void); 99 extern void HibernateWakeSet(unsigned long ulWakeFlags); 100 extern unsigned long HibernateWakeGet(void); 101 extern void HibernateLowBatSet(unsigned long ulLowBatFlags); 102 extern unsigned long HibernateLowBatGet(void); 103 extern void HibernateRTCSet(unsigned long ulRTCValue); 104 extern unsigned long HibernateRTCGet(void); 105 extern void HibernateRTCMatch0Set(unsigned long ulMatch); 106 extern unsigned long HibernateRTCMatch0Get(void); 107 extern void HibernateRTCMatch1Set(unsigned long ulMatch); 108 extern unsigned long HibernateRTCMatch1Get(void); 109 extern void HibernateRTCTrimSet(unsigned long ulTrim); 110 extern unsigned long HibernateRTCTrimGet(void); 111 extern void HibernateDataSet(unsigned long *pulData, unsigned long ulCount); 112 extern void HibernateDataGet(unsigned long *pulData, unsigned long ulCount); 113 extern void HibernateRequest(void); 114 extern void HibernateIntEnable(unsigned long ulIntFlags); 115 extern void HibernateIntDisable(unsigned long ulIntFlags); 116 extern void HibernateIntRegister(void (*pfnHandler)(void)); 117 extern void HibernateIntUnregister(void); 118 extern unsigned long HibernateIntStatus(tBoolean bMasked); 119 extern void HibernateIntClear(unsigned long ulIntFlags); 120 extern unsigned long HibernateIsActive(void); 121 extern void HibernateRTCSSMatch0Set(unsigned long ulMatch); 122 extern unsigned long HibernateRTCSSMatch0Get(void); 123 extern unsigned long HibernateRTCSSGet(void); 124 extern void HibernateClockConfig(unsigned long ulConfig); 125 extern void HibernateBatCheckStart(void); 126 extern unsigned long HibernateBatCheckDone(void); 127 128 //***************************************************************************** 129 // 130 // Several Hibernate module APIs have been renamed, with the original function 131 // name being deprecated. These defines provide backward compatibility. 132 // 133 //***************************************************************************** 134 #ifndef DEPRECATED 135 #include "driverlib/sysctl.h" 136 #define HibernateEnable(a) \ 137 HibernateEnableExpClk(a, SysCtlClockGet()) 138 #endif 139 140 //***************************************************************************** 141 // 142 // Mark the end of the C bindings section for C++ compilers. 143 // 144 //***************************************************************************** 145 #ifdef __cplusplus 146 } 147 #endif 148 149 #endif // __HIBERNATE_H__ 150