1825|0

9

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430--看门狗定时器 [复制链接]

1.WDT总共有3个寄存器:WDTCTL,IE1,IFG1.

2.WDT interrupt:

看门狗有两种工作模式,watchdog mode, interval mode。

WDTIFG 置位的两种情况:在看门狗模式下发生看门狗溢出。在间隔定时模式下发生定时溢出,且全局中断使能GIE和WDTIE均开启。

WDTIFG在中断服务程序后会自动清除该标记。

3.WDTCTL

  1. WDTPW:必须写0x5A.  
  2. WDTHOLD:停止看门狗就设为1.  
  3. WDTNMIES: NMI下降沿为1,上升沿为0.  
  4. WDTNMI: NMI为1.  
  5. WDTTMSEL:间隔定时器模式设为1.  
  6. WDTCNTCL:通过该位来清除WDT计数器的值 通常设为1表示清除到0.  
  7. WDTSSEL:设置时钟源 ACLK(辅助系统时钟)为1,SMCLK(子系统时钟)为0.  
  8. WDTISx:设置时间间隔。0-3对应不同的分频。
复制代码

4.WDT程序:

默认在中断中SR清零,也就是GIE是0,所以默认不会发生中断嵌套。只有在中断服务程序中打开GIE才能发生中断嵌套。

  1. #include  <msp430x14x.h>  
  2. unsigned int i=0;  
  3. void main(void)  
  4. {  
  5.   WDTCTL = WDT_MDLY_32;                     // Set Watchdog Timer interval to ~30ms  
  6.   IE1 |= WDTIE;                             // Enable WDT interrupt  
  7.   P2DIR =0xFF;                            // Set P1.0 to output direction  
  8.   P2OUT = 0xFF;  
  9.   _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt  
  10. }  
  11.   
  12. // Watchdog Timer interrupt service routine  
  13. #pragma vector=WDT_VECTOR  
  14. __interrupt void watchdog_timer(void)  
  15. {  
  16.   P2OUT = ~(0x80>>(i++));                            // Toggle P1.0 using exclusive-OR  
  17.   if(8==i) i=0;  
  18. }  
复制代码




 
点赞 关注
个人签名

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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