12673|13

826

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430G2开发板学习(七):定时器A的比较匹配模式 [复制链接]

/******************************************************************************
//  MSP430F20xx Demo - Timer_A, Toggle P1.0, CCR0 Cont. Mode ISR, DCO SMCLK
//
//  Description: Toggle P1.0 using software and TA_0 ISR. Toggles every
//  50000 SMCLK cycles. SMCLK provides clock source for TACLK.
//  During the TA_0 ISR, P1.0 is toggled and 50000 clock cycles are added to
//  CCR0. TA_0 ISR is triggered every 50000 cycles. CPU is normally off and
//  used only during TA_ISR.
//  ACLK = n/a, MCLK = SMCLK = TACLK = default DCO
//
//           MSP430F20xx
//         ---------------
//     /|\|            XIN|-
//      | |               |
//      --|RST        XOUT|-
//        |               |
//        |           P1.0|-->LED
//
//  M. Buccini / L. Westlund
//  Texas Instruments Inc.
//  October 2005
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
******************************************************************************/
/****************************************************************************
* 定时器A翻转P1.0LED,CCR0计数模式,中断服务程序。捕获比较模式
* 软件设置翻转P1.0端口的LED,翻转周期是50000个时钟周期,SMCLK(外设时钟) 为定时器A时钟(TACLK)提供时钟源 .
* 在定时器A的中断服务程序中,P1.0被翻转,5000个时钟周期被加在CCR0上。
* 定时器A的中断服务程序每50000次被触发一次,在定时器A中断服务程序中,CPU正常的时候是关闭的,只有定时器A在运行。
*****************************************************************************/

#include

void main(void)
{
          WDTCTL = WDTPW + WDTHOLD;                 // 禁止看门狗
          P1DIR |= 0x01;                            // P1.0 设置为输出方向
          CCTL0 = CCIE;                             // CCR0 中断使能
          CCR0 = 50000;
          TACTL = TASSEL_2 + MC_2;                  // TA外设时钟计数模式

          _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt 进入LPM0中断模式
}

// 定时器中断服务程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= 0x01;                        // P1.0翻转
  CCR0 += 50000;                            //  CCR0增加计数(根据实际这句话去掉也可以)
}
完整工程如下 msp430x20x3_ta_01.rar (14.99 KB, 下载次数: 683)

最新回复

学习了。  详情 回复 发表于 2015-2-28 11:48
 
点赞 关注(1)

回复
举报

16

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

多谢分享!

多谢分享!
 
 

回复

521

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
谢谢
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

4
 

CCR0值的问题!!

在论坛上看到的代码:

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 禁止看门狗
P1DIR |= 0x01; // P1.0 设置为输出方向
CCTL0 = CCIE; // CCR0 中断使能
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // TA外设时钟计数模式

_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt 进入LPM0中断模式
}

// 定时器中断服务程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; // P1.0翻转
// CCR0增加计数(根据实际这句话去掉也可以)
}





那个最后一句的CCR0 += 50000;是怎么回事啊,CCR0不是一般不用变的么,而且最大值不是65535吗?50000+50000都侧漏了啊啊啊!

初学求指点。。。
 
 
 

回复

996

帖子

0

TA的资源

一粒金砂(高级)

5
 
不是 IAR Embedded Workbench Version的啊!~
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

6
 
为什么要加这句话???
CCR0 += 50000; // CCR0增加计数(根据实际这句话去掉也可以)
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

7
 
1>连续增计数  计数值与CCR0相等时产生中断   不加的话时间间隔不同了吧  

2>0FFFFH加1是多少     4楼懂了没

点评

我是新手,连续计数模式不是计数器增计数到0xffff,再清零计数,达到ccro再中断的不应该是增计数模式么?望高手指点,还有最后一句话也不是很清楚,我纠结的是前面进入lmp4低功耗模式之后子时钟不是应该已经关闭的么  详情 回复 发表于 2013-2-2 14:54
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

8
 

答案都在用户指南上

看下截图,看到没它是不会溢出的,不够的移到下一周期了!这句话
CCR0 += 50000; 不能去掉,这句话的意思是以1/5000为周期的,去掉的话周期为1/65535了!

111111111111111111111111.jpg (50.34 KB, 下载次数: 0)

111111111111111111111111.jpg

点评

我觉得你后面说的很对,前面没加也会溢出吧:titter: ,他这个应该与溢出中断没关系吧。  详情 回复 发表于 2012-8-28 16:48
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 8楼 亦轩阁 的帖子

我觉得你后面说的很对,前面没加也会溢出吧 ,他这个应该与溢出中断没关系吧。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(高级)

10
 

回复 7楼 ghostpirate 的帖子

我是新手,连续计数模式不是计数器增计数到0xffff,再清零计数,达到ccro再中断的不应该是增计数模式么?望高手指点,还有最后一句话也不是很清楚,我纠结的是前面进入lmp4低功耗模式之后子时钟不是应该已经关闭的么?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
谢谢分享
 
 
 

回复

412

帖子

113

TA的资源

一粒金砂(中级)

12
 
,不错呢,看看先
 
 
 

回复

32

帖子

3

TA的资源

一粒金砂(初级)

13
 
谢谢分享
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

14
 
学习了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表