[求助] msp430f5438这什么中断安排啊!

水货老手   2011-7-19 14:50 楼主
// Timer1 A0 interrupt service routine
#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer_A0 (void)
{
  TA1CCR0 += 4;                             // Add Offset to CCR0
}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER1_A1_ISR(void)
{
  switch(__even_in_range(TA1IV,14))
  {
    case 0: break;                  
    case 2:  TA1CCR1 += 16;                 // Add Offset to CCR1
             break;
    case 4:  TA1CCR2 += 100;                // Add Offset to CCR2
             break;
    case 6:  break;                         // CCR3 not used
    case 8:  break;                         // CCR4 not used
    case 10: break;                         // CCR5 not used
    case 12: break;                         // Reserved not used
    case 14: P4OUT ^= 0x10;                 // overflow
             break;
    default: break;
}
}
求高手解释,它干嘛把CCR0的单独分出去啊,这什么逻辑的?刚学5438不是特别懂

回复评论 (3)

因为#pragma vector=TIMER1_A0_VECTOR单独使用一个中断向量入口,优先级比其他几个高,而其他几个共用一个入口。多看看书。

[ 本帖最后由 gongshuipeng 于 2011-7-20 14:13 编辑 ]
点赞  2011-7-20 14:12
恩恩
点赞  2011-7-21 09:58

楼主好犀利呀,就这个程序我还是看了很多天,才把他凑齐的,你尽然分析到这了,佩服!

#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER1_A1_ISR(void)
{
switch(__even_in_range(TA1IV,14))
{
case 0: break;
case 2: TA1CCR1 += 16; // Add Offset to CCR1
break;
case 4: TA1CCR2 += 100; // Add Offset to CCR2
break;
case 6: break; // CCR3 not used
case 8: break; // CCR4 not used
case 10: break; // CCR5 not used
case 12: break; // Reserved not used
case 14: P4OUT ^= 0x10; // overflow
break;
default: break;
}
}

点赞  2011-8-6 17:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复