G2553 TimerA 的时钟频率?

[复制链接]
851|9
 楼主| 好名儿狗起了 发表于 2015-8-27 17:43 | 显示全部楼层 |阅读模式
本帖最后由 好名儿狗起了 于 2015-8-28 21:23 编辑

我需要一个0.5S一次的中断,写了个小程序,用CCR0每0.5秒触发一次中断,结果PAD上的小灯并不是隔1S亮一次。。比一秒长多了,这是为什么??
请老师们解答下。
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;         
   P1DIR |=BIT0;
   TACTL = TASSEL_1+MC_1;                      //选择ACLK 时钟源32768HZ,增计数模数            
   TACCR0 = 16384;                                    //约0.5s                  
   TACCTL0 = CCIE ;
   _EINT();
   while(1);
   }
#pragmaector v=TIMER0_A0_VECTOR
  __interrupt void TimerA0(void)
  {P1OUT^=BIT0;
     }
PS:主频1MHZ。
 楼主| 好名儿狗起了 发表于 2015-8-27 17:45 | 显示全部楼层
中断程序打字的时候写错了 #pragma vector ,不影响问题
 楼主| 好名儿狗起了 发表于 2015-8-27 19:19 | 显示全部楼层
难道沉没了。。这个应该很简单的吧
侣行天下 发表于 2015-8-28 08:42 | 显示全部楼层
不知道用这种方法测试合理吗?
dirtwillfly 发表于 2015-8-28 09:26 | 显示全部楼层
没必要那么麻烦,ACLK可以通过io输出的
 楼主| 好名儿狗起了 发表于 2015-8-28 16:17 | 显示全部楼层
dirtwillfly 发表于 2015-8-28 09:26
没必要那么麻烦,ACLK可以通过io输出的

其实我想要的是0.5秒一次的中断,ACLK我测过,没有问题,不过中断的间隔就不对了。
dirtwillfly 发表于 2015-8-28 16:58 | 显示全部楼层
好名儿狗起了 发表于 2015-8-28 16:17
其实我想要的是0.5秒一次的中断,ACLK我测过,没有问题,不过中断的间隔就不对了。 ...

早说啊。

  1. #include <msp430g2553.h>
  2. void main (void)
  3. {  
  4. WDTCTL = WDTPW + WDTHOLD;  
  5. TA1CTL|=TASSEL_2+TACLR+MC_3+ID_3;//采取内部时钟源1.04M,八分频,增减计数模式

  6. TA1CCTL0=CCIE;//启用定时器中断
  7. TA1CCR0=65535;//计数1S
  8. P1DIR|=BIT0;
  9. _EINT();
  10. //LPM4;

  11. while(1);
  12. 』  

  13. #pragma vector=TIMER1_A0_VECTOR

  14. __interrupt void ta10_isr(void)
  15. {  
  16. P1OUT^=BIT0;
  17. }  
 楼主| 好名儿狗起了 发表于 2015-8-28 21:24 | 显示全部楼层

很谢谢老师的指导,能讲解下为什么我的程序得到的不是0.5秒一次的中断?
quray1985 发表于 2015-8-30 20:25 | 显示全部楼层
不太懂那位大侠的程序
风的样子 发表于 2015-8-31 20:38 | 显示全部楼层
不是太懂这方面的知识,帮楼主顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部