MKM34Z256VLx7 Bare Metal Software Drivers  R4.1.6
Reference Manual
LLWU Pin Falling Edge Wakeup

This example shows typical use of the Low-Leakage Wakeup Unit (LLWU) to exit selected VLLSx mode via reset condition. The software example allows selection of the STOP, VLPS, VLLS3, VLLS2, VLLS1 or VLLS0 mode for device wakeup.

Source code:
/******************************************************************************
* (c) Copyright 2010-2015, Freescale Semiconductor Inc.
* ALL RIGHTS RESERVED.
******************************************************************************
* llwu_test.c
******************************************************************************/
#include "drivers.h"
/* Button definitions */
#define BTN_VLPS_WKUP PIN1 /* PTD1; SW2 on TWR-KM34Z75M */
#define LED PIN3 /* PTJ3; LED1 on TWR-KM34Z75M */
#define BTN_LLWU_WKUP PIN4 /* PTA4; SW3; on TWR-KM34Z75M */
/* Callback function declaration */
static void port_callback (PORT_CALLBACK_SRC src, uint8 pin);
/******************************************************************************/
void main (void)
{
0);
PORT_Init (PORTA, PORT_MODULE_BUTTON_MODE, BTN_LLWU_WKUP);
GPIO_Init (GPIOA, GPIO_INP_MODE, BTN_LLWU_WKUP);
PORT_Init (PORTD, PORT_MODULE_BUTTON_IRQ_MODE, BTN_VLPS_WKUP);
GPIO_Init (GPIOD, GPIO_INP_MODE, BTN_VLPS_WKUP);
if (PMC_GetACKISO()) { PMC_SetACKISO (); } /* release I/O states */
/* install PORTx interrupt */
PORT_InstallCallback (PRI_LVL3, port_callback);
/* toggle LED to notify reset condition */
GPIO_Clr (GPIOJ, LED);
arch_delay (5000000l);
GPIO_Set (GPIOJ, LED);
arch_delay (5000000l);
/* main programme loop */
while (1)
{
// SMC_SetMode(STOP); /* IDD+IDDA+IBAT= 415uA, IBAT=0.9uA */
// SMC_SetMode(VLPS_PSTOP1); /* IDD+IDDA+IBAT= 6.3uA, IBAT=0.9uA */
// SMC_SetMode(VLPS_PSTOP2); /* IDD+IDDA+IBAT= 6.3uA, IBAT=0.9uA */
// SMC_SetMode(VLPS); /* IDD+IDDA+IBAT= 6.4uA, IBAT=0.9uA */
// SMC_SetMode(VLLS3); /* IDD+IDDA+IBAT= 3.8uA, IBAT=0.9uA */
SMC_SetMode(VLLS2); /* IDD+IDDA+IBAT= 3.7uA, IBAT=0.9uA */
// SMC_SetMode(VLLS1); /* IDD+IDDA+IBAT= 2.5uA, IBAT=0.9uA */
// SMC_SetMode(VLLS0_POR_ON ); /* IDD+IDDA+IBAT= 1.9uA, IBAT=0.9uA */
// SMC_SetMode(VLLS0_POR_OFF); /* IDD+IDDA+IBAT= 1.6uA, IBAT=0.9uA */
}
}
/* callback functions */
void port_callback (PORT_CALLBACK_SRC src, uint8 pin)
{
if (src == PORTD_CALLBACK)
{
if (pin == BTN_VLPS_WKUP)
{
GPIO_Clr (GPIOJ, LED);
arch_delay (1000000l);
GPIO_Set (GPIOJ, LED);
}
}
}
Appconfig.h:
/******************************************************************************
* (c) Copyright 2010, Freescale Semiconductor Inc.
* ALL RIGHTS RESERVED.
***************************************************************************/
#ifndef __APPCONFIG_H
#define __APPCONFIG_H
/***************************************************************************/
//#define MTB_RAM_RESERVE
/***************************************************************************/
#define BOOT_NMI_DISABLE
/***************************************************************************/
/******************************************************************************/
#endif /* __APPCONFIG_ */
Toolchain support:
IAR EWARM 7.40.7KEIL uVision 5.15CrossWorks 3.6ATOLLIC TrueStudio 5.3.0Kinetis Design Studio 3.0.0