您的位置:首页 > 游戏 > 游戏 > 4g网络架构_衡阳网站推广_正规网络教育培训机构_百度推广seo是什么意思

4g网络架构_衡阳网站推广_正规网络教育培训机构_百度推广seo是什么意思

2025/5/19 14:44:39 来源:https://blog.csdn.net/m0_64569510/article/details/147170267  浏览:    关键词:4g网络架构_衡阳网站推广_正规网络教育培训机构_百度推广seo是什么意思
4g网络架构_衡阳网站推广_正规网络教育培训机构_百度推广seo是什么意思

定时器介绍及简单应用

文章目录

  • 定时器介绍及简单应用
    • 1.定时器基本介绍
      • 1.1MSP430的四种定时器:
    • 2.定时器A(Timer_A)
      • 2.1特点
      • 2.2寄存器的命名
      • 2.3寄存器表格
      • 2.4计数器原理说明
        • 2.4.1时钟源、分频器、计数器、工作模式
        • 2.4.2计数器复位
      • 2.5定时器中断
        • 2.5.1定时器中断条件及标志位
        • 2.5.2中断的中断向量
      • 2.6计数工作模式
      • 2.6寄存器位设置说明
      • 2.7使用TA0定时器点灯(实操)

1.定时器基本介绍

定时器的用途:定时控制,精确延时,频率测量,脉宽测量,信号产生等。

1.1MSP430的四种定时器:

  1. 看门狗定时器:基本定时,当程序发生错误时执行一个受控的系统重启动
  2. 定时器A:基本定时,工作在低频率,低功耗条件下
  3. 定时器B:基本定时,功能基本同定时器A,但更灵活,功能更强大
  4. 实时时钟:基本定时,日历功能

2.定时器A(Timer_A)

2.1特点

定时器A具有如下特点:

  • 4种类运行模式的异步16位定时/计时器
  • 参考时钟源可选择
  • 5/3可配置的捕获/比较寄存器
  • 可配置PWM输出
  • 异步输入和输出锁存
  • 具有可对Timer_A中断快速响应中断向量寄存器

同步和异步的区别:

  • 执行顺序:同步按顺序依次执行任务;异步任务执行顺序不固定,可同时启动多个任务。
  • 阻塞特性:同步通常会阻塞线程,直到操作完成;异步一般是非阻塞的,调用后可继续执行其他代码。
  • 应用场景:同步适用于需保证任务顺序和数据一致性的场景;异步用于处理耗时操作,以提升程序响应速度和性能。

2.2寄存器的命名

MSP430F5529的定时器A由3个形似相近的模块构成。其中TA0有5个捕获/比较器;TA1/2有3个捕获/比较器

命名形式:TAx,TAxCCRx(x与具体型号有关)。

例如:

TA0,TA0CCR0,TA0CCR1,TA0CCR2……TA1,TA1CCR0,TA1CCR1,TA1CCR2……

2.3寄存器表格

寄存器表格

2.4计数器原理说明

2.4.1时钟源、分频器、计数器、工作模式

计数器部件由时钟源选择分频器16位计数器以及工作模式控制组成

时钟源、分频器、计数器、工作模式

2.4.2计数器复位

定时器原理说明

2.5定时器中断

2.5.1定时器中断条件及标志位
  • 中断可以由计时器溢出引起,也可来自捕获/比较寄存器
  • 定时计数器溢出中断标志位时TAIFG
  • TAxCCR0中断标志位TAxCCR0 CCIFG
2.5.2中断的中断向量

定时器A中断有两个中断向量(以TA0为例)

  • TACCR0中断比较特殊,它独自拥有一个中断向量(TIMERO AO VECTOR),是单源中断
  • 定时器溢出中断和其它两个比较/捕获中断共享一个中断向量(TIMERO A1 VECTOR),属于共源中断。

2.6计数工作模式

Timer_A共有4中工作模式:

停止模式增计数模式连续计数模式增/减计数模式

工作模式

  1. 停止模式(MCx=00)
    停止模式下计数器将暂停计数且 TAR 保持计数停止前的内容。
    当定时器启动计数时,计数器将从暂停时的值开始按照事先设置好的计数方式进行计数。
  2. 连续计数模式(MCx=10)
    在连续计数模式下,Timer A定时器增计数到0FFFFh之后从0开始重新计数,如此往复。

连续工作模式

连续计数模式的中断:

  • 计数周期为65536
  • 当定时器计数值从0FFFFh计数到0时,置位TimerA中断标志位,之后又从0开始重新计数。(见上图)

2.6寄存器位设置说明

设置说明

  • 第 15 - 10 位:Reserved(保留位),保留给未来可能的功能扩展使用,一般不进行操作 。
  • 第 9 - 8 位:TASSEL(定时器时钟源选择位 )。
    • 00:选择 TAxCLK 作为时钟源;
    • 01:选择 ACLK(辅助时钟)作为时钟源;
    • 10:选择 SMCLK(系统主时钟)作为时钟源;
    • 11:选择 INCLK(外部输入时钟)作为时钟源。
  • 第 7 位:ID(输入分频位 )。
    • 00:不分频;
    • 01:2 分频;
    • 10:4 分频;
    • 11:8 分频。
  • 第 6 位:MC(计数模式控制位 )。
    • 00:停止模式;
    • 01:增计数模式;
    • 10:连续计数模式;
    • 11:增 / 减计数模式 。
  • 第 5 - 3 位:Reserved(保留位),保留用途,不操作。
  • 第 2 位:TACLR(定时器清除位 ),写 1 时清除定时器 TAxR 和捕获 / 比较寄存器,同时复位分频器,写 0 无响。
  • 第 1 位:TAIE(定时器中断使能位 ),置 1 时使能定时器溢出中断,清 0 时禁止。
  • 第 0 位:TAIFG(定时器溢出标志位 ),定时器计数溢出时置 1,可通过软件清 0 。

2.7使用TA0定时器点灯(实操)

原理:使用定时器TA0,使用SMCLK时钟,连续模式,根据定时器溢出中断来改变灯的状态。

#include "intrinsics.h"
#include "msp430f5529.h"int main(void) {WDTCTL = WDTPW | WDTHOLD; // 停止看门狗定时器,防止其复位系统P1DIR |= BIT0;// 配置定时器A0// TASSEL_2: 选择SMCLK作为时钟源// MC_2: 连续模式(定时器从0计数到最大值后重新开始)// TACLR: 清除定时器计数器// TAIE: 开启定时器溢出中断TA0CTL |= TASSEL_2 + MC_2 + TACLR + TAIE;// 进入低功耗模式0(LPM0),并开启全局中断(GIE)__bis_SR_register(LPM0_bits + GIE);
}#pragma vector = TIMER0_A1_VECTOR
// 定时器A0的中断服务程序
__interrupt void TIMER_A1_ISR(void) {switch (__even_in_range(TA0IV, 14)) {case 0: break;       // 无中断(通常不会发生)case 2: break;       // CCR1 不使用case 4: break;       // CCR2 不使用case 6: break;       // 保留case 8: break;       // 保留case 10: break;      // 保留case 12: break;      // 保留case 14: P1OUT ^= BIT0;//闪烁break;// 定时器溢出中断(TAIFG标志位触发)default: break;      // 默认情况,忽略}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com