FTM Timer Confusion

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

FTM Timer Confusion

Jump to solution
422 Views
Jana_muralidharan
Contributor II

So, I am trying to start the timer FTM0/FTM1 it, upon running of the timer code it stucks at the HardFault why but the same code with FTM2 works perfectly fine why?? 

the not working code

#include "MKE02Z4.h"

/* ================= GLOBALS ================= */
volatile uint8_t uartFlag = 0;

/* ================= PROTOTYPES ================= */
void init_clock(void);
void init_uart0(void);
void init_FTM1(void);
void UART_Send(const char *s);

/* ================= FTM1 ISR ================= */
void FTM1_IRQHandler(void)
{
    /* Clear overflow flag (write 0 while set) */
    FTM1->SC &= ~FTM_SC_TOF_MASK;

    uartFlag = 1;
}

/* ================= MAIN ================= */
int main(void)
{
    init_clock();
    init_uart0();
    init_FTM1();

    UART_Send("FTM1 Initialized\r\n");

    while (1)
    {
        if (uartFlag)
        {
            uartFlag = 0;
            UART_Send("A\r\n");
        }

        __WFI();   /* wait for interrupt */
    }
}

/* ================= CLOCK INIT ================= */
void init_clock(void)
{
    /*
     * Assume internal clock already configured by SDK startup
     * Bus clock = 32 MHz
     */
    SIM->BUSDIV = 0x01;   /* divide by 1 */
}

/* ================= UART0 INIT ================= */
void init_uart0(void)
{
    /* Enable UART0 clock */
    SIM->SCGC |= SIM_SCGC_UART0_MASK;

    /* UART0 pin select (TX/RX) */
    SIM->PINSEL |= SIM_PINSEL_UART0PS_MASK;

    /* Disable TX inversion (important!) */
    SIM->SOPT &= ~SIM_SOPT_TXDME_MASK;

    /*
     * 9600 baud @ 32 MHz
     * SBR = 32e6 / (16 * 9600) ≈ 208
     */
    UART0->BDH = 0x00;
    UART0->BDL = 53;

    UART0->C1 = 0x00;
    UART0->C2 = UART_C2_TE_MASK | UART_C2_RE_MASK;
}

/* ================= FTM1 INIT ================= */
void init_FTM1(void)
{
    /* Enable FTM1 clock */
    SIM->SCGC |= SIM_SCGC_FTM1_MASK;
    __DSB();

    /* ---- VERY IMPORTANT ORDER (KE02 SAFE) ---- */

    /* Stop counter completely */
    FTM1->SC = 0;

    /* Disable write protection (WRITE ONCE) */
    FTM1->MODE = FTM_MODE_WPDIS_MASK;

    /* Reset counter */
    FTM1->CNTIN = 0;
    FTM1->CNT   = 0;

    /*
     * 32 MHz / 128 = 250 kHz
     * 250000 ticks = 1 second
     */
    FTM1->MOD = 249999;

    /* Enable overflow interrupt, prescaler = 128 */
    FTM1->SC = FTM_SC_PS(7) | FTM_SC_TOIE_MASK;

    /* Enable NVIC */
    NVIC_EnableIRQ(FTM1_IRQn);

    /* START TIMER (LAST STEP ONLY) */
    FTM1->SC |= FTM_SC_CLKS(1);
}

/* ================= UART SEND ================= */
void UART_Send(const char *s)
{
    while (*s)
    {
        while (!(UART0->S1 & UART_S1_TDRE_MASK));
        UART0->D = *s++;
    }
}

 the working code

#include "MKE02Z4.h"

/* ================= GLOBALS ================= */
volatile uint8_t uartFlag = 0;

/* ================= PROTOTYPES ================= */
void init_clock(void);
void init_uart0(void);
void init_FTM2(void);
void UART_Send(const char *s);

/* ================= FTM2 ISR ================= */
void FTM2_IRQHandler(void)
{
    /* Clear overflow flag (write 0 while set) */
    FTM2->SC &= ~FTM_SC_TOF_MASK;

    uartFlag = 1;
}

/* ================= MAIN ================= */
int main(void)
{
    init_clock();
    init_uart0();
    init_FTM2();

    UART_Send("FTM2 Initialized\r\n");

    while (1)
    {
        if (uartFlag)
        {
            uartFlag = 0;
            UART_Send("A\r\n");
        }

        __WFI();   /* wait for interrupt */
    }
}

