MSP430F5529 (七)定时器B

发布者:清新天空最新更新时间:2015-08-20 来源: eefocus关键字:MSP430F5529  定时器B 手机看文章 扫描二维码
随时随地手机看文章
  定时器B和定时器A有很多相同之处,学习的时候注意回忆Timer_A的      相关知识。注意,MSP430F5529中只有一个定时器B。                                                                                                                                                                                                                 
             7.1 定时器B的简介
 
                 7.1.1 特性(了解):
(1).   16位同步定时/计数,4种工作模式可选、4中长度可选;
(2).   可选可配置时钟源;
(3).   高达7个捕获/比较寄存器;
(4).   可配置PWM输出;
(5).   带有同步装载的双缓冲比较寄存器;
(6).   快速解码的中断向量;
 
7.2.2 与定时器A的比较(相同点与不同点)
 
(1).   TB的计数长度可以选择(8、10、12、16BITS),而TA只有16位;
(2).   TB0CCRn寄存器是双缓冲的,且可以分组;
(3).   所有的TB输出可以被设为高阻状态;
(4).   TB没有SCCI,即捕获器输入信号CCI没有被锁存;
 
看结构图,观察和TA有什么区别:
 
  •     
 
 
            7.2 Timer0_B寄存器介绍及设置)
                 声明:所有寄存器同样支持字和字节操作
                           所有寄存器初始化都为0x0000
 
      7.2.1 TB控制寄存器TB0CTL(最常用最基本)(和TA有一点不同)
                                   rw-(0)表示默认读写均为0
点击看大图
TBCLGGRP:TB0CLn分组控制
                       00:每个TB0CLn独立使用
01:TB0CL1+TB0CL2作为一组(TB0CCR1的CLLD位控制整组数据更新)
TB0CL3+TB0CL4作为一组(TB0CCR3的CLLD位控制整组数据更新)
TB0CL5+TB0CL6作为一组(TB0CCR5的CLLD位控制整组数据更新)
                            10:TB0CL1、2、3一组,(TB0CCR1的CLLD位控制整组数据更新)
                                    TB0CL4、5、6一组,(TB0CCR4的CLLD位控制整组数据更新)
                            11:TB0CL0、1、2、3、4、5、6整合为一组,
(TB0CCR1的CLLD位控制整组数据更新)
CNTL:计数器长度控制
00 16位,即最大可以计到0FFFFh
01 12位,即最大可以计到0FFFh
10 10位,即最大可以计到03FFh
11  8位,即最大可以计到0FFh
 
TBSSEL :时钟源选择。尽量不要选TACLK外部时钟源,因为如果TACLK和CPU时钟不同步,很容易出问题。(TB0CLK接P7.7引脚)
00 TBCLK 
01 ACLK 
10 SMCLK 
11  ~TBCLK
 
ID:第一次分频控制。ID0-1分频;ID1-2分频;ID2-4分频;ID3-8分频
MC:工作模式控制。(建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、TACLR例外),以避免产生未知的误操作。)(和TA一样)
00 停止模式:定时器停止 
01 增模式: 定时器计数到TB0CCR0 
10 连续模式,定时器计数到0FFFH(16位)…12位、10位… 
11增减模式:定时器加计数到TB0CCR0然后减计数到0000H 
TBCLR:定时器清零位。该位置位会复位TA寄存器,时钟分频和计数方向。
TACLR位会自动复位并置0
TBIE:定时器中断使能
                                     0:中断禁止
1:中断允许
TBIFG:中断标志位
                                     0:没有中断发生
1:有中断挂起
 
7.2.2 计数值存放寄存器TB0R
         
 
7.2.3 扩展寄存器TBEX0
                 很简单,这个寄存器就是为了控制时钟源的二次分频(看结构图)。
                 该寄存器的低3为定义为TBIDEX:000-111分别表示1-8分频
 
7.2.4 捕获/比较寄存器TBCCR0-TBCCR6(共7个)
                 比较模式下,用来设定计数终值;
捕获模式下用来将捕获的TBR值存放进TBCCRx中。
 
 [page]
 
       7.2.5 捕获/比较控制寄存器TB0CCTL0-TB0CCTL6:
点击看大图
CM:捕获模式设定    00 不捕获 
01 上升沿捕获 
10 下降沿捕获 
11上升和下降沿都捕获
 
       CCIS:捕获源的选择             00 CCIxA 
01 CCIxB 
10 GND 
11 VCC 
SCS:同步捕获源,设定是否与时钟同步
                                                 0 异步捕获 
