[PIC32-SM EMV] Timer테스트 - 1초 만들기
PIC32 타이머 구조
PIC32는 총 5개의 타이머가 있고 타이머 1은 16비트 이고, 타이머 2~5는 32비트로 설정 가능하다.
C32컴파일러를 이용하면 페리 관련 함수를 제공하기 때문에 설정하기는 상당히 편하다. 속도가 문제가 되지 않는 초기화 코드는 제공함수를 이용하는것이 좋을것 같다.
PIC32 타이머 테스트 예제코드
1ms주기로 인터럽트 수행되고 1초가 되면(1000번 카운트 되면) LED가 점등하는 예제
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);
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
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
반응형