pcm.h
Go to the documentation of this file.
1 #ifndef __PCM_H__
2 #define __PCM_H__
3 
4 //*****************************************************************************
5 //
8 //
9 //*****************************************************************************
10 
11 //*****************************************************************************
12 //
13 // If building with a C++ compiler, make all of the definitions in this header
14 // have a C binding.
15 //
16 //*****************************************************************************
17 #ifdef __cplusplus
18 extern "C"
19 {
20 #endif
21 
22 #include <stdint.h>
23 #include <stdbool.h>
24 #include <msp.h>
25 
26 //*****************************************************************************
27 //
28 // Control specific variables
29 //
30 //*****************************************************************************
31 #define PCM_KEY 0x695A0000
32 
33 /* Power Modes */
34 #define PCM_AM_LDO_VCORE0 0x00
35 #define PCM_AM_LDO_VCORE1 0x01
36 #define PCM_AM_DCDC_VCORE0 0x04
37 #define PCM_AM_DCDC_VCORE1 0x05
38 #define PCM_AM_LF_VCORE0 0x08
39 #define PCM_AM_LF_VCORE1 0x09
40 #define PCM_LPM0_LDO_VCORE0 0x10
41 #define PCM_LPM0_LDO_VCORE1 0x11
42 #define PCM_LPM0_DCDC_VCORE0 0x14
43 #define PCM_LPM0_DCDC_VCORE1 0x15
44 #define PCM_LPM0_LF_VCORE0 0x18
45 #define PCM_LPM0_LF_VCORE1 0x19
46 #define PCM_LPM3 0x20
47 #define PCM_LPM4 0x21
48 #define PCM_LPM35_VCORE0 0xC0
49 #define PCM_LPM45 0xA0
50 
51 #define PCM_VCORE0 0x00
52 #define PCM_VCORE1 0x01
53 #define PCM_VCORELPM3 0x02
54 
55 #define PCM_LDO_MODE 0x00
56 #define PCM_DCDC_MODE 0x01
57 #define PCM_LF_MODE 0x02
58 
59 #define PCM_SHUTDOWN_PARTIAL PCM_LPM35_VCORE0
60 #define PCM_SHUTDOWN_COMPLETE PCM_LPM45
61 
62 #define PCM_DCDCERROR PCM_IE_DCDC_ERROR_IE
63 #define PCM_AM_INVALIDTRANSITION PCM_IE_AM_INVALID_TR_IE
64 #define PCM_SM_INVALIDCLOCK PCM_IE_LPM_INVALID_CLK_IE
65 #define PCM_SM_INVALIDTRANSITION PCM_IE_LPM_INVALID_TR_IE
66 
67 //*****************************************************************************
68 //
69 // Prototypes for the APIs.
70 //
71 //*****************************************************************************
72 
73 //******************************************************************************
74 //
90 //
91 //******************************************************************************
92 extern bool PCM_setCoreVoltageLevel(uint_fast8_t voltageLevel);
93 
94 //******************************************************************************
95 //
106 //
107 //******************************************************************************
108 extern uint8_t PCM_getCoreVoltageLevel(void);
109 
110 //******************************************************************************
111 //
135 //
136 //******************************************************************************
137 extern bool PCM_setCoreVoltageLevelWithTimeout(uint_fast8_t voltageLevel,
138  uint32_t timeOut);
139 
140 //******************************************************************************
141 //
145 // and it is up to the user to ensure proper state transitions happen
159 //
160 //******************************************************************************
161 extern bool PCM_setCoreVoltageLevelNonBlocking(uint_fast8_t voltageLevel);
162 
163 //******************************************************************************
164 //
177 //
178 //******************************************************************************
179 extern bool PCM_setPowerMode(uint_fast8_t powerMode);
180 
181 //******************************************************************************
182 //
203 //
204 //******************************************************************************
205 extern bool PCM_setPowerModeWithTimeout(uint_fast8_t powerMode,
206  uint32_t timeOut);
207 
208 //******************************************************************************
209 //
213 // and it is up to the user to ensure proper state transitions happen
228 //
229 //******************************************************************************
230 extern bool PCM_setPowerModeNonBlocking(uint_fast8_t powerMode);
231 
232 //******************************************************************************
233 //
239 //
240 //******************************************************************************
241 extern uint8_t PCM_getPowerMode(void);
242 
243 //******************************************************************************
244 //
270 //
271 //******************************************************************************
272 extern bool PCM_setPowerState(uint_fast8_t powerState);
273 
274 //******************************************************************************
275 //
312 //
313 //******************************************************************************
314 extern bool PCM_setPowerStateWithTimeout(uint_fast8_t powerState,
315  uint32_t timeout);
316 
317 //******************************************************************************
318 //
325 //
326 //******************************************************************************
327 extern uint8_t PCM_getPowerState(void);
328 
329 //******************************************************************************
330 //
334 // and it is up to the user to ensure proper state transitions happen
361 //
362 //******************************************************************************
363 extern bool PCM_setPowerStateNonBlocking(uint_fast8_t powerState);
364 
365 //******************************************************************************
366 //
387 //
388 //******************************************************************************
389 extern bool PCM_shutdownDevice(uint32_t shutdownMode);
390 
391 //******************************************************************************
392 //
398 //
399 //******************************************************************************
400 extern bool PCM_gotoLPM0(void);
401 
402 //******************************************************************************
403 //
412 //
413 //******************************************************************************
414 extern bool PCM_gotoLPM3(void);
415 
416 //******************************************************************************
417 //
428 //
429 //******************************************************************************
430 extern bool PCM_gotoLPM0InterruptSafe(void);
431 
432 //******************************************************************************
433 //
447 //
448 //******************************************************************************
449 extern bool PCM_gotoLPM3InterruptSafe(void);
450 
451 //******************************************************************************
452 //
458 //
459 //******************************************************************************
460 extern bool PCM_gotoLPM4(void);
461 
462 //******************************************************************************
463 //
477 //
478 //******************************************************************************
479 extern bool PCM_gotoLPM4InterruptSafe(void);
480 
481 //******************************************************************************
482 //
489 //
490 //******************************************************************************
491 extern void PCM_enableRudeMode(void);
492 
493 //******************************************************************************
494 //
500 //
501 //******************************************************************************
502 extern void PCM_disableRudeMode(void);
503 
504 //*****************************************************************************
505 //
524 //
525 //*****************************************************************************
526 extern void PCM_enableInterrupt(uint32_t flags);
527 
528 //*****************************************************************************
529 //
548 //
549 //*****************************************************************************
550 extern void PCM_disableInterrupt(uint32_t flags);
551 
552 //*****************************************************************************
553 //
565 //
566 //*****************************************************************************
567 extern uint32_t PCM_getInterruptStatus(void);
568 
569 //*****************************************************************************
570 //
585 //
586 //*****************************************************************************
587 extern uint32_t PCM_getEnabledInterruptStatus(void);
588 
589 //*****************************************************************************
590 //
618 //
619 //*****************************************************************************
620 extern void PCM_clearInterruptFlag(uint32_t flags);
621 
622 //*****************************************************************************
623 //
639 //
640 //*****************************************************************************
641 extern void PCM_registerInterrupt(void (*intHandler)(void));
642 
643 //*****************************************************************************
644 //
655 //
656 //*****************************************************************************
657 extern void PCM_unregisterInterrupt(void);
658 
659 //*****************************************************************************
660 //
661 // Mark the end of the C bindings section for C++ compilers.
662 //
663 //*****************************************************************************
664 #ifdef __cplusplus
665 }
666 #endif
667 
668 //*****************************************************************************
669 //
670 // Close the Doxygen group.
672 //
673 //*****************************************************************************
674 
675 #endif // __PCM_H__
bool PCM_gotoLPM0(void)
Definition: pcm.c:422
void PCM_registerInterrupt(void(*intHandler)(void))
Definition: pcm.c:549
bool PCM_setPowerModeNonBlocking(uint_fast8_t powerMode)
Definition: pcm.c:256
bool PCM_setCoreVoltageLevelWithTimeout(uint_fast8_t voltageLevel, uint32_t timeOut)
Definition: pcm.c:89
bool PCM_shutdownDevice(uint32_t shutdownMode)
Definition: pcm.c:369
void PCM_disableInterrupt(uint32_t flags)
Definition: pcm.c:529
bool PCM_gotoLPM3(void)
Definition: pcm.c:454
bool PCM_setPowerStateNonBlocking(uint_fast8_t powerState)
Definition: pcm.c:364
bool PCM_setPowerState(uint_fast8_t powerState)
Definition: pcm.c:354
uint8_t PCM_getPowerMode(void)
Definition: pcm.c:100
bool PCM_gotoLPM0InterruptSafe(void)
Definition: pcm.c:435
bool PCM_setPowerStateWithTimeout(uint_fast8_t powerState, uint32_t timeout)
Definition: pcm.c:359
uint32_t PCM_getEnabledInterruptStatus(void)
Definition: pcm.c:539
void PCM_unregisterInterrupt(void)
Definition: pcm.c:562
bool PCM_setCoreVoltageLevelNonBlocking(uint_fast8_t voltageLevel)
Definition: pcm.c:95
bool PCM_gotoLPM3InterruptSafe(void)
Definition: pcm.c:487
bool PCM_gotoLPM4(void)
Definition: pcm.c:393
uint32_t PCM_getInterruptStatus(void)
Definition: pcm.c:534
bool PCM_gotoLPM4InterruptSafe(void)
Definition: pcm.c:403
void PCM_disableRudeMode(void)
Definition: pcm.c:518
uint8_t PCM_getCoreVoltageLevel(void)
Definition: pcm.c:130
bool PCM_setPowerModeWithTimeout(uint_fast8_t powerMode, uint32_t timeOut)
Definition: pcm.c:261
void PCM_enableRudeMode(void)
Definition: pcm.c:511
bool PCM_setPowerMode(uint_fast8_t powerMode)
Definition: pcm.c:251
uint8_t PCM_getPowerState(void)
Definition: pcm.c:506
bool PCM_setCoreVoltageLevel(uint_fast8_t voltageLevel)
Definition: pcm.c:84
void PCM_clearInterruptFlag(uint32_t flags)
Definition: pcm.c:544
void PCM_enableInterrupt(uint32_t flags)
Definition: pcm.c:524

Copyright 2016, Texas Instruments Incorporated