본문 바로가기

[Microchip]/PIC32

[PIC32-SM EMV] Timer테스트 - 1초 만들기

[PIC32-SM EMV] Timer테스트 - 1초 만들기


PIC32 타이머 구조
PIC32는 총 5개의 타이머가 있고 타이머 1은 16비트 이고, 타이머 2~5는 32비트로 설정 가능하다.



C32컴파일러를 이용하면 페리 관련 함수를 제공하기 때문에 설정하기는 상당히 편하다. 속도가 문제가 되지 않는 초기화 코드는 제공함수를 이용하는것이 좋을것 같다.
TMR1 = 0;
T1CON = 0x8030; // or TMR1bits.ON = 1; TMR1bits.TCKPS=3;
PR1 = 0xFFFF;



#include <PLIB.H>
WriteTimer1( 0);
OpenTimer1( T1_ON | T1_PS_1_256, 0xFFFF);


PIC32 타이머 테스트 예제코드
1ms주기로 인터럽트 수행되고 1초가 되면(1000번 카운트 되면) LED가 점등하는 예제
//1ms 타이머 인터럽트 핸들러
void __ISR(_TIMER_1_VECTOR,ipl3) _t1(void)
{
 mT1ClearIntFlag();

 gTimeTick1_1ms++;
  Led2Toggle();


main()
{
 unsigned int cnt = 0; 
 SystemInit();

 Led1Init();Led1On();
 Led2Init();Led2Off();

 U0_Init(BAUD_115200);
 U0_Printf("PIC32 Timer Test\r\n");

 //Timer1 초기화
 Timer1Init();

    while( 1)
    {
  if(gTimeTick1_1ms>1000)
  {
   gTimeTick1_1ms = 0;
   
   //1초 주기로 LED점등
   Led1Toggle();
   
   U0_Printf("cnt=%d\r\n", cnt++);
  }
 } // main loop
} // main
반응형