⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testwdtc.nc

📁 tinyos2.0版本驱动
💻 NC
字号:
module TestWDTC {	  uses interface Boot;  uses interface Leds;  uses interface Timer<TMilli> as Timer;    //uses interface StdControl as TimerControl;    //uses interface HPLWdtC;  uses interface StdControl as WDTControl;  uses interface WDT;}implementation {    enum  {	mode = WDTTEST,  };      uint8_t firstTime;    event void Boot.booted()  {	firstTime = 1;    call WDTControl.start();    call Leds.led0On();//red on    call Leds.led1On();//green on    if (mode == 1 || mode ==2) 	{	  call Timer.startPeriodic(3000);	}	if(mode == 0) 	{	  call Timer.startPeriodic(3000);//HW WDT is 1S, it's better start Timer at periodic >1000ms @lzm	}  }      task void crashMote()//和变量一样,task也要先声明定义再使用 @lzm	{	  call Leds.led2On();	  	  while (1) 	  {    	cli();     	    	WDTCSR |= (1<<WDE) | (0<<WDIE);    	  	    wdt_enable(0);   	      	    while (1)   	    {   		   __asm__ __volatile__("nop" "\n\t" ::);  	    }   	      	    //仅cli,wdtcsr,__asm,:亮,灭  	    //仅wdt_enable,:亮,不灭  	    //全部,:闪,灭,不能重启  	    //mica2,注释while时led2亮,2s后灭;不注释时马上就灭,可见不注释时在mica和imote上的动作一样,但是可以重启。	  }	      }    event void Timer.fired()  {    call Leds.led1Toggle();//green Toggle    //call WDT.start(5000);            if (firstTime) 	{	  firstTime = 0;	  call WDT.start(1000);	} 	 else 	{	  call WDT.reset();	}		 if (mode == 2) 	{	  post crashMote();	}				//call WDTControl.stop();  }//mode0:节点启动,led0,1点亮,timer周期3s,timer fired时led1toggle,WDT设为5s,//mode1: 节点启动,led0,1点亮,timer 7s后启动一次,led1toggle,再过5s节点reset,//mode2: 节点启动,led0,1点亮,timer周期3s,timer fired时led1toggle,crashmote, led2点亮,5s后节点reset//timer > WDT的情况}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -