原创 【博客大赛】MSP430学习笔记--定时器

2013-7-10 20:37 2045 17 18 分类: MCU/ 嵌入式

      定时器在单片机系统中是非常重要的部分,它在事件控制与管理方面有着重要的应用。MSP430F149主要有看门狗,定时器A(Timer_A)和定时器B(Timer_B)等模块。 

定时器资源功能 说明:

  (1)看门狗定时器(WDT):主要用于程序在产生错误是用作单片机系统复位重启的。另外也可作为一个基本定时器使用。

 (2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出,可作串口波特率发生器使用。

(3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A增强些。

   1 看门狗

  看门狗本质上是一个16比特的定时器。看门狗的主要功能就是检测到软件出现问题时重新启动系统。到看门狗设定的时间时,会产生一个系统的复位信号。没有设置为看门狗模式时也可以作为一般的定时器使用,可以选择时钟源(ACLK,MCLK),每个时钟源下有4个可选的时间间隔设置,通过软件来设置。

看门狗寄存器(WDTCTL)

小q截图-20130710085212.jpg

口令字节:5AH,否则产生系统复位信号

CNTCL:1,清除WDTCNT寄存器内容;0,不影响WDTCNT寄存器内容

TMSEL:1,定时器模式;0,看门狗模式

SEL;1,ACLK做时钟信号;0,SMCLK做时钟信号

IS0,IS1:看门狗时间间隔选择

 

    例程:P3.4外接LED,LED闪烁周期约为64ms。

#include  

void main(void)

{

  WDTCTL = WDT_MDLY_32;            //设置看门狗工作在SMclk下定时  器,定时间隔约32ms

  IE1 |= WDTIE;                                                   //开看门狗中断

  P3DIR |= BIT4;                                                   //设置p3.4为输出

_BIS_SR(LPM0_bits + GIE);                              //进入LMP3并打开全局中断

}

 // Watchdog Timer interrupt service routine

#pragma vector=WDT_VECTOR

__interrupt void watchdog_timer(void)

{
  P3OUT ^= BIT4;                            // 取反P3.4

 }

 

   SMCLK工作在1Mhz下的定时间隔为32ms,复位后SMCLK默认时钟来源是DCO(上电复位后约为800HZ),所以定时间隔会比32ms长一些。

 

2 Timer_A(定时器A)

   定时器A是一个16位的定时/计数器。它有3个捕获/比较寄存器。

小q截图-20130710105128.jpg
 
小q截图-20130710105151.jpg
 
 
Timer_A寄存器
 
小q截图-20130710115014.jpg
 
 
定时器使用时4种工作模式: 
  停止模式:定时器处于暂停状态。
   增计数模式 :当定时计数器增到CCR0时捕获比较中断CCIFG标志置位。
小q截图-20130710123654.jpg
   连续计数模式:从0开始到0FFFFH再从0开始,当回到0时TAIFG置位(TAIFG为溢出标志)但并不中断,只有TAIE=1时才可以产生中断。可以设置不同的CCR0的值来产生中断CCIFG。小q截图-20130710124151.jpg
   增/减计数模式: 当增到CCR0时CCIFG置位,当减到0时TAIFG置位(TAIFG为溢出标志)。
 
小q截图-20130710124715.jpg
 
 
 
例程:利用Timer_A直接计数产生溢出,然后中断处理。
    ACLK=TACLK=32768hz,MCLK=SMCLK=default DCO~800KHZ   P1.0外接LED
 
#include
 void main (void)
   WDTCTL = WDTPW + WDTHOLD;  //关闭看门狗
  TACTL = TASSEL_1 + MC_2 +TAIE;//ACLK,定时器A连续计数
                               //模式,开中断
                                  
   P1DIR |= BIT0;               //设置P1.0为输出
   _BIS_SR(LPM3_bits+GIE);      //进入LPM3,开全局中断
 
}
 
 //Timer_A中断向量(TAIV)处理程序
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A(void)
 
{
   switch(TAIV)        //应用switch语句来处理多中断源的向量
 
 {
    case 2:break;      //CCR1捕获比较寄存器中断入口
                      //本例未用到
    case 4:break;      //CCR2捕获比较寄存器中断入口
 
    case 10: P1OUT ^=BIT0;break;//定时器A在计满16位时将产生
                             //溢出中断,进入中断
   
  }
 
}
 
    
 
 
 

 

文章评论1条评论)

登录后参与讨论

用户426745 2013-7-15 15:43

不错哟,学习了
相关推荐阅读
用户1629625 2013-10-23 11:35
【博客大赛】mini2440串口助手测试
mini开发板上的CON1,2 ,3分别对应cpu的UART0,1,2,3。因为只有UART0已经转换为RS232电平。为了避免麻烦就直接用UART0测试。 连接好PC,打开开发板 上的“串口...
用户1629625 2013-10-22 19:45
【博客大赛】win7安装超级终端连接mini2440
win7没有xp自带的超级终端,必须自己安装。 其实就可以直接使用xp自带的超级终端文件,可下载:http://download.csdn.net/detail/kimherojae/6337...
用户1629625 2013-10-21 20:46
【博客大赛】mini2440 fedora9建立交叉编译
    在LINUX平台下,要建立交叉编译环境。  1 将  资料中linux中的arm-linux-gcc-4.4.3.tar.gz复制到 某个 目录下如/tmp,然后进入该目录并解压 ...
用户1629625 2013-10-10 09:48
【博客大赛】mini2440和PC机虚拟机ping
连接好开发板附带的网线连好mini2440开发板和PC机,查看pc机和开发板IP。 查看PC机IP方法1,win+r,cmd,ipconfig(即菜单->运行cmd进入界面输入ipcon...
用户1629625 2013-10-01 20:30
【博客大赛】虚拟机 fedora9上网设置
桥连接(briged方式) 1 禁用VMware Network Adapter VMnet1和VMware Network Adapter VMnet8 打开网络共享中心,点击更改适配器...
用户1629625 2013-08-08 20:27
【博客大赛】MSP430MSP430学习笔记--USART的同步模式SPI
   当MSP430F149的USART模块控制器UxCTL的SYNC位置位时,串行模块工作在SPI模式,通过4线(SIMO,SOMI,UCLK及STE)或者3线(SIMO,SOMI,UCLK)同...
我要评论
1
17
关闭 站长推荐上一条 /2 下一条