您的位置:首页 > 其它

Contiki开发5:Hello,Contiki

2016-07-15 22:54 543 查看
Contiki开发5:Hello,Contiki

1 引言

介绍了这么多Contiki和移植的文章,真该写点代码了,要知道,C语言才是嵌入式软件工程师的“母语”。本篇来个轻松的编码:Hello, Contiki.

2 代码实例

代码清单如下:

/*---------------------------------------------------------------------------*/

PROCESS(demo_process, "demoprocess");                              1

/*---------------------------------------------------------------------------*/

PROCESS_THREAD(demo_process, ev, data)                         2

{

    staticstruct etimer    timer;                                                       3

   PROCESS_BEGIN();                                                               4

   etimer_set(&timer, CLOCK_CONF_SECOND); /* 1s */           5

   while (1)                                                                                   6

    {

        PROCESS_YIELD();                                                           7

       if (PROCESS_EVENT_TIMER == ev)                                 8

       {

           chip_LEDToggle();                                                           9

           dp_Tx("Hello, Contiki.\r\n", 17);                                      10

           etimer_restart(&timer); /* For next! */                              11

       }

       else

       {

           ASSERT(!"demo_process(): Bad event!.\r\n");              12

       }

    }

   PROCESS_END();                                                                 13

}

3 时序逻辑

这是一个入门级的代码,它实现每隔1秒打印Hello,Contiki.和翻转一个LED灯,当然,它需要另外一个进程etimer每隔1秒post一个消息。

4 深入剖析

这个仅13行的代码较好地说明了Contiki开发的特征。

Line#1:C语言宏定义,用于申明一个进程结构体;

Line#2:C语言宏定义,用于申明一个函数,该函数是进程的方法;

深入理解上述2个宏定义,请链接

        http://blog.csdn.net/jiangjunjie_2005/article/details/44600365

Line#3:申明一个etimer结构体,注意,如果去掉static将会出错,原因链接:

        http://blog.csdn.net/jiangjunjie_2005/article/details/44725997

Line#4和Line#13:必须将Contiki进程所有代码囊括其中。

Line#5:设置etimer定时间隔为1秒;

Line#6:一个进程本质就是一个无限循环;

Line#7:进程阻塞自己,嵌入式系统的进程“很懒”,仅当有外部刺激----消息

到来时,才执行响应;

Line#8:判断消息是否为etimer的1秒超时;

Line#9:翻转LED,增加亮点和快乐,而已;

Line#10:通过UART口打印“Hello,Contiki.”,有回车换行;

Line#11:重新启动etimer,为下1秒定时;

Line#12:捕捉错误消息,更多原理请链接:

         http://blog.csdn.net/jiangjunjie_2005/article/details/51869953
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息