定时器A TIMER A 新认识|定时器A 划分几个独立时间间隔

发布者:素心悠远最新更新时间:2022-09-28 来源: csdn关键字:定时器A  TIMER  时间间隔 手机看文章 扫描二维码
随时随地手机看文章

定时器A TIMER A 新认识


现在的认识:


MSP430 5438 有3个时钟,分别是 TA0、TA1 和TB


了解了定时器A的用法:


定时器A可以分成几个独立的时间周期。这几个时钟周期共用一个计数器TA1R 或TA0R。


在头文件中可以查到:


TIMER0 含  TA0CCR0- TA0CCR4 五个


TIMER1 含  TA1CCR0- TA1CCR2 三个 


TA0CCR0TA1CCR0 用于控制计数周期,也就是每当TA0RTA1R 计数到TA0CCR0TA1CCR0所设定的数值后就会清零。


如:


 TA0CCR0 =8000;                             // CCR0必须最大,因为一计数到CCR0即立刻清0,用于   


                                             控制周期 每8000单位时间就触发一次,并TA0R从新 


                                              计数


  TA0CCR1=4000;                             //每4000单位时间就触发一次


  TA0CCR2=1000;                             //每1000单位时间就触发一次


/


/ Timer0 A0 interrupt service routine


#pragma vector=TIMER0_A0_VECTOR


__interrupt void Timer_A0 (void)


{

   

  UART3_SendStr_char("count to CCR0");     //计数到CCR0触发  


}


// Timer_A3 Interrupt Vector (TAIV) handler


#pragma vector=TIMER0_A1_VECTOR


__interrupt void TIMER0_A1_ISR(void)


{


  switch(__even_in_range(TA0IV,14))


  {


    case 0: break;                  


    case 2:  UART3_SendStr_char("count to CCR1");                    //计数至CCR1触发  


            break;


case 4:  UART3_SendStr_char("count to CCR2");                    //计数至CCR2触发 


        break;


    case 6:  break;                         // CCR3 not used


    case 8:  break;                         // CCR4 not used


    case 10: break;                         // CCR5 not used


    case 12: break;                         // Reserved not used


    case 14: break;                        // 溢出触发


            


    default: break;


 }


}


msp430的定时器A 划分几个独立时间间隔

TAIV:


#define TAIV_TACCR1         (0x0002)   


#define TAIV_TACCR2         (0x0004)   


#define TAIV_TAIFG          (0x000A)   


TIMERA1_VECTOR是一个中断向量,主要处理CCR1,CCR2,以及定时器A溢出的中断标志,而CCR1,CCR2,以及定时器A产生中断是的TAIV是不同的,分别是2,4,10


switch( TAIV ) { case 2: break; case 4: break; case 10: P3OUT ^= BIT4; break; }


这一句的意思是,判断是哪个产生中断的,以执行不懂的程序,当然,在里面没写有,但是当你自己去写的时候可自己加进去。


CCR0,CCR1,CCR2


分别是比较/捕获模块1,2,3的比较/捕获寄存器,一般CCR0用来控制周期。


至于具体怎么应用,这是很难解释的,解释了可能你还是不同。最好的办法就是一边写程序,一边查书。


6月2日 周四 晴    定时器A


现在的认识:


MSP430 5438 有3个时钟,分别是 TA0、TA1 和TB


了解了定时器A的用法:


定时器A可以分成几个独立的时间周期。这几个时钟周期共用一个计数器TA1R 或TA0R。


在头文件中可以查到:


#define TIMER1_A1_VECTOR    (48 * 2u)

 #define TIMER1_A0_VECTOR    (49 * 2u)


#define TIMER0_A1_VECTOR    (53 * 2u)

#define TIMER0_A0_VECTOR    (54 * 2u)


TIMER0 含  TA0CCR0- TA0CCR4 五个


TIMER1 含  TA1CCR0- TA1CCR2 三个


TA0CCR0 对应中断向量 A0_VECTOR   


