| 
/*
===============================================================================
 Name        : PulseCount.c
 Author      : $(author)
 Version     :
 Copyright   : $(copyright)
 Description : main definition
===============================================================================
*/
#if defined (__USE_LPCOPEN)
#if defined(NO_BOARD_LIB)
#include "chip.h"
#else
#include "board.h"
#endif
#endif
#include <cr_section_macros.h>
// TODO: insert other include files here
// TODO: insert other definitions and declarations here
uint32_t timerFreq;
uint32_t timer2count;
bool flag;
//function to initialize LED2
void LED2_init()
{
Chip_GPIO_Init(LPC_GPIO);
Chip_GPIO_SetPinDIR(LPC_GPIO,0,22,true);
Chip_GPIO_WritePortBit(LPC_GPIO,0,22,false);
}
//toggle change of LED2 status
void LED2_Toggle()
{
if (Chip_GPIO_GetPinState(LPC_GPIO,0,22)==1)
{
Chip_GPIO_WritePortBit(LPC_GPIO,0,22,false);
}
else
{
Chip_GPIO_WritePortBit(LPC_GPIO,0,22,true);
}
}
//initialise input pin to cap2.0
void timer2_Pin_init()
{
        
Chip_IOCON_Init(LPC_IOCON);
Chip_IOCON_PinMux(LPC_IOCON, 0, 4 ,IOCON_MODE_INACT, IOCON_FUNC3);
}
//Timer 1 interrupt
void TIMER1_IRQHandler(void)
{
if (Chip_TIMER_MatchPending(LPC_TIMER1, 1)) {
Chip_TIMER_ClearMatch(LPC_TIMER1, 1);
                //toggle LED2
LED2_Toggle();
//assign counts to timer count
timer2count = Chip_TIMER_ReadCount(LPC_TIMER2);
flag=true;
}
}
int main(void) {
#if defined (__USE_LPCOPEN)
#if !defined(NO_BOARD_LIB)
    // Read clock settings and update SystemCoreClock variable
    SystemCoreClockUpdate();
    // Set up and initialize all required blocks and
    // functions related to the board hardware
    Board_Init();
    // Set the LED to the state of "On"
    Board_LED_Set(0, true);
#endif
#endif
    /*Initialize LED2*/
    LED2_init();
    timer2_Pin_init();
    timer2count = 0;
    /* Enable timer 2 clock */
    Chip_TIMER_Init(LPC_TIMER2);
    /*Reset Timer2*/
    Chip_TIMER_Reset(LPC_TIMER2);
    /*Capture on rising edge timer*/
    //Chip_TIMER_CaptureRisingEdgeEnable(LPC_TIMER2,0);
    //LPC_TIMER2->CCR=1;
    /*Set clock source to Rising edge --Count control register*/
    Chip_TIMER_TIMER_SetCountClockSrc(LPC_TIMER2,TIMER_CAPSRC_RISING_CAPN ,1);
    /*Enable timer 1 clock*/
    Chip_TIMER_Init(LPC_TIMER1);
    /* Timer rate is system clock rate */
    timerFreq = Chip_Clock_GetSystemClockRate();
    Chip_TIMER_Reset(LPC_TIMER1);
    Chip_TIMER_MatchEnableInt(LPC_TIMER1, 1);
    Chip_TIMER_SetMatch(LPC_TIMER1, 1, (timerFreq/4-1));
    Chip_TIMER_ResetOnMatchEnable(LPC_TIMER1, 1);
    /*Enable Timer 1 & 2*/
    Chip_TIMER_Enable(LPC_TIMER1);
    Chip_TIMER_Enable(LPC_TIMER2);
    /* Enable timer 1 interrupt */
    NVIC_ClearPendingIRQ(TIMER1_IRQn);
    NVIC_EnableIRQ(TIMER1_IRQn);
    while(1) {
    if (flag==true)
    {
    //prints the timer2count to debug screen
                printf("%u\n",timer2count);
                //by disabling this reset line , able to get close to 200Hz(counts)
    Chip_TIMER_Reset(LPC_TIMER2);
    flag=false;
    }
    }
    return 0 ;
}
 |