单独使用CCR1不触发的问题解决
没有使用TA1CCR0,只使用了TA1CCR1,配置
TA1CTL = TASSEL_1 | MC_1 | ID_3;
TA1CCR1 = 40;
TA1CCTL1 = CCIE;
触发
#pragma vector = TIMER1_A1_VECTOR
__interrupt void Timer1_A1_ISR(void)
{switch (__even_in_range(TA1IV, 10)){case 2:break;case 4:break;case 10:break;}
}
但在实际使用中一直没有触发,查询资料说CCR0与CCR1是没有关系的,可以独立使用,困惑两天,终于在DeepSeek中出现了一句:检查TA1R是否增加,不增长就是时钟源或分频存在问题,调试时发现这个果然没有增加,从时钟源方面也没有查出问题。
在GPT又查了一下,出现了这么一句:
TA1R
是定时器的计数器,TA1CCR0
是定时器的上限值。在增计数模式下,当TA1R
达到TA1CCR0
时,定时器会重置并重新计数。你需要确保TA1CCR0
已设置,并且不为0。如果
TA1CCR0
设置为0或者没有配置,计数器会一直保持在0,不会改变。可以确保配置一个合适的值
在配置时增加一句
TA1CCR0 = 4095;
问题解决。