TA0CCR1-4 对应中断向量 A1_VECTOR   


 //A0定时器,用于界面处理

  TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled

  TA0CCTL1 = CCIE;                          // CCR1 interrupt enabled//时间周期1使能

  TA0CCTL2 = CCIE;                          // CCR2 interrupt enabled//时间周期2使能

 TA0CCTL3= CCIE;                          // CCR3 interrupt enabled//时间周期3使能

 //TA0CCTL4= CCIE;                          // CCR3 interrupt enabled//时间周期3使能

  TA0CCR0=256;//TA0R 计数到65535才清零。

  TA0CCR1=4096;  //1s

  TA0CCR2=1024; //1/4

  TA0CCR3=8192;  //2s


  TA0CTL = TASSEL_1+ID_3 + MC_2 + TACLR+ TAIE;     // ACLK, 8分频,MC_2:连续模式, clear TAR 


// Timer1 A0 interrupt service routine

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer_A0 (void)

{

 // TA0CCR0 += 64;// Add Offset to CCR0

  TA0CCR0 += 256;// 1/16s Add Offset to CCR0

  if(ReadUART0_new>0)

    ReadUART0_new--;

   if(ReadUART1_new>0)

    ReadUART1_new--;

 

}



// Timer_A3 Interrupt Vector (TAIV) handler

#pragma vector=TIMER0_A1_VECTOR

__interrupt void TIMER0_A1_ISR(void)

