第一范文网 - 专业文章范例文档资料分享平台

S.D.Lu的MSP430入门学习笔记(5):看门狗定时器和低功耗模式

来源:用户分享 时间:2025/7/24 10:02:22 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

S.D.Lu的MSP430入门学习笔记(5):

看门狗定时器和低功耗模式

看门狗定时器WDT最简单的应用例程是“msp430g2xx2_wdt_04.c”

程序运行结果是P1.0口输出约33.6Hz的方波信号。为什么是33.6Hz呢?

即上电清零(PUC)后,WDT的时钟来源是DCOCLK,约1.1MHz,其复位间隔为32768个时钟周期,所以P1.0口的芯片频率=1.1MHz/32768≈33.569Hz。

代码分析:

78行,程序运行到这来之后进入低功耗模式LPM4,所有时钟均停止,振荡器被禁止。但DCO除外,因为禁用DCO是有条件的。

在本例中,DCOCLK被用作MCLK和SMCLK,所以不能被关闭。 程序运行到78行时,CPU停止运行,但是WDT依然由DCOCLK驱动着,每经过32768个DCOCLK周期就产生一个上电清零PUC,退出LPM4低功耗模式,CPU被唤醒,程序会调到main函数入口重新运行。所以每32768个DCOCLK周期,76~78行代码被执行一次,从而在P1.0口输出约33.6Hz的方波信号。

低功耗模式:

MSP430有5种运行模式,使用状态寄存器SR内的CPUOFF,OSCOFF,SCG0和SCG1位来配置低功耗模式0到4。

在程序中,进入低功耗模式的操作很简单,调用相应的宏定义即可。

本例中78行调用的是本征函数_BIS_SR();,更直观和简单的写法的调用上图中的宏。 如:_BIS_SR(LPM4_bits); 可以写成:LPM4;。

在实际应用中,经常会在进入低功耗模式时打开全局中断,以便中断能够唤醒CPU处理各种事件。所以经常用_BIS_SR(LPMx_bits + GIE);语句进入低功耗模式。当然也可以单独打开和关闭全局中断,分别使用_BIS_SR(GIE);和_BIC_SR(GIE);语句。

低功耗模式的退出 TI官方例程“msp430g2xx2_wdt_01.c”的代码如下。

其运行结果是,P1.0口输出频率约为16Hz的方波。

如果将程序内容改为

其运行结果是,P1.0口输出频率约为16Hz的方波,P1.6口输出频率约为78KHz的方波。

如果将87行的LPM0_EXIT;屏蔽掉,则P1.0口输出频率约为16Hz的方波,P1.6口无方波输出。这说明在本例中,如果在WDT中断函数中没有执行LPM0_EXIT;语句,则76~79行无法被执行,程序会在执行完75行的代码后进入LPM0模式。

在低功耗模式下,一个被启用的中断事件将MSP430从任一低功耗模式中唤醒。如果在中断服务函数中没有退出低功耗模式,即没有执行LPMx_EXIT;语句,则执行完中断服务函数后,CPU会重新进入低功耗模式。

看门狗定时器:

MSP430的看门狗定时器WDT有两种工作模式:看门狗模式和定时器模式。

WDT的计数器WDTCNT是一个16位的不能直接用软件访问递增计数器。WDTCNT通过安全装置定时器+控制寄存器WDTCTL来控制WDTCNT和选择时间间隔。WDTCNT可以来源于ACLK或SMCLK。用WDTSSEL位时钟源选择。

看门狗模式下,WDT的作用是在程序运行出现异常时复位CPU,保障系统安全。定时器模式下,WDT用于产生一个定时时间,也可以用于产生一个定时中断。

因为WDT的计数器WDTCNT不能直接用软件访问,这能选择几个定时时间。 例程“msp430g2xx2_wdt_07.c”代码如下。

73~81行,用于选择不同的定时间隔,产生PUC的频率不同,程序运行的结果是,在P1.0输出不同频率的方波。

例程“msp430g2xx2_wdt_01.c”代码如下。

71行,WDT_MDLY_32可以换成下面宏定义中的其他值,可以得到不同的WDT中断频率,程序运行的结果是,在P1.0输出不同频率的方波。

注意,注释中所标示的时间间隔是有前提条件,那就是SMCLK=1MHz,

ACLK=32768Hz。

72行,使能WDT中断。75行,使能全局中断,并进入LPM0模式。

“msp430g2xx2_wdt_07.c”和“msp430g2xx2_wdt_01.c”两个例程使用了WDT的不同模式,前者使用看门狗模式,后者使用的是定时器模式。每种模式只有8种时间间隔可以选择。

WDT相关的寄存器有三个,WDTCTL、IE1、IFG1,其各个位的功能定义请查看用户指南。应该注意的是,WDTCTL是一个16位寄存器,其高8位为操作密码。每次写入WDTCTL时,高8为必须写入0x5A,即操作密码,否则就会产生一个PUC。读WDTCTL时,其高8位总是0x69。

作者:S.D.Lu 深圳 2014-3-26

S.D.Lu的MSP430入门学习笔记(5):看门狗定时器和低功耗模式.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0qel69v6sz553962zwn8_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top