新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430单片机定时器面面观

MSP430单片机定时器面面观

作者: 时间:2016-11-11 来源:网络 收藏
对于MSP430X449而言:

默认情况如下:

本文引用地址://m.amcfsurvey.com/article/201611/316955.htm

ACLK= LFXT1 = 32768Hz, 低频时钟源

MCLK=SMCLK= default DCO = 32 x ACLK = 1048576Hz 高频时钟源

ACLK ,MCLK ,SMCLK的频率可以根据 FLL+相应的寄存器来调节

时钟源有:

LFXT1CLK: 32768 HZ 即:32K

XT2CLK: 4M

DCOCLK: 选择AP18PF时

FN_2 1.04875M

FN_3 1.08860M

FN_4 1.710

FN_8 3.4M

以下引脚的复用功能如下:

P1.5 : ACLK 82

P1.4: SMCKL 83

P1.1: MCLK 86

—————————————————————————————————————————

msp430定时器学习笔记

_BIS_SR(LPM3_bits + GIE) //进入LPM3低功耗模式和开总中断允许

中断

#pragma vector=TIMERA0_VECTOR

__interruptvoid Timer_A(void)

{

}

TACTL timerA控制寄存器

TAR timerA计数器

CCTL0 捕获/比较控制寄存器0

CCRO 捕获/比寄存器0(具有最高中断优先级别,单独使用一个中断向量)

CCTL1 捕获/比较寄存器1

CCR1 捕获/比较寄存器1

CCTL2 捕获/比较寄存器2

CCR2 捕获/比较寄存器2

TAIV 中断向量寄存器

其中,定时器,CCR2,CCR1三者共用一个中断向量

——————————————————————————————————————————

定时器A是一个16位的定时/计数器。它有3个捕获/比较寄存器;能支持多个时序控制、多个捕获/比较功能和多个PWM输出;有广泛的中断功能,中断可由计数器溢出产生,也可以由捕获/比较寄存器产生。

一、TimerA的4种工作模式

1. 停止模式

用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。

2. 增计数模

捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器。因为CCR0为16位寄存器,所以该模式适用于定时器周期小于65536的连续计数情况。计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。

3. 连续计数模式

在需要65536个时钟周期的定时应用场合常用连续计数模式。定时器从当前值计数到0FFFH后,又从0开始重新计数。

连续计数模式的典型应用:

产生多个独立的时序信号。利用捕获比较寄存器捕获各种其它外部事件发生的定时器数据。

产生多个定时信号。

4. 增/减计数模式

需要生成对称波形的情况经常可以使用增/减计数模式。该模式下,定时器先增计数到CCR0的值,然后反向减计数到0。计数周期仍由CCR0定义,它是CCR0计数器值的2倍。

二、TimerA寄存器说明

寄存器

寄存器说明

类型

地址

初始状态

TACTL

Timer_A控制寄存器

读写

160H

POR复位

TAR

Timer_A计数器

读写

170H

POR复位

CCTL0

捕获/比较控制寄存器0

读写

162H

POR复位

CCR0 捕获/比较寄存器0

读写

172H

POR复位

CCTL1

捕获/比较控制寄存器1

读写

164H

POR复位

CCR1 捕获/比较寄存器1

读写

174H

POR复位

CCTL2

捕获/比较控制寄存器2

读写

166H

POR复位

CCR2 捕获/比较寄存器2

读写

176H

POR复位

TAIV 中断向量寄存器

读写

12EH

POR复位

1. TACTL 控制寄存器,各位定义:

15-10

9 8 7

6

5

4

3

2

1

0

未用

SSEL1 SSEL0 ID1 ID0 MC1 MC0 未用 CLR TAIE TAIFG

SSEL1、SSEL0选择进入定时器分频器的时钟源

SSEL1

SSEL0

输入时钟源

说明

0 0 TACLK 用特定的外部引脚信号
0 1 ACLK 辅助时钟
1 0 MCLK 系统时钟
1 1 INCLK 外部输入时钟

ID1、ID0输入分频系数

ID1

ID0

分频系数

0 0 不分频
0 1 1/2分频
1 0 1/4分频
1 1 1/8分频

MC1、MC0计数模式控制位

MC1

MC0

模式

0 0 停止模式
0 1 增计数模式
1 0 减计数模式
1 1 增/减计数模式

CLR——定时器清除。当该位为1时,定时器复位。

TAIE——定时器中断允许位。0:禁止定时器溢出中断;1:允许定时器溢出中断。

TAIFG——定时器溢出标志位。

增计数模式:当定时器由CCR0计数到0时,TAIFG置位;

连续计数模式:当定时器由0FFFFH计数到0时,TAIFG置位;

增/减计数模式:当定时器由CCR0减计数到0时,TAIFG置位。

2. TAR 16位计数器。

