关于MSP430 X449而言:
默许状况如下:
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
__interrupt void 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;
}