1 同步捕获 
CLLD:比较寄存器缓冲装载模式选择。
00  TB0CCRn的值(改变时)立即装载到TB0CLn 
01  当TB0R的值计到0时,进行装载
10  增模式或者连续模式下,TBR0值计到0时,进行装载 ;
        增减模式下,TBR0计数到TBCL0时,开始装载;
11  TBR0计数到TBCL0时,开始装载;
 
CAP: 0-比较模式     1-捕获模式
OUTMOD:输出模式控制位。同TA一模一样    
CCIE:中断使能,该位允许相应的CCIFG标志中断请求 。
0-中断禁止      1 -中断允许 
CCI  :捕获比较输入,所选择的输入信号可以通过该位读取
OUT : 对于输出模式0,该位直接控制输出状态 。
0-输出低电平    1-输出高电平
COV:捕获溢出位。该位表示一个捕获溢出发出,COV必须由软件复位。 
0-没有捕获溢出发生  1-有捕获溢出发生
CCIFG:捕获比较中断标志位。
 0-没有中断挂起    1-有中断挂起
 
 
               7.2.6 中断向量寄存器TB0IV
                                             同TAIV一样,里面存放一个数字编号。
  • 点击看大图
 
 
7.3 重点讲TB和TA的不同之处
 
                        7.3.1 没有再把CCI信号锁存了
                                      TA作捕获器的时候,CCI为捕获信号,然后CCI被锁存输出            为SCCI;
 
                                             但是,TB没有锁存。也就是说只能从CCI位查看输入信        号了。
 
                        7.3.2 计数值位数可调了(其实无所谓,都可以16位那干嘛不用)
                                             TA的计数值寄存器TAR只能是16位(0XFFFFh);
 
                                             TB的计数值寄存器TBR可以选择是16、12、10、8位;
 
                        7.3.3 两级缓冲比较器(比较模式下)
TA里面,我们在TACCRn中写入要比较的数值,然后让TAR中的计数值和TACCRn比较,如果相等了,相应的标志位就会置位;
 
TB里面,不仅有TB0CCRn,还多了一个二级缓存器TB0CLn。TB0CLn不能被直接进行操作,它的值只能来源于TB0CCRn。计数的时候,TB0R中的计数值不和TB0CCRn比较,而是和TB0CLn进行比较。
二级缓冲是为了防止我们在修改TB0CCRn的值的时候,对计数产生影响。因为计数器不直接和TB0CCRn比较,而是TB0CCRn把值赋给TB0CLn,由TB0CLn去和TB0R进行比较。所以也就有了CLLD位控制比较寄存器缓冲装载模式:(当向TB0CCRn中重新写数时)
00  TB0CCRn的值立即装载到TB0CLn 
01  当TB0R的值计到0时,进行装载
10  增模式或者连续模式下,TBR0值计到0时,进行装载 ;
        增减模式下,TBR0计数到TBCL0时,开始装载;
11   TBR0计数到TBCL0时,开始装载;
 
 
 
 
 
              7.3.4 比较器可以被分组
                                      TA没有二级缓冲寄存器,而且本来的TACCRn也只能被单         独使用。
对于TB:
TBCLGGRP:TB0CLn二级缓冲寄存器分组控制
                       00:每个TB0CLn独立使用
01:TB0CL1+TB0CL2作为一组(TB0CCR1的CLLD位控制整组数据更新)
TB0CL3+TB0CL4作为一组(TB0CCR3的CLLD位控制整组数据更新)
TB0CL5+TB0CL6作为一组(TB0CCR5的CLLD位控制整组数据更新)
                            10:TB0CL1、2、3一组,(TB0CCR1的CLLD位控制整组数据更新)
                                    TB0CL4、5、6一组,(TB0CCR4的CLLD位控制整组数据更新)
                            11:TB0CL0、1、2、3、4、5、6整合为一组,
(TB0CCR1的CLLD位控制整组数据更新)
 
                               所谓的分组,就是该组的数据要同时更新。
                               以10模式下的TB0CL1、2、3这组为例:
                                TB0CCTL1中的CLLD设置为01,即TB0R计数到0时,TB0CCR1就会把值装载(更新)到TB0CL2中,同时TB0CCR2就会把值装载(更新)到TB0CL2中,同时TB0CCR3也会把值装载(更新)到TB0CL3中。无论TB0CCRn中的值有几个发生了变化,但它们都只会同时更新TB0CLn。
 
                        一个重要的应用:
 
             如图,增减模式下,可以用来产生有死区时间(dead time)的信号。点击看大图
 
                               我们知道有一种H桥电路结构,该电路有一般有两个输入端,而且这两个输入端(1和2)严禁同时输入高电平。那么该怎么产生驱动该电路的信号呢:
                 但是,如果我们想要在系统运行的时候,修改死区时间怎么办。那只有修改
                 比较器里面的数值了。这样就有问题了,如果两个比较器数值没有同时修改,那么就有可能产生同时为高电平的情况,这就很危险了。所以,我们把比较器分组,这样数据同时更新,就不会有这样的担心了。
