感谢您提前阅读。请查看下面的代码,并注意TCCR0的中断不时被触发,这意味着ISR(TIMER0_OVF_vect(内部的内容正在运行。但是,我以相同的方式设置了TCCR2,但不会调用ISR(TIMER2_OVF_vect(。此外,ISR内部的内容只是用于测试目的的临时代码。
void init_timer0(void)
{
TCCR0 = 0x07;// 32 prescaler
// 0000 0111b
// clkI/O/1024 (From prescaler)
TCNT0 = 10;
TCCR2 = 0x07;
//TCCR2 = 0x0E;
TCNT2 = 20;
TIMSK |= 0x01;
TIMSK |= 0x40;
}
volatile int i = 0;
ISR(TIMER2_OVF_vect)
{
TCNT2 = 20;
i = 1;
i = 2;
}
ISR(TIMER0_OVF_vect)
{
TCNT0 = 10;
}
数据表的表68说明TCCR2(摘录(:
CS22 | CS21 | CS20 | 描述||
---|---|---|---|---|
1 | 0 | 1 | clkI/O/1024(来自预分频器( | |
1 | 1 | 1 | T2引脚上的外部时钟源。时钟处于上升沿 |