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

MSP430--TimerA

已有 1229 次阅读2015-9-22 18:57 |个人分类:MSP430

    430的定时器的操作也是通过对定时器相关的寄存器的配置来操作的。
    Timer_A主要的寄存器有控制寄存器TACTL,计数器TAR,捕获比较控制寄存器TACCTLx捕获比较寄存器TACCRx,中断向量寄存器TAIV。
    TACTL寄存器主要是对定时器的基本模式等进行操作、TAR为一个16位的计数器、TACCTLx用于控制捕获/比较模式。TAIV用于中断标志。
    以下以实例来看一下:
/*******************************************************************************
**  File Name            :  main
**  Author               :  LcCode
**  Description          :  Time_A定时示例
*******************************************************************************/

#include <msp430x14x.h>

void main()
{
    WDTCTL = WDTPW + WDTHOLD;        //Stop watchdog

    P2DIR |= 0XFF;
    P2OUT |= 0XFF;
    
    CCTL0 |= CCIE;        //设置定时器CCR0中断使能
    CCR0 = 0xffff;        //设置中断间隔

    TACTL = TASSEL_2 + MC_2;        //设置Timer_A的时钟源为SMCLK、工作模式为Continuous模式
    _BIS_SR(LPM0_bits + GIE);        //MAP430进入低功耗模式LPM0并使能全局中断
}

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A ()
{
    P2OUT ^= 0xff;
    CCR0 += 0xffff;
}

    在编写过程中也是挺痛苦的,在msp430x14x.h这个头文件中有很多定义的东西,比如在写CCTL0 |= CCIE;CCR0 = 0xffff;就不太清楚是什么鬼,这里应该是对TACCTLx和TACCRx寄存器的配置才对,查看了头文件才知道,这些寄存器已经被宏定义了。其实很多的东西都已经在头文件里面定义好了,但我都没找到一份这个头文件的说明,在数据手册里面也没有写。我都觉得以后写的时候都不需要用到头文件了,自己去配置寄存器可能会更方便点,毕竟你不知道它到底定义了什么,没有定义什么。用到的时候你不知道这个寄存器在它这里到底该怎么去使用。说去查看头文件,在刚开始学的时候,都不知道各个寄存器是干嘛的,查看起来会很痛苦的。
    当然,学习本就是痛苦加快乐的,那就继续痛苦下去吧!
全部作者的其他最新日志
评论 (0 个评论)

facelist doodle 涂鸦板

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

热门文章