Chinaunix首页 | 论坛 | 博客
  • 博客访问: 851734
  • 博文数量: 213
  • 博客积分: 5048
  • 博客等级: 大校
  • 技术积分: 1883
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-14 10:14
文章分类

全部博文(213)

文章存档

2011年(4)

2010年(55)

2009年(47)

2008年(107)

我的朋友

分类: 嵌入式

2009-12-09 14:03:00

msp430里面一般会有两个Timer,每个Timer会有两个中断源

一般一个中断是给CCR0计数器中断用的,独用
还有一个中断是给CCR1-CCRx计数器和溢出中断用的,他们公用一个中断源,所以这个中断每次中断的时候需要去读一个专门的Timer中断向量表,如TAIV类似的寄存器,判断到底是哪个中断。
注意:TAIV这种寄存器是不会自动清除的,所以一定要去软件读它清除,要不然有问题哦

IAR中有个包装函数__even_in_range,使用大概如下:
    switch (__even_in_range(TA1IV, 4))
    {
        case TA1IV_TACCR1:
          if ((TA1CCR1&0x0020) == 0) {
            TA1CCR1 += 0x0020;
            CLRBIT(LED_P, LED_B);
          } else {
              TA1CCR1 += 0x2FE0;
            SETBIT(LED_P, LED_B);
          }
            break;
    }
阅读(1420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~