4208|12

316

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

大家帮忙看段代码,有问题请教一下! [复制链接]

#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是多长呢!?请高手指点!

最新回复

The up mode is used if the timer period must be different from 0FFFFh counts. In the continuous mode, the timer repeatedly counts up to 0FFFFh and restarts from zero  详情 回复 发表于 2011-12-13 12:29
 
点赞 关注

回复
举报

7219

帖子

192

TA的资源

五彩晶圆(高级)

沙发
 
yaokan 要看用的什么时钟把
 
 

回复

400

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
你的代码不完整,给你一个例程。
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;
这个语句设置

赞赏

1

查看全部赞赏

 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

4
 

回复 板凳 Triton.zhang 的帖子

谢谢Triton.zhang兄:
我原来看不到LED闪可能有以下原因:
TA2CCR0 太小;
没有TACLR;

TA2CCR0 += 50000; // Add Offset to CCR0这个正在琢磨中!
 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

5
 
奇怪的事!
#include  "msp430x54x.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
TA0CCTL0 = CCIE; // CCR0 interrupt enabled
TA0CCR0 = 500;
TA0CTL = 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=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
P1OUT ^= 0x01; // Toggle P1.0
//TA0CCR0 += 50000; // Add Offset to CCR0
}

这样也可以!
 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

6
 
这样也可以!
也比较奇怪
#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
}
 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

7
 

回复 6楼 wuyanyanke 的帖子

#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 */

知道了!是因为这个
 
 
 

回复

519

帖子

0

TA的资源

纯净的硅(初级)

8
 

回复 7楼 wuyanyanke 的帖子

这个是计数器模式,看来你得多看看书哦。CCR0,CCR1,CCR2,是要判断TAR的值来确定。可以有很多种组合方式输出不同的脉宽。我以前就是用这个方法来产生一个合频的。
 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

9
 

回复 8楼 wzjhuohua 的帖子

哦!是呀!单片机是要好好补补、呵呵!
我上面的意思是说MC_2的方式和CCR0的值设不设没有多大关系!
 
 
 

回复

424

帖子

0

TA的资源

纯净的硅(高级)

10
 
MC_2的方式和CCR0的值设不设没有多大关系
答:有!MC位是设置定时方式。具体去查看User's Guide吧!遇到问题去查User's Guide,这样学习起来更快!
 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

11
 

回复 10楼 鸵鸟蝈蝈 的帖子

鸵鸟蝈蝈兄:
#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 */、

定义中的Up to CCR0与Continous up有什么区别呢?我看User's Guide一直没有看明白!
我的理解是#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */这种方式是从0开始计时,到CCR0 的设置值然后溢出!MC_2的方式是从0开始计,用递增的方式,增到0FFFFH结束!
不知道这样理解对不对!请不吝指教!
 
 
 

回复

424

帖子

0

TA的资源

纯净的硅(高级)

12
 
The up mode is used if the timer period must be different from 0FFFFh counts.

In the continuous mode, the timer repeatedly counts up to 0FFFFh and restarts from zero

赞赏

1

查看全部赞赏

 
 
 

回复

316

帖子

1

TA的资源

纯净的硅(中级)

13
 

回复 12楼 鸵鸟蝈蝈 的帖子

#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */   
UP Mode!?

#define MC_2 (2*0x10u) /* Timer A mode control: 2 - Continous up */、
Continuous Mode !?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表