#include chip.h
#include gpio_11xx_2.h
#include iocon_11xx.h
#include core_cm0.h
#include core_cmInstr.h
#include cmsis_11cxx.h
#include "board.h"
#define GPIO_PININT_1111 /* GPIO pin number mapped to PININT */
#define GPIO_PININT_PORT_00 /* GPIO port number mapped to PININT */
#define IOCON_PIN_ID_1IOCON_PIO0_11 /* IOCON pin identifier */
#define GPIO_PININT_00 /* GPIO pin number mapped to PININT */
#define GPIO_PININT_PORT_11 /* GPIO port number mapped to PININT */
#define IOCON_PIN_ID_2IOCON_PIO1_0 /* IOCON pin identifier */
#define PININT_IRQ_HANDLER_1PIOINT0_IRQHandler /* GPIO interrupt IRQ function name */
#define PININT_NVIC_NAME_1EINT0_IRQn /* GPIO interrupt NVIC interrupt name */
#define PININT_IRQ_HANDLER_2PIOINT1_IRQHandler /* GPIO interrupt IRQ function name */
#define PININT_NVIC_NAME_2EINT1_IRQn /* GPIO interrupt NVIC interrupt name */
#define LPC_GPIO_0 ((LPC_GPIO_T*) LPC_GPIO_PORT0_BASE)
#define LPC_GPIO_1 ((LPC_GPIO_T*) LPC_GPIO_PORT1_BASE)
/*****************************************************************************
* Private variables
****************************************************************************/
static volatile uint32_t ticks = 0;
static volatile uint32_t cpt_1 = 0;
static volatile uint32_t cpt_2 = 0;
/*****************************************************************************
* Private functions
****************************************************************************/
/*****************************************************************************
* Public functions
****************************************************************************/
void SysTick_Handler(void)
{
ticks++;
}
void PININT_IRQ_HANDLER_1(void)
{
if(ticks >= 1)
{
cpt_1 = cpt_1+1;
}
/* Clear interrupt */
Chip_GPIO_ClearInts(LPC_GPIO_0, GPIO_PININT_PORT_0, (1 << GPIO_PININT_11));
ticks = 0;
}
void PININT_IRQ_HANDLER_2(void)
{
if(ticks >= 1)
{
cpt_2 = cpt_2+1;
}
/* Clear interrupt */
Chip_GPIO_ClearInts(LPC_GPIO_1, GPIO_PININT_PORT_1, (1 << GPIO_PININT_0));
ticks = 0;
}
int main(void)
{
/* Generic Initialization*/
SystemCoreClockUpdate();
/* Board_Init calls Chip_GPIO_Init and enables GPIO clock if needed,
Chip_GPIO_Init is not called again */
Board_Init();
Chip_GPIO_Init(LPC_GPIO_0);
Chip_GPIO_Init(LPC_GPIO_1);
/* Enable and setup SysTick Timer at a 100Hz rate */
SysTick_Config(SystemCoreClock / 100);
/* Configure GPIO pin as input pin */
Chip_GPIO_SetPinDIRInput(LPC_GPIO_0, GPIO_PININT_PORT_0, GPIO_PININT_11);
Chip_GPIO_SetPinDIRInput(LPC_GPIO_1, GPIO_PININT_PORT_1, GPIO_PININT_0);
/* Configure pin as GPIO with pullup */
Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIN_ID_1,
(IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN));
Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIN_ID_2,
(IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN));
/* Configure channel interrupt as edge sensitive and rising edge interrupt */
Chip_GPIO_SetPinModeEdge(LPC_GPIO_0, GPIO_PININT_PORT_0, (1 << GPIO_PININT_11));
Chip_GPIO_SetEdgeModeSingle(LPC_GPIO_0, GPIO_PININT_PORT_0, (1 << GPIO_PININT_11));
Chip_GPIO_SetModeHigh(LPC_GPIO_0, GPIO_PININT_PORT_0, (1 << GPIO_PININT_11));
Chip_GPIO_SetPinModeEdge(LPC_GPIO_1, GPIO_PININT_PORT_1, (1 << GPIO_PININT_0));
Chip_GPIO_SetEdgeModeSingle(LPC_GPIO_1, GPIO_PININT_PORT_1, (1 << GPIO_PININT_0));
Chip_GPIO_SetModeHigh(LPC_GPIO_1, GPIO_PININT_PORT_1, (1 << GPIO_PININT_0));
/* Enable GPIO pin interrupt */
Chip_GPIO_EnableInt(LPC_GPIO_0, GPIO_PININT_PORT_0, (1 << GPIO_PININT_11));
Chip_GPIO_EnableInt(LPC_GPIO_1, GPIO_PININT_PORT_1, (1 << GPIO_PININT_0));
/* Enable interrupt in the NVIC*/
NVIC_EnableIRQ(PININT_NVIC_NAME_1);
NVIC_EnableIRQ(PININT_NVIC_NAME_2);
NVIC_SetPriority(PININT_NVIC_NAME_1, 1);
NVIC_SetPriority(PININT_NVIC_NAME_2, 2);
while (1)
{
__WFI();
}
return 0;
}
|