Contiki开发5:Hello,Contiki
2016-07-15 22:54
543 查看
Contiki开发5:Hello,Contiki
/*---------------------------------------------------------------------------*/
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
}
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
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
相关文章推荐
- contiki udp 使用
- windows cc2530 6lowpan(contiki)报文监控
- Packetbuffer Basics (包缓冲区基础知识)
- Contiki 实例hello_world详细剖析
- 用Doxygen和Graphviz给Contiki文档添加类图和调用图
- cc2650鼓捣教程-2.一切的开始 Hello world程序!
- cc2650鼓捣教程-1.硬件选型与contiki 6lowpan环境配置
- 基于keil的contiki系统的stm32移植
- 对contiki原理的一些理解
- Contiki 配置参数“技巧”说明
- Contiki学习平台推荐
- Contiki高级程序设计
- PC机与嵌入式设备通信协议设计原则
- 怎样把LoRa终端功耗降到极致
- 无线通信设计秘密四:唤醒下发算法
- 嵌入式研发项目管理的方法论
- Contiki高级程序设计(二)
- Contiki高级程序设计(三)
- Contiki 了解(2)-HelloWorld的编译过程
- Contiki 了解(1)