cike 发表于 2011-4-14 22:17:42

请教一个关于430定时器的问题,高手进来看看

源程序如下:
#include"msp430x42x.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;                       // 停止看门狗
FLL_CTL0 |= XCAP18PF;                       // 配置晶振负载电容
P1DIR |= BIT3;                       
TACTL |= TASSEL_1 + MC_2+TAIE;//选择ACLK,连续模式
TAR=65536-3277;                  
_EINT();
LPM3;
}

#pragma vector=TIMERA1_VECTOR
__interrupt void TACCR1_ISR(void)            // 计至TACCR0中断
{
TAR=65536-3277;       

P1OUT ^= BIT3;//灯闪烁
}

想利用定时器A的溢出中断定时闪烁的,但是程序下进去灯一直亮,不知道怎么回事,加上TACCTL0|=CCIE;灯就可以闪了。按理说主计数器可以溢出中断的,跟捕获比较没关系的。期待高手解答

cowboy 发表于 2011-4-15 00:23:58

中断程序内要清掉中断标志位,否则中断退出后又马上进入。

TACTL &= ~TAIFG;

TAIFG 不会自动清零。

cike 发表于 2011-4-15 07:53:19

响应中断后可以自动清除的

wanpujame 发表于 2011-4-15 09:18:21

回复【2楼】cike
-----------------------------------------------------------------------

MSP430只有CCR0的中断(它的优先级最高)可以自动清除,TAR计数溢出的中断需要手动或者访问TAIV时可以被清除。
你用下面程序试试,F2013的(手头没有F42x),定时100us左右。

#include <msp430x20x3.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;               // Stop WDT
P1DIR |= 0x01;                            // P1.0 output
TACTL = TASSEL_2 + MC_2 + TAIE;         // SMCLK, contmode, interrupt
TAR=65536-100;

_BIS_SR(LPM0_bits + GIE);               // Enter LPM0 w/ interrupt
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
TAR=65536-100;
switch( TAIV )
{
    case2: break;      // CCR1 not used
    case4: break;      // CCR2 not used
    case 10: P1OUT ^= 0x01;// overflow
            break;
}
}

cowboy 发表于 2011-4-15 10:15:45

【3楼】 wanpujame 说得对,只要在中断内访问一次TAIV,或用软件清掉TAIFG,都能达到目的。你看到灯一直亮,是因为不断的执行中断服务程序,灯闪的频率太高。

cike 发表于 2011-4-15 14:06:13

恩,调试通了,终于弄懂了,谢谢各位大牛了。。。。

bitant 发表于 2011-7-13 09:23:27

mark;

semonwong 发表于 2011-7-13 11:57:38

这么复杂啊 比51复杂多了

sharp0 发表于 2011-7-16 00:51:51

mark,学习中

scale_ljs 发表于 2011-8-21 10:36:10

多源中断,必须清标志

mbb_qdzj 发表于 2011-9-9 21:38:35

对, 我原来 以为加个 CCIE.... 原来是中断标志位的问题...

njelement 发表于 2012-5-3 19:41:49

明白了 赶紧试试 正发愁这个东西呢!我说用示波器看波形怎么总是不对!

xiatianzhang 发表于 2012-5-4 08:30:56

页: [1]
查看完整版本: 请教一个关于430定时器的问题,高手进来看看