大家帮忙看段代码,有问题请教一下!

2019-03-24 15:13发布

#include  "msp430x54x.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗定时器
P1DIR |= 0x01; // 设P1.0为输出
TA1CTL = RT1SSEL_0 + MC_2 + TAIE; // ACLK, 定时器A计数模式,且开中断功能
_BIS_SR(LPM3_bits + GIE); //进入LPM3 低功耗模式和开总中断允许
}

#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
     P1OUT ^= BIT0;
}

我的理解是Timer到时溢出触发中断,LED状态改变,那这个Timer是多长呢!?请高手指点!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
常见泽1
1楼-- · 2019-03-24 21:50
 精彩回答 2  元偷偷看……
Triton.zhang
2楼-- · 2019-03-25 01:32
< :TI_MSP430_内容页_SA7 --> 你的代码不完整,给你一个例程。
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // P1.0 output
  TA2CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA2CCR0 = 50000;
  TA2CTL = TASSEL_2 + MC_2 + TACLR;         // SMCLK, contmode, clear TAR

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, enable interrupts
  __no_operation();                         // For debugger
}

// Timer2 interrupt service routine
#pragma vector=TIMER2_A0_VECTOR
__interrupt void TIMER2_A0_ISR(void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0
  TA2CCR0 += 50000;                         // Add Offset to CCR0
}


Timer 的间隔由  TA2CCR0 = 50000;
这个语句设置
wuyanyanke
3楼-- · 2019-03-25 05:39
谢谢Triton.zhang兄:
我原来看不到LED闪可能有以下原因:
TA2CCR0 太小;
没有TACLR;

TA2CCR0 += 50000; // Add Offset to CCR0这个正在琢磨中!
wuyanyanke
4楼-- · 2019-03-25 08:18
 精彩回答 2  元偷偷看……
wuyanyanke
5楼-- · 2019-03-25 11:07
这样也可以!
也比较奇怪
#include  "msp430x54x.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
TA0CCTL0 = CCIE; // CCR0 interrupt enabled
//TA0CCR0 = 50000;
TA0CTL = TASSEL_2 + MC_2 + TACLR; // SMCLK, contmode, clear TAR

__bis_SR_register(LPM4_bits + GIE); // Enter LPM0, enable interrupts
__no_operation(); // For debugger
}

// Timer2 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
P1OUT ^= 0x01; // Toggle P1.0
//TA0CCR0 += 50000; // Add Offset to CCR0
}
wuyanyanke
6楼-- · 2019-03-25 14:00
#define MC_1                (1*0x10u)  /* Timer A mode control: 1 - Up to CCR0 */
#define MC_2                (2*0x10u)  /* Timer A mode control: 2 - Continous up */

知道了!是因为这个

一周热门 更多>

相关问题

    相关文章