3. CCTLx 捕捉/比较控制寄存器,各位定义:

15 14

13 12 11 10 9

8

7 6 5

4

3

2

1

0

CAPTMOD1~0

CCIS1~0 SCS SCCIx

CAP

OUTMODx

CCIEx

CCIx

OUT

COV

CCIFGx

CAPTMOD1~0——选择捕获模式

00:禁止捕获模式

01:上升沿捕获

10:下降沿捕获

11:上升沿与下降沿都捕获

CCIS1~0——捕获事件输入源

00:选择CCIxA

01:选择CCIxB

10:选择GND

11:选择Vcc

SCS——选择捕获信号与定时器时钟同步、异步关系

0:异步捕获

1:同步捕获(实际中经常使用同步模式,捕获总是有效的)

SCCIx——比较相等信号EQUx将选中的捕获/比较输入信号CCIx(CCIxA,CCIxB,Vcc和GND)进行锁存,然后可由SCCIx读出。

CAP——选择捕获模式还是比较模式。

0:比较模式

1:捕获模式

OUTMODx——选择输出模式

000:输出

001:置位

010:PWM翻转/复位

011:PWM置位/复位

100:翻转

101:复位

110:PWM翻转/置位

111:PWM复位/置位

CCIEx——捕获/比较模块中断允许位

0:禁止中断

1:允许中断

CCIx——捕获/比较模块的输入信号

捕获模式:由CCIS0和CCIS1选择的输入信号可通过该位读出

比较模式:CCIx复位

OUT——输出信号(如果OUTMODx选择输出模式0,则该位对应于输入状态)

0:输出低电平

1:输出高电平

COV——捕获溢出标志

0:没有捕获溢出

1:发生捕获溢出

当CAP=0时,选择比较模式。捕获信号发生复位。没有使COV置位的捕获事件。

当CAP=1时,选择捕获模式。如果捕获寄存器的值被读出前再次发生捕获事件,则COV置位。程序检测COV来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出标志复位,须用软件复位。

CCIFGx——捕获比较中断标志

捕获模式:寄存器CCRx捕获了定时器TAR值时置位

比较模式:定时器TAR值等于寄存器CCRx值时置位

4. CCRx 捕捉/比较寄存器:可读可写

在捕获模式,当满足捕获条件,硬件自动将计数器TAR数据写入该寄存器。

如果测量某窄脉冲(高电平)的脉冲长度,可定义上升沿和下降沿都捕获。在上升沿时,捕获一个定时器数据,这个数据在捕获寄存器中读出;再等待下降沿到来,在下降沿时又捕获一个定时器数据;那么两次捕获的定时器数据差就是窄脉冲的高电平宽度。

其中CCR0经常用作周期寄存器,其它CCRx相同。

5. TAIV 中断向量寄存器:

Timer_A模块使用两个中断向量。一个单独分配给捕获/比较寄存器CCR0;另一个作为共用中断向量用于定时器和其它的捕获/比较寄存器。

捕获/比较寄存器CCR0中断向量具有最高的优先级。因为CCR0能用于定义增计数和增/减计数模式的周期。因此,它需要最快速的服务。CCIFG0在被中断服务时能自动复位。

CCR1~CCRx和定时器共用另一个中断向量,属于多源中断,对应的中断标志CCIFG1~CCIFGx和TAIFG1在读中断向量字TAIV后,自动复位。如果不访问TAIV寄存器,则不能自动复位,须用软件清除。

15~5

4~ 1 0

0~0

中断向量 0

中断优先级

中断源

缩写

TAIV的内容

最高 捕获/比较器1 CCIFG1 2
捕获/比较器2 CCIFG2 4
......
捕获/比较器x CCIFGx
最低 定时器溢出 TAIFG1 10
没有中断将挂起

————————————————————————————————————————————————

//******************************************************************************

//

// Lierda, Inc

// Built with IAR Embedded Workbench Version: 3.41a

// ID: MSP430-TEST44X

// 程序功能:实现延时 1S,驱动LED4闪烁

// 通过本实验了解MSP430内部的时钟来源和不同频率的设置。

// 硬件连接:在必须连接P1.1、P1.5短接器,

//******************************************************************************

#include "msp430x44x.h"

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器

TACTL = TASSEL0 +TACLR; //选择ACLK为分频时钟源,清TAR

TACTL |= MC0; //开启Timer_A,连续计数模式

CCTL0 = CCIE; //开启Timer_A的中断

CCR0 = 32000; //延时32000/32k=1s

P5DIR |= BIT1;

P5OUT |= BIT1;

while(1)

{

_BIS_SR(LPM3_bits+GIE); //进入低功耗模式

}

}

#pragma vector=TIMERA0_VECTOR

__interrupt void Time_A()

{

P5OUT ^=BIT1;

}



关键词:MSP430单片机定时

评论


技术专区

关闭