可以使用两种方式实现定时,举例以7372800Hz时钟定时1秒
1.使用ICR1的CTC模式
void Timer1Init(void)
{
TCNT1=0;
ICR1=7200; //Top值
TCCR1B=_BV(WGM13)|_BV(WGM12)|_BV(CS12)|_BV(CS10);//1024分频,CTC模式
TIMSK1=_BV(ICIE1);//比较匹配中断允许
}
ISR(TIMER1_CAPT_vect)
{
LED_FLASH;
}
2.使用OCR1A的CTC模式
void Timer1Init(void)
{
TCNT1=0;
OCR1A=7200; //TOP值
TCCR1B=_BV(WGM12)|_BV(CS12)|_BV(CS10);//1024分频,CTC模式
TIMSK1=_BV(OCIE1A);//比较匹配中断允许
}
ISR(TIMER1_COMPA_vect )
{
LED_FLASH;
}
|
|