마이크로 컨트롤러로 제어를 할때 가장 기본이되고 많이 사용하는 기능이 타이머 인데 MSPM0G 시리즈는 7개의 타이머로 다양한 기능을 제공한다.

그중 가장 기본이 되는 타이머 인터럽트 테스트를 해 보자.
SYS Config를 이용하여 타이머를 추가 하고 클럭 소스와 주기를 설정하면 되는데 아주 직관적으로 설정이 가능하다.

테스트를 위해 1ms로 인터럽트가 수행될 수 있도록 설정한다.

인터럽트 이벤트도 다양한 옵션으로 선택가능한데 우선 타이머값이 Zero가 되었을때 발생할 수 있도록해서 1ms 마다 인터럽트가 수행되도록 하자

MSPM0G3507 타이머 인터럽트 테스트 코드
DL_TimerG_startCounter 함수로 타이머를 구동하고 타이머 인터럽트 핸들러 TIMER_0_INST_IRQHandler 에서 LED 토글 하는 간단한 예제를 작성해 보았다.
volatile unsigned int gTimetick1 = 0;
void TIMER_0_INST_IRQHandler(void)
{
//DL_TimerA_clearInterruptStatus(TIMER_0_INST, DL_TIMERG_INTERRUPT_LOAD);
switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) {
case DL_TIMER_IIDX_ZERO:
gTimetick1++;
if(gTimetick1>1000-1)
{
gTimetick1 = 0;
Led1Toggle();
}
break;
default:
break;
}
}
int main(void)
{
SYSCFG_DL_init();
Led1Off();
Led2Off();
NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);
DL_TimerG_startCounter(TIMER_0_INST);
}
반응형