找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6437|回复: 0
打印 上一主题 下一主题
收起左侧

CC2530看门狗系统源程序与详细讲解

[复制链接]
跳转到指定楼层
楼主
看门狗是在软件跑飞的情况下CPU自恢复的一个方式,当软件在选定的时间间隔内不能置位看门狗定时器(WDT),WDT就复位系统。看门狗可用于电噪声,电源故障或静电放电等恶劣工作环境或高可靠性要求的环境。如果系统不需要应用到看门狗,则WDT可配置成间隔定时器,在选定时间间隔内产生中断。 WDT的特性如下:4个可选择的时间间隔看门狗定时器模式下产生中断请求时钟独立于系统时钟,WDT包括一个15位定时/计数器,它的频率由32.768KHz的晶振决定。用户不能查看计数器的值工作于各个电源模式。让用户了解几种看门狗定时器的使用


单片机源程序如下:
  1. /****************************************************************************
  2. * 文 件 名: main.c
  3. * 作    者: Andy
  4. * 修    订: 01-09
  5. * 版    本: 1.0
  6. * 描    述: 打开看门狗后,得记得喂狗,不然系统就会不停地复位了
  7. ****************************************************************************/
  8. #include <ioCC2530.h>

  9. typedef unsigned char uchar;
  10. typedef unsigned int  uint;

  11. #define LED1 P1_0       // P1.0口控制LED1
  12. #define LED2 P1_1       // P1.1口控制LED2


  13. /****************************************************************************
  14. * 名    称: DelayMS()
  15. * 功    能: 以毫秒为单位延时 16M时约为535,系统时钟不修改默认为16M
  16. * 入口参数: msec 延时参数,值越大,延时越久
  17. * 出口参数: 无
  18. ****************************************************************************/
  19. void DelayMS(uint msec)
  20. {
  21.     uint i,j;
  22.    
  23.     for (i=0; i<msec; i++)
  24.         for (j=0; j<535; j++);
  25. }

  26. /****************************************************************************
  27. * 名    称: InitLed()
  28. * 功    能: 设置LED灯相应的IO口
  29. * 入口参数: 无
  30. * 出口参数: 无
  31. ****************************************************************************/
  32. void InitLed(void)
  33. {
  34.     P1DIR |= 0x03;      //P1.0、P1.1定义为输出
  35.     LED1 = 1;           //默认LED灯为熄灭状态
  36.     LED2 = 1;
  37. }


  38. void Init_Watchdog(void)
  39. {
  40.     WDCTL = 0x00;       //打开IDLE才能设置看门狗
  41.     WDCTL |= 0x08;      //定时器间隔选择,间隔一秒
  42. }

  43. void FeetDog(void)
  44. {
  45.     WDCTL = 0xa0;       //清除定时器。当0xA跟随0x5写到这些位,定时器被清除
  46.     WDCTL = 0x50;
  47.     LED2 = 0;           //系统不复位LED2灯长亮
  48. }

  49. /****************************************************************************
  50. * 程序入口函数
  51. ****************************************************************************/
  52. void main(void)
  53. {
  54.     InitLed();                //调用初始化函数
  55.     Init_Watchdog();

  56.     while(1)
  57. ……………………

  58. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
15.看门狗.zip (303.76 KB, 下载次数: 14)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表