关键字:MSP430F5529  定时器B 引用地址:MSP430F5529 (七)定时器B

上一篇:MSP430F5529 番外(二)纠正XT1配置错误
下一篇:MSP430F5529 (六)定时器Timer_A-2

推荐阅读最新更新时间:2024-03-16 14:29

MSP430F5529 DriverLib 库函数学习笔记(三)认识中断
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 一、硬知识 中断的基本概念 中断定义 中断是暂停CPU正在运行的程序,转去执行相应的中断服务程序,完毕后返回被中断的程序继续运行的现象和技术。 中断源 把引起中断的原因或者能够发出中断请求的信号源统称为中断源。中断首先需要由中断源发出中断请求,并征得系统允许后才会发生。在转去执行中断服务程序前,程序需保护中断现场;在执行完中断服务程序后,应恢复中断现场。 中断源一般分成两类:外部硬件中断源和内部软件中断源。外部硬件中断源包
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(三)认识中断
浅谈msp430f5529入门(3)——定时器A/Timer_A
这次聊聊定时器A,Timer_A。 F5529的定时器和F149刚能上几乎没有区别,会用F149的定时器就会用F5529的定时器了。可是呢~F55系列定时器的数量不一样了,而且寄存器的名字也有所改变了。 F5529一共有3个定时器A,3个!TimerA!这3个分别是Timer0_A5,Timer1_A3,Timer2_A3,前面的数字就是定时器的序数,后面的数字是这个定时所拥有的捕获比较单元数量。 这些我都不是从datasheet或者user guide上查到的,而是最直接地翻CCS里的 msp430f5529.h 知道的。datasheet和user guide 都是讲一个系列的,各种芯片之间可能有点差异,所以还是进
[单片机]
MSP430F5529时钟详解
1、以后要配置时钟的地方到处都是。 2、打字好累,上传更累; 3、之后我会发布PDF版,有心的同学可以下载学习。 之前有一点漏说明了,先补充上 ***************************************************************还有一个模块时钟源:MODOSC,产生MODCLK时钟源信号,一般只为闪存控制模块和ADC12模块提供服务。 该模块不被使用时自动关闭,任何模块对该时钟源提出使用要求时,MODOSC无需被使能即可响应该请求。430F5529中MODCLK为5MHZ。 ******************************************************
[单片机]
<font color='red'>MSP430F5529</font>时钟详解
MSP430F5529 DriverLib 库函数学习笔记(六)定时器A产生PWM波
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 1.通过Timer_A_outputPWM配置产生PWM波 所选输出引脚为P1.2 初始化函数 #define TIMER_PERIOD 12500 void Timer_A_PWM_Init(void) { Timer_A_outputPWMParam htim = {0}; //P1.2复用输出 GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1, GPIO_
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(六)<font color='red'>定时器</font>A产生PWM波
MSP430F5529 DriverLib 库函数学习笔记(十三)认识低功耗模式
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 低功耗模式 MSP430单片机具有7种低功耗模式(LPM0~4、LPM3.5和LPM4.5,并非全部系列都具有),通过不同程度的休眠,可降低系统功耗。在任何一种低功耗模式下,CPU都被关闭,程序将停止执行,直到被中断唤醒或单片机复位。因此在进入任何一种低功耗模式之前,都必须设置好唤醒CPU的中断条件、打开中断允许位、等待被唤醒,否则程序将有可能永远停止运行。 MSP430单片机具有3种时钟信号:辅助时钟ACLK、子系统时钟SM
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(十三)认识低功耗模式
MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 在工业控制现场,往往会由于供电电源、空间电磁干扰或其他的原因引起强烈的干扰噪声。这些干扰作用于数字器件,极易使其产生误动作,引起单片机程序跑飞,若不进行有效的处理,程序就不能回到正常的运行状态。为了保证系统的正常工作,一方面要尽量减少干扰源对系统的影响;另一方面,在系统受到影响之后要能尽快地恢复,看门狗就起到了这个作用。看门狗的用法:在正常工作期间,一次看门狗定时时间将产生一次系统复位。如果通过编程使看门狗定时时间稍大于程序中主循环执
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(十四)看门狗<font color='red'>定时器</font> (WDT)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved