[TMS320F28069] Timer Interrupt Test - 1초 만들기
TMS320F28069 Piccolo시리즈는 3개의 32비트 시스템 타이머가 있다.
시스템 타이머 초기화 함수
ConfigCpuTimer() 함수를 이용하면 쉽게 설정 가능하다. 설정할 인자는 각각 아래와 같다.
TMS320F28069 EVM Timer 테스트 예제 소스
1초마다 LED깜박이는 예제 테스트
TMS320F28069 Piccolo시리즈는 3개의 32비트 시스템 타이머가 있다.
시스템 타이머 초기화 함수
ConfigCpuTimer() 함수를 이용하면 쉽게 설정 가능하다. 설정할 인자는 각각 아래와 같다.
//-----------------------------------------------------------------------------
//Timer0 Init
void Timer0Init(void)
{
//인터럽트 루핸들러 설정
EALLOW;
PieVectTable.TINT0 = &Timer0Isr;
EDIS;
//CPU Timer초기화
InitCpuTimers();
// Configure CPU-Timer 0 to interrupt every second:
// 80MHz CPU Freq, 1 second Period (in uSeconds)
ConfigCpuTimer(&CpuTimer0, 80, 1000);
StartCpuTimer0();
// Enable CPU INT1 which is connected to CPU-Timer 0:
IER |= M_INT1;
// Enable TINT0 in the PIE: Group 1 interrupt 7
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// Enable global Interrupts and higher priority real-time debug events:
ERTM; // Enable Global realtime interrupt DBGM
}
//-----------------------------------------------------------------------------
interrupt void Timer0Isr(void)
{
Timer0Handler();
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
//Timer0 Init
void Timer0Init(void)
{
//인터럽트 루핸들러 설정
EALLOW;
PieVectTable.TINT0 = &Timer0Isr;
EDIS;
//CPU Timer초기화
InitCpuTimers();
// Configure CPU-Timer 0 to interrupt every second:
// 80MHz CPU Freq, 1 second Period (in uSeconds)
ConfigCpuTimer(&CpuTimer0, 80, 1000);
StartCpuTimer0();
// Enable CPU INT1 which is connected to CPU-Timer 0:
IER |= M_INT1;
// Enable TINT0 in the PIE: Group 1 interrupt 7
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// Enable global Interrupts and higher priority real-time debug events:
ERTM; // Enable Global realtime interrupt DBGM
}
//-----------------------------------------------------------------------------
interrupt void Timer0Isr(void)
{
Timer0Handler();
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
TMS320F28069 EVM Timer 테스트 예제 소스
1초마다 LED깜박이는 예제 테스트
#include "system.h"
#include "timer.h"
void Timer0Handler(void);
volatile unsigned int gTimeTick_1ms = 0;
void Timer0Handler(void)
{
gTimeTick_1ms++;
}
void main(void)
{
//DSP System Initialize
SystemInit();
Led1Init();
Led1On();
//타이 인터럽트 초기화
Timer0Init();
enable(); //Enable Global realtime interrupt
while(1)
{
if(gTimeTick_1ms>1000)
{
gTimeTick_1ms = 0;
Led1Toggle();
}
}
}
#include "timer.h"
void Timer0Handler(void);
volatile unsigned int gTimeTick_1ms = 0;
void Timer0Handler(void)
{
gTimeTick_1ms++;
}
void main(void)
{
//DSP System Initialize
SystemInit();
Led1Init();
Led1On();
//타이 인터럽트 초기화
Timer0Init();
enable(); //Enable Global realtime interrupt
while(1)
{
if(gTimeTick_1ms>1000)
{
gTimeTick_1ms = 0;
Led1Toggle();
}
}
}
반응형