购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第五章

实例三
——定时器

5.1 通用定时器

5.1.1 通用定时器概述

可编程定时器用于计时或计数驱动定时器(计数器)输入引脚的外部事件。CC3200 通用定时器模块GPTM包括 16 位或 32 位GPTM块。每个 16 位或 32 位GPTM提供可以配置为独立操作的定时器或事件计数器,或者组合为 32 位定时器的两个 16 位定时器/计数器(Timer A 和Timer B)。

GPTM包括四个具有以下功能选项的 16 位或 32 位GPTM块:

1)多种操作模式

——16 位或 32 位可编程单次定时器/计数器

——16 位或 32 位可编程周期定时器/计数器

——带 8 位预分频器的 16 位通用定时器/计数器

——带 8 位预分频器的 16 位输入边缘计数或时间捕获模式

——带 8 位预分频器和软件可编程PWM信号置反输出的 16 位PWM模式

2)向上或向下计数

3)16 个 16 位或 32 位捕获比较PWM引脚(Capture Compare PWM Pins, CCP)

4)支持调试期间用户操作的CPU暂停功能

5)确定断言定时器中断和进入中断服务程序之间时间的能力

6)使用μDMA高效传输:

——用于每个定时器的专用通道;

——定时器中断产生的突发请求

7)从系统时钟运行(80 MHz)

可用的CCP引脚和PWM输出/信号引脚如表 5.1。

表 5.1 可用的CCP引脚和PWM输出/信号引脚

设置通用定时器信号引脚复用以及GPIO PAD CONFIG寄存器中的CONFMODE位,可以实现通用定时器功能选择。

5.1.2 通用定时器寄存器映射

表 5.2 列出了通用定时器的内存映射寄存器。表中所有未列出的偏移地址为保留位置,且相应位置寄存器内容无法修改。

表 5.2 通用定时器寄存器

关于通用定时器寄存器详细编程信息,请参见CC3200 Technical Reference Manual技术参考手册 【1】

5.1.3 通用定时器功能描述

每个通用定时器模块GPTM的功能由软件控制,通过寄存器接口配置。Timer A和Timer B可以分开使用,在这种情况下,对于 16/32 位GPTM而言,拥有 16 位的计数范围。此外,对于 16/32 位GPTM,可以将 Timer A和Timer B组合成拥有 32 位计数范围的通用定时器。

需要注意的是,当通用定时器分开使用时,才可以使用预分频器。当单次或周期向下计数时,预分频器充当真正的预分频器,并包含计数的最低有效位。当单次或周期向上计数时,预分频器用作定时器扩展,并保留计数的最高有效位。在输入边沿计数、输入边沿计时和PWM模式下,无论计数方向如何,预分频器始终用作定时器扩展。每个通用定时器模块GPTM的工作模式如表 5.3。

表 5.3 通用定时器工作模式

软件通过配置寄存器GPTMCFG、定时器A模式寄存器GPTMTAMR、定时器B模式寄存器GPTMTBMR配置通用定时器模块GPTM。当处于组合模式时,定时器A和定时器B仅可运行在同一模式,且必须使用定时器A的控制和状态位,而无须使用定时器B的控制和状态位。当处于分开模式时,定时器A和定时器B可以分别配置在任何分开模式中。通过往GPTMCFG寄存器写 0x4 可以将通用定时器模块GPTM设置为分开模式。计数方向向下时,超时事件数值为 0x0,计数方向向上时,数值为定时器n间隔装载寄存器GPTMTnILR数据和可选的定时器n预分频寄存器GPTMTnPR数据。

使用通用定时器GPTM时,必须设置GPTnCLKCFG或GPTnCLKEN寄存器中的CLKEN位。配置GPIO_PAD_CONFIG寄存器的CONFMODE域可以给CCP信号指定合适的引脚。在使用CCP模式之前,需要合适地设置GPTTRIGSEL位。使用GPTnSWRST寄存器可以复位通用定时器GPTM。通用定时器GPTM支持一次或周期性定时器模式、输入边沿计数模式、输入边沿计时模式、PWM模式等四种工作模式。关于通用定时器GPTM各个工作模式的初始化和配置及详细信息,请参见CC3200 Technical Reference Manual技术参考手册 【1】

5.2 看门狗定时器

5.2.1 看门狗定时器概述

CC32OO应用处理器集成了一个由系统时钟驱动的看门狗定时器(Watchdog Timer, WDT)。在CC3200 中的看门狗定时器运用中计数值达到超时值时,定时器产生一个定期中断或复位。当系统由于软件错误或外部设备错误而失效时,看门狗定时器可以重新获得系统控制。

看门狗定时器具有以下特征:

1)带可编程加载寄存器的 32 位向下计数计数器

2)软件失控时锁定寄存器保护

3)无法禁用复位生成

4)支持调试期间用户操作的CPU暂停功能

看门狗定时器可以配置为在第一次超时产生中断信号至处理器,第二次超时时产生复位信号。一旦配置了看门狗定时器,就可以写入锁定寄存器,以防止意外更改定时器配置。看门狗定时器模块支持运行(RUN)模式下的 80 MHz系统时钟。用于WDT的时钟配置,具体请参见CC3200 Technical Reference Manual技术参考手册 【1】 中的配置寄存器APRCM:WDTCLKEN。

5.2.2 看门狗定时器寄存器映射

表 5.4 列出了看门狗定时器的寄存器。列出的寄存器偏移地址是相对于看门狗定时器的基地址为 0x4000.0000 的十六进制增量。

表 5.4 看门狗定时器寄存器映射

5.2.3 看门狗定时器功能描述

当看门狗定时器WDT有效且 32 位计数器达到 0 状态时,看门狗定时器模块产生第一次超时信号(中断)。使能计数器也就意味着使能看门狗定时器中断。看门狗定时器可配置为在第二次溢出产生复位。看门狗定时器中断是可屏蔽的。

在第一次超时事件之后,采用看门狗定时器装载寄存器WDTLOAD中的数值重新装载 32 位计数器,定时器重新从该值往下计数。一旦看门狗定时器完成配置,看门狗定时器锁定寄存器WDTLOCK被置位,以避免定时器配置被软件更改的情况发生。

在第一次超时中断被清除后,如果定时器再次计数到 0,看门狗定时器将向系统声明其复位信号。在 32 位计数器处于第二次超时状态之前,如果中断被清除,32 位计数器将重新装载WDTLOAD中的数值,定时器重新从该值往下计数。当看门狗计数器计数时,如果WDTLOAD写入了新的数值,计数器将装载新的数值,并继续计数。写WDTLOAD寄存器并不会清除有效的中断。通过写看门狗中断清除寄存器WDTICR,可以明确清除某个中断。

系统重置之后,看门狗定时器默认为禁用。系统可以在复位向量启动阶段有效看门狗定时器。应用通过读取GPRCM:APPS_RESET_CAUSE[7:0]寄存器来判断复位是否由WDT引起。系统唤醒时会伴随着WDT复位,此时该寄存器的读数为 0x0101。

5.2.4 看门狗定时器初始化及配置

看门狗定时器配置流程如下:

1)通过设置看门狗定时器时钟有效寄存器WDTCLKEN中的RUNCLKEN位来有效外围时钟;

2)使用看门狗定时器软件复位寄存器WDTSWRST来复位看门狗模块;

3)使用期望的定时器装载值赋值WDTLOAD寄存器;

4)设置WDTCTL寄存器中的INTEN位,以有效看门狗、有效中断、锁定控制寄存器。

如果软件要求锁定所有看门狗寄存器,往WDTLOCK寄存器写任何值,可以完全锁定看门狗定时器模块。往WDTLOCK寄存器写 0x1ACC.E551,可以解锁看门狗定时器。

周期性地往WDTLOAD寄存器重新装载计数值,以重新启动看门狗定时器计时。如果看门狗未得到足够的服务,使用WDTCTL寄存器中的INTEN位可以有效中断,允许处理器尝试纠正措施。如果使用中断服务例程失效无法恢复,使用WDTCTL寄存器中的RESEN位可以复位系统。

5.3 定时器程序

5.3.1 通用定时器示例程序

示例程序中,系统采用CC3200 外围驱动库中的定时器API,实现对定时器的控制。应用演示了 16 位定时器产生中断以变更GPIO输出状态及转换LED状态。具有不同定时值(0.5s,1.0s)的两个定时器循环地变更相应GPIO输出状态,以驱动两个不同的LED,实现LED闪烁效果。通用定时器示例程序的中断处理程序如下:

通用定时器示例程序的主程序如下:

5.3.2 看门狗定时器示例程序

程序中,看门狗定时器的计时周期为 1000 毫秒。主程序中,先初始化看门狗定时器,并注册看门狗中断处理函数;检查看门狗定时器是否已有效,若有效,则继续运行后续程序,若无效,则取消初始化看门狗定时器再运行后续程序。

看门狗定时器中断处理函数计数看门狗的中断数目,清除中断,切换LED显示;若中断次数超过阈值,则不清楚中断,看门狗定时器计数值下一次达到超时值时,则产生复位信号至CC3200 嵌入式处理器。 UtVW8QBvfPey9Y7VYbM1PV+LpmPjO9gcsXbLtYjr93GGLe60I9xOdAdT07t4gLKt

点击中间区域
呼出菜单
上一章
目录
下一章
×