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();
}
}
}