完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
定时器
定时器模块是MSP432单片机中非常重要的资源,可以用来实现定时控制、延时、频率测量、脉宽测量以及信号产生等。此外,还可以在多任务的系统中作为中断信号实现程序的切换。例如在MSP432单片机实时控制和处理系统中,需要每隔一定时间就对处理对象进行采样,再对获得的数据进行处理,这就要用到定时信号。 MSP432单片机的定时器模块功能如下: (1)看门狗定时器:基本定时,当程序发送错误时执行一个受控的系统重启动; (2)16位定时器A:基本定时,支持捕获输入信号、比较产生PWM波形等功能; (3)32位定时器:基本定时,功能基本同定时器A,但比定时器A灵活,功能更强大; (4)定时时钟:基本定时,日历功能。 看门狗相关知识 看门狗相关知识 看门狗定时器 MSP432单片机内部集成了看门狗定时器,既可作为看门狗使用,也可为产生时间间隔进行进行定时。当用作看门狗时,若定时时间到,将产生一个系统复位信号;如果在用户应用程序中,不需要看门狗,可将看门狗定时器用作一般定时使用,在选定的时间间隔到达时,将发生定时中断。 看门狗定时器具有如下特点:
看门狗定时计数器(WDTCNT) 看门狗定时计数器是一个32位增计数器,不能通过软件直接访问其计数值。软件可通过看门狗控制寄存器(WDTCTL)控制看门狗定时计数器及配置其产生的时间间隔。看门狗定时计数器的参考时钟源可通过WDTSSEL控制位配置为SMCLK、ACLK、VLOCLK或BCLK,产生的时间间隔可通过WDTIS控制位选择,具体请参考相应的寄存器配置。 注意:当CPU停止工作时,看门狗定时计数器会自动配置为停止计数,这样可以在程序开发和调试中,不必禁用看门狗定时器,或者当CPU停止工作时,如果计数器被允许继续运行,则不会不断地出现看门狗启动的复位。 看门狗定时器模块可以通过配置WDTCTL寄存器,使其工作在看门狗模式或定时计数模式。WDTCTL是一个16位的带密码保护的读写寄存器。对WDTCTL的配置需要先在高字节写入密码Ah,写入其它内容都会产生错误。若产生错误后,读WDTCTL高字节的结果是069h。 看门狗模式 在一个上单复位清除后,看门狗定时器被默认配置为采用SMCLK作为参考时钟源,在计数到达之前,需要通过软件设置或停止WDT。例如,如果SMCLK默认来源于设置为3MHz的DCO,则会产生大约10.92ms的看门狗间隔窗口。用户必须在看门狗复位时间间隔期满或另一个复位信号产生之前,配置、停止或清除看门狗定时器。当看门狗定时器被配置工作在看门狗模式时,利用一个错误的口令密码操作看门狗控制寄存器(WDTCTL)或选择的时间间隔期满都将产生一个PUC复位信号,一个PUC复位信号可将看门狗定时器复位到默认状态。 定时计数模式 将WDTTMSEL控制位选择为1,看门狗定时器被配置为定时计数模式。这个模式可以被用来产生周期性中断,在定时计数模式下,当选定的时间间隔到来时,将置位看门狗定时计数中断标志位(WDTIFG),但并不产生PUC复位信号。当看门狗定时计数中断允许控制位(WDTIE)置位,而且在NVIC中启动看门狗定时计数中断时,CPU将响应WDTIFG中断请求。中断请求被响应后,单片机将自动清除看门狗定时计数中断标志。当然,也可以通过软件手动清除看门狗定时计数中断标志位。 看门狗定时器中断 看门狗定时器中断利用以下两个寄存器控制看门狗定时器中断; (1)看门狗中断标志位WDTIFG; (2)看门狗中断允许控制位WDTIE。 当看门狗定时器工作正在看门狗模式时,看门狗中断标志位WDTIFG来源于一个复位向量中断。复位中断复位程序可利用看门狗中断标志位WDTIFG来判定看门狗定时器是否产生了一个系统复位信号。若WDTIFG标志置位,看门狗定时器产生一个复位条件,要么复位定时时间到,要么口令密码错误。 当看门狗定时器工作在定时计数模式时,当定时时间到,将置位看门狗中断标志位WDTIFG。若WTDIE使能,则可响应看门狗定时计数中断。 时钟故障保护功能 看门狗定时器提供了一个时钟故障保护功能,确保在看门狗模式下,参考时钟不失效,这就意味着低功耗模式将有可能影响看门狗定时器参考时钟的选择。如果SMCLK或ACLK作为定时器参考时钟源时失效,看门狗定时器将自动选择VCOCLK作为其参考时钟源。当看门狗定时器工作于定时计数模式时,看门狗定时器没有时钟故障保护功能。 低功耗模式下的看门狗操作 MSP432单片机具有多种低功耗模式,在不同的低功耗模式下,启用不同的时钟信号。程序的需要以及所选时钟的类型决定了看门狗定时器的配置,例如如果用户想用低功耗模式3(LPM3),需要将时钟源设置为BCLK或VLOCLK。当不需要看门狗定时器时,可利用WDTHOLD控制位关闭看门狗计数器(WDTCNT),以减少单片机功耗。 看门狗定时器控制寄存器 看门狗定时控制寄存器(WDTCTL)列表如表6-8所示。 定时器A(Timer_A) Timer_A定时器为16位定时器,具有高达7个捕获比较寄存器。Timer_A支持多路捕获/比较、PWM输出和定时计数。Timer_A也具有丰富的中断能力,当定时时间到或满足捕获/比较条件时,将可触发定时器A中断。 定时器A具有如下特点:
工作模式
MSP432中的定时器——TimerA
增计数模式 增减计数模式 结构框图 定时器A的结构框图如图19-1所示。可见,Timer_A定时器主要分为两个部分:主计数器和捕获/比较模块。主计数器负责定时、计时或计数,计数值(TAR寄存器的值)被送到各个捕获/比较模块中,它们可以在无需CPU千预的情况下根据触发条件与计数器值自动完成某些测量和输出功能。只需定时、计数功能时,可以只使用主计数器部分。在PWM调制、利用捕获测量脉宽、周期等应用中,还需要捕获/比较模块的配合。 16位定时器原理 16位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读取TAR寄存器的计数值。此外,当定时时间到,并且产生溢出时,定时器可产生中断。置位定时器控制寄存器中的TACLR控制位可自动清除TAR寄存器的计数值;同时,在增加计数模式下,清除了时钟分频器和计数方向。 1、时钟源选择和分频器 定时器的参考时钟源可以来自内部时钟ACLK、SMCLK或者来自TACLK、INCLK引脚输入,通过TASSEL控制位进行选择。选择的时钟源首先通过PID控制位进行1、2、4、8分频,对于分频后的时钟,可通过TAIDEX控制位进行1、2、3、4、5、6、7、8分频。 2、Timer_A工作模式 Timer_A共有四种工作模式:停止模式、增计数模式、连续计数模式和增减计数模式,具体工作模式可以通过MC控制位进行选择,具体配置如表19-1所示。 (1)停止模式 停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A定时器工作于增减计数模式并处于下降计数方向,停止模式后,Timer_A仍然工作于增减计数模式下,从暂停前的状态开始继续沿着下降方向开始计数。如若不想这样,则可通过TAxCTL中的TACLR控制位来清除定时器的计数及方向记忆特性。 (2)增计数模式 比较寄存器TAxCCR0用作Timer_A增计数模式的周期寄存器,由于TAxCCR0为16位寄存器,所以在该模式下,定时器A连续计数值应小于0FFFFh。TAxCCR0的数值定义了定时的周期,计数器TAR可以增计数到TAxCCR0的值,当计数值与TAxCCR0的值相等(或定时器值大于TAxCCR0的值)时,定时器复位并从0开始重新计数。增计数模式下的计数过程如图19-2所示。 当定时器计数值计数到TAxCCR0时,置位CCR0中断标志位CCIFG。当定时器从TAxCCR0计数到0时,置位Timer_A中断标志位TAIFG。增计数模式下中断标志位设置过程如图19-3所示。 (3)连续计数模式 在连续计数模式时,Timer_A定时器增计数到0FFFFh之后从0开始重新计数,如此往复。连续计数模式下的计数过程如图19-4所示。 当定时器计数值从0FFFFh计数到0时,置位Timer_A中断标志位TAIFG,连续计数模式下的中断标志位如图19-5所示。 连续计数模式的典型应用如下: 1)产生多个独立的时序信号:利用捕获比较寄存器捕获各种其他外部事件发生的定时器数据; 2)产生多个定时信号:在连续计数模式下,每完成一个TAxCCRn(其中n取值为0~6)计数间隔,将产生一个中断,在中断服务程序中,将下一个时间间隔计数值赋给TAxCCRn,图19-6表示了利用两个捕获比较器TAxCCR0和TAxCCR1产生两个定时信号t0和t1。在这种情况下,定时完全通过硬件实现,不存在软件中断响应延迟的影响,具体实现示意图如图19-6。 (4)增减计数模式 需要对称波形的情况往往可以使用增减计数模式。在该模式下,定时器先增计数到TAxCCR0的值,然后反方向减计数到0。计数周期仍由TAxCCR0定义,它是TAxCCR0值的2倍。增减计数模式下的计数过程如图19-7所示。 在增减计数模式下,TAxCCR0中断标志位CCIFG和Timer_A中断标志位TAIFG在一个周期内仅设置位一次,当定时器计数器增计数从TAxCCR0-1计数到TAxCCR0时,置位TAxCCR0中断标志位CCIFG。当定时器计数器减计数从0001h到0000h时,置位Timer_A中断标志位TAIFG。增减计数模式下中断标志位的设置过程如图19-8所示。 捕获-比较功能 除了主计数器之外,Timer_A定时器还具有高达7个相同的捕获/比较模块TAxCCRn(其中n等于0~6),任何一个捕获/比较模块都可以用于捕获事件发生的时间或产生的时间间隔。每个捕获/比较模块都有单独的模式控制寄存器以及捕获/比较值寄存器。 在比较模式下,每个捕获/比较模块将不断地将自身的比较值寄存器与主计数器的计数值进行比较,一旦相等,就将自动改变定时器输出引脚的输出电平,Timer_A具有8种输出模式,从而可在无需CPU千预的情况下输出PWM波、可变单稳态脉冲、移向方波、相位调制等常用波形。 在捕获模式下,用定时器输入引脚电平跳变触发捕获电路,将此刻主计数器的计数值自动保存到相应的捕获值寄存器中。可以用于测频率、测周期、测脉宽、测占空比等需要获得波形中精确时间量的场合。 捕获/比较模块的逻辑结构如图19-1所示,在此以捕获/比较模块TAxCCR6为例。 (1)捕获模式 当CAP控制位设置为1时,捕获/比较模块配置为捕获模式。捕获模式被用于捕获事件发生的时间。捕获输入CCIxA和CCIxB可连接外部引脚或内部信号,这需通过CCIS控制位进行配置。可通过CM控制位将捕获输入信号触发沿配置为上升沿触发、下降沿触发或两者都触发。捕获事件在所选输入信号触发沿产生,如果产生捕获事件,定时器将完成以下工作: 1)主计数器计数值复制到TAxCCRn寄存器中; 2)置位中断标志位CCIFG; 输入信号的电平可在任意时刻通过CCI控制位进行读取。捕获信号可能会和定时器时钟不同步,并导致竞争条件的产生,将SCS控制位置位可在下个定时器时钟使捕获同步。捕获信号示意图如图19-10所示。 如果第二次捕获在第一次捕获的值被读取之前发生,捕获比较器就会产生一个溢出逻辑,在此情况下,将置位COV标志位,如图19-11所示。注意COV标志位必须通过软件清除。 (2)比较模式 当CAP控制位设为0时,捕获/比较模块工作在比较模式。比较模式用来产生PVM输出信号或者在特定的时间间隔产生中断。此时TAxCCRn的值可由软件写入,并通过比较器与主计数器的计数值TAR进行比较,当TAR计数到TAxCCRn时,将依次产生以下事件:
1)增计数模式下,定时器比较输出 在增计数模式下,当TAR增加到TAxCCRn或从TAxCCR0计数到0时,定时器输出信号按选择的输出模式发生变化。实例如图19-12所示,在该实例中利用了TAxCCR0和TAxCCR1。 2)连续计数模式下,定时器比较输出 在连续计数模式下,定时器输出波形与增计数模式一样,只是计数器在增计数到TAxCCRO后还要继续增计数到OFFFFh,这样就延长了计数器计数到TAxCCR1数值的时间。在连续计数模式下的输出波形如图19-13所示,在该示例中同样利用TAxCCRo和TAxCCR1。 3)增减计数模式下,定时器比较输出 Timer_A中断 16位定时器Timer_A具有两个中断向量,分别如下:
TAxIV中断主要包括TAxCCRn的中断标志CCIFGn和TAIFG中断标志。中断向量寄存器可被用来判断当前被挂起的Timer_A中断,之后通过查中断向量表得到中断服务程序的入口地址,并将其添加到程序计数器中,程序将自动转入中断服务程序。禁用Timer_A中断功能并不影响TAxIV中断向量寄存器的值。 Timer_A寄存器 Timer_A具有丰富的寄存器资源供用户使用,详细列表如表所示。 |
|
|
|
只有小组成员才能发言,加入小组>>
3318 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9063 浏览 16 评论
4088 浏览 18 评论
1183浏览 3评论
609浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
601浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2336浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1897浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 04:00 , Processed in 1.215492 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号