{

  switch(__even_in_range(TA0IV,14))

  {

  case 0:   

    break;

  case 2:

    TA0CCR1 +=4096;                //1s  Add Offset to CCR1

    SecondReach=1;

    CountToMunite++;

    SecondTimecount++;

    if(waringstatus>0)

    {

      //buzzer();

     // waringlight();

    }

    break;                         // CCR4 not used

  case 4:

    TA0CCR2+= 1024;                // 1/2s Add Offset to CCR2

   // buzzer();

   // waringlight();

    break;

  case 6:

    spark++;

     TA0CCR3+=8192;                // 2s Add Offset to CCR3

  // buzzer();

   // waringlight();

    break;

  case 8:

    break;                         // CCR3 not used

  case 10:

    break;                         // CCR5 not used

  case 12:

    break;                         // Reserved not used

  case 14:            

关键字:定时器A  TIMER  时间间隔 引用地址:定时器A TIMER A 新认识|定时器A 划分几个独立时间间隔

上一篇:msp430的中断|中断优先级|中断嵌套
下一篇:【msp430】学习经验总结| 心得体会

推荐阅读最新更新时间:2024-10-27 01:41

定时器A TIMER A 新认识|定时器A 划分几个独立时间间隔
定时器A TIMER A 新认识 现在的认识: MSP430 5438 有3个时钟,分别是 TA0、TA1 和TB 了解了定时器A的用法: 定时器A可以分成几个独立的时间周期。这几个时钟周期共用一个计数器TA1R 或TA0R。 在头文件中可以查到: TIMER0 含 TA0CCR0- TA0CCR4 五个 TIMER1 含 TA1CCR0- TA1CCR2 三个 TA0CCR0TA1CCR0 用于控制计数周期,也就是每当TA0RTA1R 计数到TA0CCR0TA1CCR0所设定的数值后就会清零。 如: TA0CCR0 =8000; // CCR0必须最大,因为一计
[单片机]
msp430的定时器A 划分几个独立时间间隔
TAIV: #define TAIV_TACCR1 (0x0002) #define TAIV_TACCR2 (0x0004) #define TAIV_TAIFG (0x000A) TIMERA1_VECTOR是一个中断向量,主要处理CCR1,CCR2,以及定时器A溢出的中断标志,而CCR1,CCR2,以及定时器A产生中断是的TAIV是不同的,分别是2,4,10 switch( TAIV ) { case 2: break; case 4: break; case 10: P3OUT ^= BIT4; break; } 这一句的意思是,判断是哪个产生中断的,以
[单片机]
MSP430F5529火箭板 --->基于定时器A的LED灯闪烁实验(含Timer_A分析)
一、定时器——Timer_A 在进入正题之前,我们先来了解一下MSP430F5529的定时器,本次实验我们使用Timer_A定时器,这里需要注意的是MSP430F5529一共有3个A类定时器,分别是Timer0_A5、Timer1_A3、Timer2_A3 在这里需要提一下的是Timer_A定时器有6种寄存器,都是以TAx开头,如果该寄存器涉及捕获比较单元的后面会有个n 上面我们大致了解了一下MSP430F5529有关定时器Timer_A的相关寄存器个数和A类定时器的个数,下面我们就寄存器配置方法进行分析: 1、Timer_A框图 在学习使用Timer_A之前我们一定要先大致了解一下Timer_A的流程框图,这有助于我
[单片机]
MSP430F5529火箭板 --->基于<font color='red'>定时器</font><font color='red'>A</font>的LED灯闪烁实验(含<font color='red'>Timer</font>_<font color='red'>A</font>分析)
MSP430F169 Timer_A原理(一)----定时器的四个模式
Timer_A简介 Timer_A是程序设计的核心,它有一个十六位定时器和多路比较/捕获通道组成。每一个比较/捕获通道都以十六位定时器的定时功能为核心进行单独的控制。 Timer_A特点 1、具有四种工作模式的异步16位定时器/计数器 2、可选择和可配置的时钟源 3、三个可配置的捕获/比较寄存器 4、具有 PWM 功能的可配置输出 5、异步输入和输出锁存 6、用于快速解码所有 Timer_A 中断的中断向量寄存器 Timer_A定时器框图和MSP430F169引脚图 启动定时器 定时器时钟可以来自 ACLK、SMCLK或外部通过 TACLK 或 INCLK。时钟源通过 TASSELx 位选择。选定的时钟源可以直接传递给定时
[单片机]
MSP430F169 <font color='red'>Timer</font>_<font color='red'>A</font>原理(一)----<font color='red'>定时器</font>的四个模式
MSP430f2619学习—Timer_A定时器
1、定时器时钟图 2、Timer_A寄存器配置 (1)时钟源设置 TACTL |= TASSEL_2 + ID_3 + MC_1 + TACLR; 此处选择SMCLK,8分频,向上计数模式,TACLR位可清TAR计数值; (2)中断配置 MSP430f2619定时器A共有3个捕获/比较寄存器,中断配置涉及到的寄存器:TACTL/TACCTL0/TACCTL1/TACCTL2; 设置方法: TACTL |= TAIE;//溢出中断允许 TACCTL0 |= CCIE;//捕获/比较通道0中断允许 TACCTL1 |= CCIE;//捕获/比较通道1中断允许 TACCTL2 |= CCIE;//捕获/比较通道2中断允许 ,定时
[单片机]
MSP430f2619学习—<font color='red'>Timer</font>_<font color='red'>A</font><font color='red'>定时器</font>
PIC16F877A单片机 (中断与定时器Timer0)
1 基本原理 2 实现代码 主要根据FIGURE 5-1 和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解。但有些寄存器在框图中可能没有说明,所以也需要仔细阅读定时器0的官方文档,即基本原理部分。 /*----------------函数功能: 中断 定时器0 --------------------------*/ #include pic.h // 调用PIC16f87XA单片机的头文件 //#include delay.h //调用延时子函数 __CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关 //__CONFIG(HS&WDTDI
[单片机]
PIC16F877<font color='red'>A</font>单片机 (中断与<font color='red'>定时器</font><font color='red'>Timer</font>0)
PIC16F877A单片机 (中断与定时器Timer1)
1 基本原理 上图中,如果RC0左边外接了外部的晶振,那么T1OSCEN必须置一。这个外部的晶振频率一般都比较低。因为晶振频率越低,一般功耗越低。 为什么这里需要外接晶振呢?保证单片机在休眠模式下还可以计数,这一点是51单片机所不具备的。 2 实现代码 主要根据FIGURE6-2和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解。但有些寄存器在框图中没有说明,所以也需要仔细阅读定时器0的官方文档,即基本原理部分。 /*----------------函数功能: 中断 定时器1 --------------------------*/ #include pic.h // 调用PIC1
[单片机]
PIC16F877<font color='red'>A</font>单片机 (中断与<font color='red'>定时器</font><font color='red'>Timer</font>1)
PIC16F877A单片机 (中断与定时器Timer2)
1 基本原理 2 实现代码 主要根据定时器2的逻辑框图和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解。但有些寄存器在框图中可能没有说明,所以也需要仔细阅读定时器0的官方文档,即基本原理部分。 /*----------------函数功能: 中断 定时器2 --------------------------*/ #include pic.h // 调用PIC16f87XA单片机的头文件 //#include delay.h //调用延时子函数 __CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关 //__CONFIG(HS&WDTDIS&LVPD
[单片机]
PIC16F877<font color='red'>A</font>单片机 (中断与<font color='red'>定时器</font><font color='red'>Timer</font>2)
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved