MSP430--定时器B

合集下载

MSP430 定时器TB中断应用实例

MSP430 定时器TB中断应用实例

MSP430 定时器TB中断应用实例msp430定时器中断,实现功能:利用定时器TB0的中断实现板上led灯得闪烁。

TA和TB的设置相似,需要设置的寄存器有:1、TBR:定时计数器主体,对定时计数器进行初始值设置。

2、TBCTL:控制寄存器,对定时器的各个属性进行设置,各位如图所示,(图中是TA的控制寄存器,把A改成B就是了)TBSSELx是选择定时器时钟输入源,一般设置为2取系统时钟。

IDx是对输入时钟进行分频,0不分频,1为2分频,2为4分频,3为8分频MCx为计数模式控制位,0为停止模式,1为增基数模式,2为连续计数模式,3为增/减计数模式3、TBCCR0寄存器用于设置比较值,例如增加计数模式时,当TBR中的值增加到TBCCR0中的值时,产生中断。

程序代码:#include "msp430.h"#define led P1OUTint main( void ){// Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;P1DIR = 0x01;TBR = 0;//设置计数器初值TBCTL |= TBSSEL_2|0xc0|MC_1;//对寄存器TBCTL进行设置,TBSSEL_2为选择MCLK系统时钟,0xc0为8分频,MC_1为增计数模式TBCCR0 = 0xfffd;//设置比较值,当TBR中的值增加到TBCCR0时,产生中断。

TBCCTL0 &= ~CAP;//设置为比较模式while(1){led = 0x01;do{;}while(!(TBCCTL0 & CCIFG));//没有中断标志时进行空操作TBCCTL0 &= 0xfffe;//对中断标志进行软件清零led = 0x00;do{;}while(!(TBCCTL0 & CCIFG));TBCCTL0 &= 0xfffe;}//return 0;}。

msp430定时器部分

msp430定时器部分
case 2: break;
case 4:break;
case 10:P1OUT^=BIT0;break;
}
}
ห้องสมุดไป่ตู้
输出模式4主要是翻转:在TAR=CCRX的时候发生翻转。
输出模式主要是复位:在TAR=CCRX时发生复位,只有其他模式到来的时候才能变换。
输出模式6主要是PWM翻转和置位:在TAR=CCR0的时候,发生PWM翻转,在TAR=CCR0的时候,发生置位。
输出模式7主要是PWM复位和置位:在TAR=CCRX的时候,发生PWM复位,在TAR=CCR0的时候,发生复位。
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000;
TACTL=TASSEL_2+MC_2;
_BIS_SR(GIE);
while(1);
例如:增计数模式下,使用定时器中断使接口发生翻转:
#include<msp430f149.h>
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000-1;
TACTL=TASSEL_2+MC_1;
定时器的工作模式:
定时器的工作模式位由寄存器TACTL中的MC1和MC0两位控制。
1.停止模式:
定时器暂停计数,就是说当暂停结束后,重新开始计数的时候,计数的开始位是从暂停时候的数开始的。如果想重新计数就得对TACTL控制寄存器中的CLR位置位。

MSP430--定时器B

MSP430--定时器B

MSP430--定时器B第一篇:MSP430--定时器BMSP430--定时器B(2012-07-20 10:56:37)转载▼标签:分类:单片机专区转载原文地址:MSP430--定时器B作者:wangtangwang2012MSP43016位定时器B模块是单片机的重要资源。

MSP430F13/14/15x系列都有定时器模块B,但是不同单片机系列所带的比较/捕获模块功能有所不同。

1.定时器B模块:TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。

二者区别:(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;(2)TimerB没有实现定时器A中的SCCI功能位的功能;(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;(4)有些芯片型号当中TimerB输出实现了高阻抗输出;(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。

从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。

(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。

而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。

2.TimerB的逻辑结构图:定时器B的逻辑结构基本与定时器A相同。

3.定时器B的寄存器:寄存器相关位的配置过程参考定时器A和数据手册。

4.定时器B的比较功能当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。

MSP430

MSP430

MSP430MSP430一、上电复位POR 和上电清除PUC二、低功耗控制但系统时钟发生器基本功能建立之后,CPU内的状态寄存器SR中的SCG1、SCG2、OscOff、CpuOff是低功耗的重要控制位;系统工作模式一共有6种,1种活动模式和5种低功耗模式;可以通过设置控制位使MSP430进入低功耗模式,由中断唤醒CPU,在执行完中断服务程序之后再回到低功耗模式,也可以在执行中断程序的时候间接访问堆栈修改状态寄存器的值,这样中断程序执行完之后就会进入另外一种低功耗模式或者处于活动模式。

三、时钟模块(一)、MSP430F149有三个时钟输入源:1、LFXT1CLK:如果LFXTCLK没有作用于SMCLK、MCLK信号,可以用OscOff置位以禁止LFXT1CLK工作;2、XT2CLK:若XT2CLK没有作用于SMCLK、MCLK信号,可以用控制位XT2OFF 关闭XT2;3、DCO振荡器:MSP430F149的两个外部振荡器产生的时钟信号都可以经过1、2、4、8分频后用作系统主时钟MCLK;当外部振荡器失效后,DCO 振荡器会自动被选作MCLK 的时钟源;(二)、MSP430F149提供3三种时钟信号:1、ACLK----辅助时钟,一般用于低速外设,由LFXT1CLK信号分频而得;2、MCLK----系统通过主时钟,一般用于CPU和系统,由以上三个时钟源任意一个分频而得;3、SMCLK---主要用于高速外设,由XT2CLK+XT2CLK 或LFXT1CLK+DCO分频而得。

(三)、如何控制MSP430的DCOCLK频率?——时钟模块的控制由5个寄存器来完成1、DCOCTL:定义8总频率之一2、BCSCTL1:控制XT2CLK的开启与关闭;控制LFXT1CLK的工作模式(低频或高频,高频下需要接高频时钟源);控制ACLK分频。

3、BCSCTL2选择MCLK时钟源;选择MCLK分频;选择SMCLK时钟源;选择SMCLK时钟源分频。

MSP430F6638定时器

MSP430F6638定时器
例,使用看门狗定时功能产生一个方波(周期性的取反P1.0)
程序代码如下:
# include <msp430f6638.h> void main(void) { WDTCTL = WDT_MDLY_32; // 定时周期为32ms SFRIE1 |= WDTIE; // 使能WDT中断 P1DIR |= 0x01; // P1.0输出 __enable_interrupt(); // 系统中断允许 for (;;) { MSP430F6638 // 进入 LPM0 __bis_SR_register(LPM0_bits); P1.0 __no_operation(); } }
#include <msp430x44x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= XCAP14PF; TACTL = TASSEL0 + TACLR; // ACLK, 清除 TAR CCTL0 = CCIE; CCR0 = 1000; //方波频率:32768/1000/2=16.384 P5DIR |= 0x02; TACTL |= MC0; // Timer_a增计数模式 _EINT();
看门狗定时器 —— WDT应用举例 (2/2)
// 看门狗中断服务子程序 #pragma vector= WDT_VECTOR __interrupt void watchdog_timer (void) { P1OUT ^= 0x01; // P1.0取反 }
定时器 A —— 主要内容

定时器A的特性
定时器TAxR的值从TAxCCR0-1增计数到TAxCCR0时, 中断标志TAxCCR0 CCIFG置位;当定时器从0001h减计数 到0000h时,中断标志TAIFG置位。标志位的设置情况如436图所示。

MSP430简介(超详细·)

MSP430简介(超详细·)

msp430简介MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化, MSP430系列将会得到越来越多人的喜爱.一、IO口(一)、P口端口寄存器:1、PxDIR 输入/输出方向寄存器(0:输入模式 1:输出模式)2、PxIN 输入寄存器输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。

3、PxOUT 输出寄存器寄存器内的内容不会受引脚方向改变的影响。

4、PxIFG 中断标志寄存器(0:没有中断请求 1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位;外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受;5、PxIES 中断触发沿选择寄存器(0:上升沿中断 1:下降沿中断)6、PxSEL 功能选择寄存器(0:选择引脚为I/O端口 1:选择引脚为外围模块功能)7、PxREN 上拉/下拉电阻使能寄存器(0:禁止 1:使能)(二)、常用特殊P口:1、P1和P2口可作为外部中断口。

MSP430单片机——定时器

MSP430单片机——定时器

MSP430单片机——定时器
昨天调了MSP430单片机的定时器,犯了个比较傻的错误。

定时器有四种模式,停止模式,增模式,连续模式,增减模式。

定时器中断也有四个,CCR0,CCR1,CCR2及溢出中断,四个。

在学习过程中,我想用下溢出中断,然后定时器又设置在了增模式,因为不希望产生比较/捕捉中断,就没有设置CCR0,原本的想法是不设置CCR0,那么定时器就会自动计数到0xFFFF后产生溢出重新计数。

结果程序没有这样想象的执行。

定时器进不了溢出中断。

最后才发现,如果定时器工作在了增模式,那么就一定要设置CCR0,因为不论是比较中断还是溢出中断,都是定时器的计数值与CCR0相关,此时的溢出中断,也是定时器计数到CCR0,然后产生溢出,又重新开始计数。

然而,如果设置在了连续模式,就不需要设置CCR0了,连续模式的计数,定时器会计数到0xFFFF后产生溢出。

虽然很简单的定时器操作,但是调试过程中,还是遇到了各种小问题。

tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

MSP430F149定时器B讲解

MSP430F149定时器B讲解

MSP430F149定时器B1.定时器B模块:TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。

二者区别:(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;(2)TimerB没有实现定时器A中的SCCI功能位的功能;(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;(4)有些芯片型号当中TimerB输出实现了高阻抗输出;(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB 当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。

从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。

(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。

而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。

2.TimerB的逻辑结构图:定时器B的逻辑结构基本与定时器A相同。

3.定时器B的寄存器:寄存器相关位的配置过程参考定时器A和数据手册。

4.定时器B的比较功能当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。

5.TI提供的例程://// ////// MSP430F149// -----------------// /|| XIN|-// | | | HF XTAL (455k - 8MHz)// --|RST XOUT|-// | |// | P4.1/TB1|--> CCR1 - 75% PWM// | P4.2/TB2|--> CCR2 - 25% PWM//// M. Buccini// Texas Instruments Inc.// Feb 2005// Built with IAR Embedded Workbench Version: 3.21A//******************************************************************************。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430--定时器B
(2012-07-20 10:56:37)
转载▼
分类:单片机专区
标签:
转载
原文地址:MSP430--定时器B作者:wangtangwang2012
MSP43016位定时器B模块是单片机的重要资源。

MSP430F13/14/15x系列都有定时器模块B,但是不同单片机系列所带的比较/捕获模块功能有所不同。

1.定时器B模块:
TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。

二者区别:
(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;
(2)TimerB没有实现定时器A中的SCCI功能位的功能;
(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;
(4)有些芯片型号当中TimerB输出实现了高阻抗输出;
(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB 当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。

从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。

(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。

而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。

2.TimerB的逻辑结构图:
定时器B的逻辑结构基本与定时器A相同。

3.定时器B的寄存器:
寄存器相关位的配置过程参考定时器A和数据手册。

4.定时器B的比较功能
当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。

5.TI提供的例程:
//
// //
//
// MSP430F149
// -----------------
// /|| XIN|-
// | | | HF XTAL (455k - 8MHz)
// --|RST XOUT|-
// | |
// | P4.1/TB1|--> CCR1 - 75% PWM
// | P4.2/TB2|--> CCR2 - 25% PWM
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//****************************************************************************** #include <msp430x14x.h>
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW +WDTHOLD; // Stop WDT
//系统时钟初始化
BCSCTL1 |= XTS; // ACLK= LFXT1 = HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_3; // MCLK= LFXT1 (safe)
//io口初始化
P4DIR |= 0x06; // P4.1 and P4.2 output
P4SEL |= 0x06; // P4.2 and P4.2 TB1/2 otions
//定时器B的配置
TBCCR0 = 128; // PWM Period/2
TBCCTL1 = OUTMOD_6; // CCR1 toggle/set
TBCCR1 = 32; // CCR1 PWM duty cycle
TBCCTL2 = OUTMOD_6; // CCR2 toggle/set
TBCCR2 = 96; // CCR2 PWM duty cycle
TBCTL = TBSSEL_1 + MC_3; // ACLK, up-down mode
_BIS_SR(CPUOFF); // Enter LPM0。

相关文档
最新文档