52 extern volatile uint32_t llwu_inhibit_lls_sema;
53 extern volatile uint32_t llwu_inhibit_vlps_sema;
54 extern volatile uint32_t llwu_inhibit_stop_sema;
71 LLWU_WAKEUP_MODULE_LPTMR = 0,
72 LLWU_WAKEUP_MODULE_CMP0 = 1,
73 LLWU_WAKEUP_MODULE_CMP1 = 2,
74 LLWU_WAKEUP_MODULE_CMP2 = 3,
75 LLWU_WAKEUP_MODULE_TSI = 4,
76 LLWU_WAKEUP_MODULE_RTC_ALARM = 5,
77 LLWU_WAKEUP_MODULE_RESERVED = 6,
78 LLWU_WAKEUP_MODULE_RTC_SECONDS = 7,
79 LLWU_WAKEUP_MODULE_END,
86 LLWU_WAKEUP_PIN_PTE1 = 0,
87 LLWU_WAKEUP_PIN_PTE2 = 1,
88 LLWU_WAKEUP_PIN_PTE4 = 2,
89 LLWU_WAKEUP_PIN_PTA4 = 3,
90 LLWU_WAKEUP_PIN_PTA13 = 4,
91 LLWU_WAKEUP_PIN_PTB0 = 5,
92 LLWU_WAKEUP_PIN_PTC1 = 6,
93 LLWU_WAKEUP_PIN_PTC3 = 7,
94 LLWU_WAKEUP_PIN_PTC4 = 8,
95 LLWU_WAKEUP_PIN_PTC5 = 9,
96 LLWU_WAKEUP_PIN_PTC6 = 10,
97 LLWU_WAKEUP_PIN_PTC11 = 11,
98 LLWU_WAKEUP_PIN_PTD0 = 12,
99 LLWU_WAKEUP_PIN_PTD2 = 13,
100 LLWU_WAKEUP_PIN_PTD4 = 14,
101 LLWU_WAKEUP_PIN_PTD6 = 15,
105 typedef enum llwu_wakeup_edge {
106 LLWU_WAKEUP_EDGE_DISABLE = 0b00,
107 LLWU_WAKEUP_EDGE_RISING = 0b01,
108 LLWU_WAKEUP_EDGE_FALLING = 0b10,
109 LLWU_WAKEUP_EDGE_ANY = 0b11,
110 } llwu_wakeup_edge_t;
112 #define LLWU_WAKEUP_EDGE_MASK (0x03)
113 #define LLWU_WAKEUP_EDGE_WIDTH (2)
114 #define LLWU_WAKEUP_PIN_REG_SIZE (4)
116 typedef struct llwu_control {
117 struct llwu_control *next;
122 #define LLWU_CONTROL(name) static llwu_control_t name[1] = { { NULL, 1 } }
145 void llwu_set_wakeup_pin(
const llwu_wakeup_pin_t pin,
const llwu_wakeup_edge_t edge);
152 #define LLWU_INHIBIT_STOP() (exclusive_increment(&llwu_inhibit_lls_sema))
153 #define LLWU_INHIBIT_VLPS() (exclusive_increment(&llwu_inhibit_vlps_sema))
154 #define LLWU_INHIBIT_LLS() (exclusive_increment(&llwu_inhibit_lls_sema))
155 #define LLWU_UNINHIBIT_STOP() (exclusive_decrement(&llwu_inhibit_stop_sema))
156 #define LLWU_UNINHIBIT_VLPS() (exclusive_decrement(&llwu_inhibit_vlps_sema))
157 #define LLWU_UNINHIBIT_LLS() (exclusive_decrement(&llwu_inhibit_lls_sema))
enum llwu_wakeup_pin llwu_wakeup_pin_t
enum that maps physical pins to wakeup pin numbers in LLWU module
llwu_wakeup_pin
enum that maps physical pins to wakeup pin numbers in LLWU module
void llwu_sleep(void)
Sleep until some process is polled, ie interrupt occurs.
K60 hardware register header wrapper.
void llwu_set_allow(llwu_control_t *c, char allow)
Method for a controller to allow or disallow deep sleep.
Synchronization primitives for Cortex-M3/M4 processors.
enum llwu_wakeup_module llwu_wakeup_module_t
Internal modules whose interrupts are mapped to LLWU wake up sources.
void llwu_register(llwu_control_t *c)
Register as a controller for llwu.
llwu_wakeup_module
Internal modules whose interrupts are mapped to LLWU wake up sources.