TIMERA有TIMERA0和TIMERA1两个中断,但是中断源有所区别。
例如2231的话;
我们知道,2231有
两组可配置的 捕获./比较控制寄存器 CCR0和CCR1
|
响应的中断标志 |
中断向量地址 |
优先级 |
TIMERA0_VECTOR |
TACCR0 CCIFG |
0FFF2h |
25
|
TIMERA1_VECTOR |
TACCR1 CCIFG, TAIFG |
0FFF0h |
24 |
TIMERA0_VECTOR 是响应 CCR0 中 CCIFG(TACCTL0的bit0)标志的,即第0组比较匹配或者捕获到时,CCIFG标志置位
TIMERA1_VECTOR 是响应 CCR1 的 CCIFG标志(TACCTL1的bit0)和TAIFG标志(Timer overflow,TACTL的bit0)的,具体是那个引发的中断可查询 TAIV 寄存器,读取一次TAIV,会自动复位当前最高优先级的中断标志
关于优先级是数值越高,优先级越高,所以
A0的优先级比A1的高。
所以,根据以上,假如你要响应溢出,然而你写的服务程序在TIMERA0_VECTOR,那你就错了(应写TIMERA1_VECTOR的服务程序)
[
本帖最后由 TrueElement 于 2011-10-12 23:28 编辑 ]