/* ================= CLOCK INIT ================= */
void init_clock(void)
{
    /*
     * Assume internal clock already configured by SDK startup
     * Bus clock = 32 MHz
     */
    SIM->BUSDIV = 0x01;   /* divide by 1 */
}

/* ================= UART0 INIT ================= */
void init_uart0(void)
{
    /* Enable UART0 clock */
    SIM->SCGC |= SIM_SCGC_UART0_MASK;

    /* UART0 pin select (TX/RX) */
    SIM->PINSEL |= SIM_PINSEL_UART0PS_MASK;

    /* Disable TX inversion (important!) */
    SIM->SOPT &= ~SIM_SOPT_TXDME_MASK;

    /*
     * 9600 baud @ 32 MHz
     * SBR = 32e6 / (16 * 9600) ≈ 208
     */
    UART0->BDH = 0x00;
    UART0->BDL = 53;

    UART0->C1 = 0x00;
    UART0->C2 = UART_C2_TE_MASK | UART_C2_RE_MASK;
}

/* ================= FTM2 INIT ================= */
void init_FTM2(void)
{
    /* Enable FTM2 clock */
    SIM->SCGC |= SIM_SCGC_FTM2_MASK;
    __DSB();

    /* ---- VERY IMPORTANT ORDER (KE02 SAFE) ---- */

    /* Stop counter completely */
    FTM2->SC = 0;

    /* Disable write protection (WRITE ONCE) */
    FTM2->MODE = FTM_MODE_WPDIS_MASK;

    /* Reset counter */
    FTM2->CNTIN = 0;
    FTM2->CNT   = 0;

    /*
     * 32 MHz / 128 = 250 kHz
     * 250000 ticks = 1 second
     */
    FTM2->MOD = 249999;

    /* Enable overflow interrupt, prescaler = 128 */
    FTM2->SC = FTM_SC_PS(7) | FTM_SC_TOIE_MASK;

    /* Enable NVIC */
    NVIC_EnableIRQ(FTM2_IRQn);

    /* START TIMER (LAST STEP ONLY) */
    FTM2->SC |= FTM_SC_CLKS(1);
}

/* ================= UART SEND ================= */
void UART_Send(const char *s)
{
    while (*s)
    {
        while (!(UART0->S1 & UART_S1_TDRE_MASK));
        UART0->D = *s++;
    }
}

 

0 Kudos
Reply
1 Solution
318 Views
Jana_muralidharan
Contributor II

I actually found the error

 

It is that I used registers that are specific to only FTM2,

So, after removing the unwanted registers it worked perfectly fine.

And I found out that HardFault Error will only occur when, We use register which are not there in the first place.

 

Hey and thanks for your attention to this query thanks.....

View solution in original post

0 Kudos
Reply
2 Replies
325 Views
Alice_Yang
NXP TechSupport
NXP TechSupport

Hi @Jana_muralidharan 

 

Please debug to check whether the FTM1 clock is enabled and verify if the counter register is functioning properly.
 
BR
Alice 
0 Kudos
Reply
319 Views
Jana_muralidharan
Contributor II

I actually found the error

 

It is that I used registers that are specific to only FTM2,

So, after removing the unwanted registers it worked perfectly fine.

And I found out that HardFault Error will only occur when, We use register which are not there in the first place.

 

