社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 10095|回复: 13

[原创] MSP430G2开发板学习(七):定时器A的比较匹配模式

[复制链接]

884

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2010-11-21 19:03:51 | 显示全部楼层 |阅读模式
/******************************************************************************
//  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 <msp430g2231.h>

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)


16

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2011-7-2 00:46:00 | 显示全部楼层

多谢分享!

多谢分享!


回复

使用道具 举报

443

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2011-11-5 17:55:21 | 显示全部楼层
谢谢


回复

使用道具 举报

30

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-4-25 10:52:07 | 显示全部楼层

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都侧漏了啊啊啊!

初学求指点。。。


回复

使用道具 举报

1003

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2012-6-15 11:21:44 | 显示全部楼层
不是 IAR Embedded Workbench Version的啊!~


回复

使用道具 举报

11

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-11 13:51:03 | 显示全部楼层
为什么要加这句话???
CCR0 += 50000; // CCR0增加计数(根据实际这句话去掉也可以)


回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-24 09:07:19 | 显示全部楼层
1>连续增计数  计数值与CCR0相等时产生中断   不加的话时间间隔不同了吧  

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

点评

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


回复

使用道具 举报

25

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-8-1 10:56:38 | 显示全部楼层

答案都在用户指南上

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

点评

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


回复

使用道具 举报

32

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-8-28 16:48:21 | 显示全部楼层

回复 8楼 亦轩阁 的帖子

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


回复

使用道具 举报

81

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2013-2-2 14:54:50 | 显示全部楼层

回复 7楼 ghostpirate 的帖子

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


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2013-9-25 11:05:36 | 显示全部楼层
谢谢分享


回复

使用道具 举报

412

TA的帖子

113

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2013-11-21 08:29:37 | 显示全部楼层
,不错呢,看看先


回复

使用道具 举报

34

TA的帖子

3

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2014-8-2 23:44:17 | 显示全部楼层
谢谢分享


回复

使用道具 举报

3

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-2-28 11:48:24 | 显示全部楼层
学习了。


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-2-21 23:20 , Processed in 0.389552 second(s), 18 queries , Redis On.

快速回复 返回顶部 返回列表