木子剑
生命不熄,学习不止!

事情是这样的

很简单的etimer事件,我一直是这样写的,一直没有问题:

 

struct etimer timeout2; //声明ETMIER事件 

PROCESS(hello_world_process2, "Hello world process2");//申请线程process1测试etimer

PROCESS_THREAD(hello_world_process2, ev, data)//进程1的功能体
{
   PROCESS_BEGIN();//开始
   etimer_set(&timeout2,CLOCK_SECOND*1);//从当前时间起的,为XXX的时间事件
   leds_init();//初始LED相关,CONTIKI驱动包leds.c功能

while(1)
{
    PROCESS_WAIT_EVENT();//进行等待
   if(ev == PROCESS_EVENT_TIMER) {//如果时间到了就打印信息,如果事件产生??
   leds_toggle(LEDS_D2);//leds_init()初始化好所以可用了 RC7
   printf("process2,The LEDS_D2 is:%u\n",leds_get());//打印LED2的状态
}
etimer_reset(&timeout2);//复位时间,周而复始
}
PROCESS_END();//结束,与PROCESS_BEGIN()配对!
}

 

 

无意中看到大神这么写,我也试了一下:

 

PROCESS(hello_world_process2, "Hello world process2");//申请线程process1测试etimer

PROCESS_THREAD(hello_world_process2, ev, data)//进程1的功能体 

   struct etimer timeout2; //声明ETMIER事件    

   PROCESS_BEGIN();//开始

  。

  。

  。

也就是把struct etimer timeout2定义放在PROCESS_THREAD内部了,

结果呢,在IAR运行STM32仿真时候,一直中断到:

void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs 发生硬故障异常时转到无限循环*/
while (1)
  {
  }
}

哈哈,刚开始以为硬件坏了,拿以前的代码测试,发现硬件完全没问题。

解决办法就是

struct etimer timeout2; //声明ETMIER事件  

PROCESS(hello_world_process2, "Hello world process2");//申请线程process1测试etimer

PROCESS_THREAD(hello_world_process2, ev, data)//进程1的功能体 

   //struct etimer timeout2; //声明ETMIER事件    

   PROCESS_BEGIN();//开始

  。

  。

  。

 

乱,很乱!做为小白加新手,很容易被网上乱发的代码、错误的代码所误解。拜托这些所谓的大神们,网上言论是自由,但是别误人子弟好不好,

像我这样的新手入门不容易,发布验证过的代码例子也是一种美德!!

 

 

2019年07月20日 发现官方例子

/*---------------------------------------------------------------------------*/
PROCESS_THREAD(blink_process_4, ev, data)
{
static struct blink_process_ctx ctx;

PROCESS_BEGIN();

ctx.button = &button_4;
ctx.c = 0;
ctx.led = LEDS_4;
ctx.button->configure(SENSORS_ACTIVE, 1);

while (1) {
PROCESS_WAIT_EVENT();
handle_event(ev, data, &ctx);
}

PROCESS_END();
}
 
加上static修饰后,这样也是可以的,也不报错了!我眼睛不好使。。。:) ,   
但是大神为什么也把static去掉了?     难道变量的作用域都没搞清楚的大神???
 
时间:2022-01-16
关于static,在随记中-----》  C++静态对像   ,再一次进行深入分析,这个不管是在C 还是C++,都很重要!
posted on 2019-07-18 18:07  木子剑  阅读(202)  评论(2编辑  收藏  举报