Hey and thanks for your attention to this query thanks.....

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2269247%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFTM%20Timer%20Confusion%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2269247%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ESo%2C%20I%20am%20trying%20to%20start%20the%20timer%20FTM0%2FFTM1%20it%2C%20upon%20running%20of%20the%20timer%20code%20it%20stucks%20at%20the%20HardFault%20why%20but%20the%20same%20code%20with%20FTM2%20works%20perfectly%20fine%20why%3F%3F%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%3CU%3E%3CEM%3E%3CSTRONG%3Ethe%20not%20working%20code%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FU%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%23include%20%22MKE02Z4.h%22%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20GLOBALS%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avolatile%20uint8_t%20uartFlag%20%3D%200%3B%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20PROTOTYPES%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_clock(void)%3B%0Avoid%20init_uart0(void)%3B%0Avoid%20init_FTM1(void)%3B%0Avoid%20UART_Send(const%20char%20*s)%3B%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20FTM1%20ISR%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20FTM1_IRQHandler(void)%0A%7B%0A%20%20%20%20%2F*%20Clear%20overflow%20flag%20(write%200%20while%20set)%20*%2F%0A%20%20%20%20FTM1-%26gt%3BSC%20%26amp%3B%3D%20~FTM_SC_TOF_MASK%3B%0A%0A%20%20%20%20uartFlag%20%3D%201%3B%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20MAIN%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Aint%20main(void)%0A%7B%0A%20%20%20%20init_clock()%3B%0A%20%20%20%20init_uart0()%3B%0A%20%20%20%20init_FTM1()%3B%0A%0A%20%20%20%20UART_Send(%22FTM1%20Initialized%5Cr%5Cn%22)%3B%0A%0A%20%20%20%20while%20(1)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20(uartFlag)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20uartFlag%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20UART_Send(%22A%5Cr%5Cn%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20__WFI()%3B%20%20%20%2F*%20wait%20for%20interrupt%20*%2F%0A%20%20%20%20%7D%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20CLOCK%20INIT%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_clock(void)%0A%7B%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%20Assume%20internal%20clock%20already%20configured%20by%20SDK%20startup%0A%20%20%20%20%20*%20Bus%20clock%20%3D%2032%20MHz%0A%20%20%20%20%20*%2F%0A%20%20%20%20SIM-%26gt%3BBUSDIV%20%3D%200x01%3B%20%20%20%2F*%20divide%20by%201%20*%2F%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20UART0%20INIT%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_uart0(void)%0A%7B%0A%20%20%20%20%2F*%20Enable%20UART0%20clock%20*%2F%0A%20%20%20%20SIM-%26gt%3BSCGC%20%7C%3D%20SIM_SCGC_UART0_MASK%3B%0A%0A%20%20%20%20%2F*%20UART0%20pin%20select%20(TX%2FRX)%20*%2F%0A%20%20%20%20SIM-%26gt%3BPINSEL%20%7C%3D%20SIM_PINSEL_UART0PS_MASK%3B%0A%0A%20%20%20%20%2F*%20Disable%20TX%20inversion%20(important!)%20*%2F%0A%20%20%20%20SIM-%26gt%3BSOPT%20%26amp%3B%3D%20~SIM_SOPT_TXDME_MASK%3B%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%209600%20baud%20%40%2032%20MHz%0A%20%20%20%20%20*%20SBR%20%3D%2032e6%20%2F%20(16%20*%209600)%20%E2%89%88%20208%0A%20%20%20%20%20*%2F%0A%20%20%20%20UART0-%26gt%3BBDH%20%3D%200x00%3B%0A%20%20%20%20UART0-%26gt%3BBDL%20%3D%2053%3B%0A%0A%20%20%20%20UART0-%26gt%3BC1%20%3D%200x00%3B%0A%20%20%20%20UART0-%26gt%3BC2%20%3D%20UART_C2_TE_MASK%20%7C%20UART_C2_RE_MASK%3B%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20FTM1%20INIT%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_FTM1(void)%0A%7B%0A%20%20%20%20%2F*%20Enable%20FTM1%20clock%20*%2F%0A%20%20%20%20SIM-%26gt%3BSCGC%20%7C%3D%20SIM_SCGC_FTM1_MASK%3B%0A%20%20%20%20__DSB()%3B%0A%0A%20%20%20%20%2F*%20----%20VERY%20IMPORTANT%20ORDER%20(KE02%20SAFE)%20----%20*%2F%0A%0A%20%20%20%20%2F*%20Stop%20counter%20completely%20*%2F%0A%20%20%20%20FTM1-%26gt%3BSC%20%3D%200%3B%0A%0A%20%20%20%20%2F*%20Disable%20write%20protection%20(WRITE%20ONCE)%20*%2F%0A%20%20%20%20FTM1-%26gt%3BMODE%20%3D%20FTM_MODE_WPDIS_MASK%3B%0A%0A%20%20%20%20%2F*%20Reset%20counter%20*%2F%0A%20%20%20%20FTM1-%26gt%3BCNTIN%20%3D%200%3B%0A%20%20%20%20FTM1-%26gt%3BCNT%20%20%20%3D%200%3B%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%2032%20MHz%20%2F%20128%20%3D%20250%20kHz%0A%20%20%20%20%20*%20250000%20ticks%20%3D%201%20second%0A%20%20%20%20%20*%2F%0A%20%20%20%20FTM1-%26gt%3BMOD%20%3D%20249999%3B%0A%0A%20%20%20%20%2F*%20Enable%20overflow%20interrupt%2C%20prescaler%20%3D%20128%20*%2F%0A%20%20%20%20FTM1-%26gt%3BSC%20%3D%20FTM_SC_PS(7)%20%7C%20FTM_SC_TOIE_MASK%3B%0A%0A%20%20%20%20%2F*%20Enable%20NVIC%20*%2F%0A%20%20%20%20NVIC_EnableIRQ(FTM1_IRQn)%3B%0A%0A%20%20%20%20%2F*%20START%20TIMER%20(LAST%20STEP%20ONLY)%20*%2F%0A%20%20%20%20FTM1-%26gt%3BSC%20%7C%3D%20FTM_SC_CLKS(1)%3B%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20UART%20SEND%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20UART_Send(const%20char%20*s)%0A%7B%0A%20%20%20%20while%20(*s)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20while%20(!(UART0-%26gt%3BS1%20%26amp%3B%20UART_S1_TDRE_MASK))%3B%0A%20%20%20%20%20%20%20%20UART0-%26gt%3BD%20%3D%20*s%2B%2B%3B%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CEM%3E%3CSTRONG%3E%26nbsp%3Bthe%20working%20code%3CBR%20%2F%3E%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-cpp%22%3E%3CCODE%3E%23include%20%22MKE02Z4.h%22%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20GLOBALS%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avolatile%20uint8_t%20uartFlag%20%3D%200%3B%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20PROTOTYPES%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_clock(void)%3B%0Avoid%20init_uart0(void)%3B%0Avoid%20init_FTM2(void)%3B%0Avoid%20UART_Send(const%20char%20*s)%3B%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20FTM2%20ISR%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20FTM2_IRQHandler(void)%0A%7B%0A%20%20%20%20%2F*%20Clear%20overflow%20flag%20(write%200%20while%20set)%20*%2F%0A%20%20%20%20FTM2-%26gt%3BSC%20%26amp%3B%3D%20~FTM_SC_TOF_MASK%3B%0A%0A%20%20%20%20uartFlag%20%3D%201%3B%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20MAIN%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Aint%20main(void)%0A%7B%0A%20%20%20%20init_clock()%3B%0A%20%20%20%20init_uart0()%3B%0A%20%20%20%20init_FTM2()%3B%0A%0A%20%20%20%20UART_Send(%22FTM2%20Initialized%5Cr%5Cn%22)%3B%0A%0A%20%20%20%20while%20(1)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20(uartFlag)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20uartFlag%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20UART_Send(%22A%5Cr%5Cn%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20__WFI()%3B%20%20%20%2F*%20wait%20for%20interrupt%20*%2F%0A%20%20%20%20%7D%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20CLOCK%20INIT%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_clock(void)%0A%7B%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%20Assume%20internal%20clock%20already%20configured%20by%20SDK%20startup%0A%20%20%20%20%20*%20Bus%20clock%20%3D%2032%20MHz%0A%20%20%20%20%20*%2F%0A%20%20%20%20SIM-%26gt%3BBUSDIV%20%3D%200x01%3B%20%20%20%2F*%20divide%20by%201%20*%2F%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20UART0%20INIT%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_uart0(void)%0A%7B%0A%20%20%20%20%2F*%20Enable%20UART0%20clock%20*%2F%0A%20%20%20%20SIM-%26gt%3BSCGC%20%7C%3D%20SIM_SCGC_UART0_MASK%3B%0A%0A%20%20%20%20%2F*%20UART0%20pin%20select%20(TX%2FRX)%20*%2F%0A%20%20%20%20SIM-%26gt%3BPINSEL%20%7C%3D%20SIM_PINSEL_UART0PS_MASK%3B%0A%0A%20%20%20%20%2F*%20Disable%20TX%20inversion%20(important!)%20*%2F%0A%20%20%20%20SIM-%26gt%3BSOPT%20%26amp%3B%3D%20~SIM_SOPT_TXDME_MASK%3B%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%209600%20baud%20%40%2032%20MHz%0A%20%20%20%20%20*%20SBR%20%3D%2032e6%20%2F%20(16%20*%209600)%20%E2%89%88%20208%0A%20%20%20%20%20*%2F%0A%20%20%20%20UART0-%26gt%3BBDH%20%3D%200x00%3B%0A%20%20%20%20UART0-%26gt%3BBDL%20%3D%2053%3B%0A%0A%20%20%20%20UART0-%26gt%3BC1%20%3D%200x00%3B%0A%20%20%20%20UART0-%26gt%3BC2%20%3D%20UART_C2_TE_MASK%20%7C%20UART_C2_RE_MASK%3B%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20FTM2%20INIT%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20init_FTM2(void)%0A%7B%0A%20%20%20%20%2F*%20Enable%20FTM2%20clock%20*%2F%0A%20%20%20%20SIM-%26gt%3BSCGC%20%7C%3D%20SIM_SCGC_FTM2_MASK%3B%0A%20%20%20%20__DSB()%3B%0A%0A%20%20%20%20%2F*%20----%20VERY%20IMPORTANT%20ORDER%20(KE02%20SAFE)%20----%20*%2F%0A%0A%20%20%20%20%2F*%20Stop%20counter%20completely%20*%2F%0A%20%20%20%20FTM2-%26gt%3BSC%20%3D%200%3B%0A%0A%20%20%20%20%2F*%20Disable%20write%20protection%20(WRITE%20ONCE)%20*%2F%0A%20%20%20%20FTM2-%26gt%3BMODE%20%3D%20FTM_MODE_WPDIS_MASK%3B%0A%0A%20%20%20%20%2F*%20Reset%20counter%20*%2F%0A%20%20%20%20FTM2-%26gt%3BCNTIN%20%3D%200%3B%0A%20%20%20%20FTM2-%26gt%3BCNT%20%20%20%3D%200%3B%0A%0A%20%20%20%20%2F*%0A%20%20%20%20%20*%2032%20MHz%20%2F%20128%20%3D%20250%20kHz%0A%20%20%20%20%20*%20250000%20ticks%20%3D%201%20second%0A%20%20%20%20%20*%2F%0A%20%20%20%20FTM2-%26gt%3BMOD%20%3D%20249999%3B%0A%0A%20%20%20%20%2F*%20Enable%20overflow%20interrupt%2C%20prescaler%20%3D%20128%20*%2F%0A%20%20%20%20FTM2-%26gt%3BSC%20%3D%20FTM_SC_PS(7)%20%7C%20FTM_SC_TOIE_MASK%3B%0A%0A%20%20%20%20%2F*%20Enable%20NVIC%20*%2F%0A%20%20%20%20NVIC_EnableIRQ(FTM2_IRQn)%3B%0A%0A%20%20%20%20%2F*%20START%20TIMER%20(LAST%20STEP%20ONLY)%20*%2F%0A%20%20%20%20FTM2-%26gt%3BSC%20%7C%3D%20FTM_SC_CLKS(1)%3B%0A%7D%0A%0A%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20UART%20SEND%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%0Avoid%20UART_Send(const%20char%20*s)%0A%7B%0A%20%20%20%20while%20(*s)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20while%20(!(UART0-%26gt%3BS1%20%26amp%3B%20UART_S1_TDRE_MASK))%3B%0A%20%20%20%20%20%20%20%20UART0-%26gt%3BD%20%3D%20*s%2B%2B%3B%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CEM%3E%3CSTRONG%3E%26nbsp%3B%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2269461%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FTM%20Timer%20Confusion%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2269461%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F258109%22%20target%3D%22_blank%22%3E%40Jana_muralidharan%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CDIV%3EPlease%20debug%20to%20check%20whether%20the%20FTM1%20clock%20is%20enabled%20and%20verify%20if%20the%20counter%20register%20is%20functioning%20properly.%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3EBR%3C%2FDIV%3E%0A%3CDIV%3EAlice%26nbsp%3B%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2269468%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FTM%20Timer%20Confusion%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2269468%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20actually%20found%20the%20error%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EIt%20is%20that%20I%20used%20registers%20that%20are%20specific%20to%20only%20FTM2%2C%3C%2FP%3E%3CP%3ESo%2C%20after%20removing%20the%20unwanted%20registers%20it%20worked%20perfectly%20fine.%3C%2FP%3E%3CP%3EAnd%20I%20found%20out%20that%26nbsp%3B%3CSTRONG%3EHardFault%20Error%26nbsp%3B%3C%2FSTRONG%3Ewill%20only%20occur%20when%2C%20%3CEM%3E%3CSTRONG%3EWe%20use%20register%20which%20are%20not%20there%20in%20the%20first%20place.%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CFONT%20size%3D%225%22%3E%3CSTRONG%3E%3CEM%3EHey%20and%20thanks%20for%20your%20attention%20to%20this%20query%20thanks.....%3C%2FEM%3E%3C%2FSTRONG%3E%3C%2FFONT%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E