注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
an736007364的个人空间 https://home.eeworld.com.cn/space-uid-487244.html [收藏] [复制] [分享] [RSS]
日志

关于MSP430G2553定时器的学习

已有 747 次阅读2013-11-17 12:32

这两天来我一直在看《MCU工程师炼成记》,拿着LaunchPad做实验。
先谈谈这两天来的收获:
           知道了G2553有几个定时器Timer(不知道这样表述有没有错误准不准确)。
           首先Timer0_A有两个捕获比较模块: Timer0_A0,Timer0_A1.这两个模块不是完全一样的。具体执行结果是怎么样的,还要看代码是怎么写的。
           我写了两段代码,用两个不同的模块,执行结果完全不同。
TEST1:
#include
/*
* main.c
*/
typedef unsigned char u8;
typedef unsigned int u16;

u8 i;
void main(void)
{
        //关闭看门狗
        WDTCTL = WDTPW + WDTHOLD;
        //设置P1.0为输出
        P1DIR |= BIT0;
        //设置定时器中断使能
        CCTL0 = CCIE;
        //设置中断间隔
        CCR0 = 0xc350;
        //设置Timer_A的时钟源为SMCLK,工作模式为UP模式
        TACTL = TASSEL_2 + MC_1;
        //MSP430进入低功耗模式LPM0,并使能全局中断
        _BIS_SR(LPM0_bits + GIE);
        i = 0;
}
//Timer_A0中断服务程序
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A0(void)
{
        i++;
        if(i == 20)
        {
                //翻转P1.3管脚输出电平
                P1OUT ^= BIT0;
                i = 0;
        }
}


TEST2:


#include
/*
* main.c
*/
typedef unsigned char u8;
typedef unsigned int u16;

u8 i;
void main(void)
{
        //关闭看门狗
        WDTCTL = WDTPW + WDTHOLD;
        //设置P1.0为输出
        P1DIR |= BIT0;
        //设置定时器中断使能
        CCTL1 = CCIE;
        //设置中断间隔
        CCR1 = 0xc350;
        //设置Timer_A的时钟源为SMCLK,工作模式为UP模式
        TACTL = TASSEL_2 + MC_1;
        //MSP430进入低功耗模式LPM0,并使能全局中断
        _BIS_SR(LPM0_bits + GIE);
        i = 0;
}
//Timer_A1中断服务程序
#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A1(void)
{
        i++;
        if(i == 20)
        {
                //翻转P1.3管脚输出电平
                P1OUT ^= BIT0;
                i = 0;
        }
}
在CCS中看到的结果如下:

本文含有来自论坛的附件或图片点击查看原帖附件。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章