CC2530喂狗测试程序

CC2530喂狗测试程序

按键和LED电路

在这里插入图片描述

设计思路

看门狗是在程序跑飞后,进行的电路复位工作。正常应用下,每1s喂一次看门狗,程序正常运行。当超时不喂狗时,意味着程序跑飞,看门狗复位。为了能够测试看门狗的功能,这里用按键模拟程序跑飞的状态,设计如下:

  • 当正常喂狗时,LED按照延时程序进行闪烁(<1S)
  • 当按键按下阻止喂狗后,LED按照看门狗复位时间进行闪烁(==1S)
#include "ioCC2530.h"     

unsigned int counter;

void delay(void)
{
  unsigned int i;
  unsigned char j;

  for(i=0;i<1500;i++)
  {
    for(j=0;j<200;j++)
    {
      asm("NOP");
      asm("NOP");
      asm("NOP");
    }
  }
} 

void Init_Watchdog(void)
{
  WDCTL = 0x00;       //时间间隔一秒,看门狗模式
  WDCTL |= 0x08;      //启动看门狗
}
void WatchDog(void)  //喂狗函数
{
  WDCTL = 0xa0;
  WDCTL = 0x50;
}

void main( void )
{
  P0DIR |= 0x01;  //设置P0.0为输出方式;P0.4为输入方式
  P2DIR |= 0x01;  //设置P2.0为输出方式
  P0_0 = 1; 
  P2_0 = 1;       //熄灭LED
  counter = 0;
  CLKCONCMD &= ~0x40;          //选择32M晶振
  while(!(SLEEPSTA & 0x40));   //等待XSOC稳定
  CLKCONCMD = 0xb8;            //TICHSPD 128分频,CLKSPD 不分频
  SLEEPCMD |= 0x04;            //关闭不用的RC 振荡器
  Init_Watchdog();
  EA = 1;     //开总中断
  delay();
  delay();
  
  while(1){
    WatchDog();   //喂狗
    delay();
    P0_0=~P0_0;
    if (P0_4 == 0){
      delay();
      if (P0_4 == 0) while(P0_4 == 0);  //按住按键不放,阻止喂狗
    }
  }
} // end of main()


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值