본문 바로가기

Cortex-M/NUVOTON

M052LBN - NUVOTON Timer 테스트

M052LBN - NUVOTON Timer 테스트




Nuvoton사의 M051시리즈는 4개의 32bit (8bit prescale, 24bit timer)타이머가 있다. 


M052LBN 타이머 블록도




크럭소스 선택




M052LBN 타이머 초기화 코드

타이머 클럭소스는 내부클럭을 사용하고 있기 때문에 HIRC를 선택해서 사용하고 있다.

void Timer0Init(void)

{

    SYS_UnlockReg();    

    /* Enable peripheral clock */

    CLK->APBCLK |= CLK_APBCLK_TMR0_EN_Msk;


    /* Peripheral clock source */

    CLK->CLKSEL1 |= CLK_CLKSEL1_TMR0_S_HIRC;


    //1ms 타이머 설정

    TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1000);

    TIMER_EnableInt(TIMER0);

    

    NVIC_EnableIRQ(TMR0_IRQn);

    

    TIMER_Start(TIMER0);

    

    SYS_LockReg(); 

}




M052LBN 타이머 인터럽트 핸들러

void TMR0_IRQHandler(void)

{

    if(TIMER_GetIntFlag(TIMER0) == 1)

    {

        TIMER_ClearIntFlag(TIMER0);


        gTimerTick1++;

    }

}




M052LBN 타이머 테스트 코드

int main(void)

{

    _SystemInit();

    

    Led1Init();

    Led1On();


    Led2Init();

    Led2On();

    

    //Serial Init

    DebugInit(BAUD_115200);

    DebugPrint("M052LBN Timer Test Program.\r\n");


    //타이머 초기화

    Timer0Init();

    while(1)

    {

        if(gTimerTick1>1000)

        {

            gTimerTick1 = 0;

            Led1Toggle();

        }

    }

}


반응형