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

第一个测试:contiki-3.0\examples\hello-world.c        -----------------------------网上很多都是用的这个讲解,只是简单打印输出测试。

第二个测试:contiki-3.0\examples\nrf52dk\blink-hello.c           ---------------------------流水灯测试,4个LED依次点亮

第三个测试:contiki-3.0\examples\nrf52dk\timer-test.c           -----------------------------测试etimer  rtimer,timer,stimer的

第四个测试:contiki-3.0\examples\stm32nucleo-spirit1\sensor-demo--------------------传感器测试,把按键也当做传感器来处理 了

第五个测试:contiki-3.0\examples\sky\test-button.c-----------------------------------SKY测试按键

这几个官方的测试一定要搞清楚,这是最基本的了。

 

http://blog.sina.cn/dpool/blog/s/blog_5f38126b0101jlft.html  这个前辈,也有做过rtimer测试可以看看,多个参考总比没有好。

ct = clock_time();
rt_now = RTIMER_NOW();
rt_for = rt_now+RTIMER_SECOND;
printf("Now=%lu (clock = %lu) - For=%lu", rt_now, ct, rt_for);

 

https://blog.csdn.net/jiangjunjie_2005/article/category/2748089         这个博主历害的,凡是折腾过我的内容,多少知道一点。

对比看了一些,确实很多种像他所说的,有道理。有的太深的我理解不了,有时间就多看看吧,理解理解精随没什么坏外。

 

我最终测试rtimer的进程:

#include <INcludes.h> //统一的头文件加载.... 

#define TEST_RTIMER 1

#if TEST_RTIMER
static struct rtimer rt;
static clock_time_t ct_now;
rtimer_clock_t rt_now, rt_until;

static volatile rtimer_clock_t rt_now_cb;
static volatile clock_time_t ct_cb;
#endif


#if TEST_RTIMER
void
rt_callback(struct rtimer *t, void *ptr)
{
rt_now_cb = RTIMER_NOW();
ct_cb = clock_time();
}
#endif

 

PROCESS(hello_world_process5, "Hello world process5");//申请线程process5测试

PROCESS_THREAD(hello_world_process5, ev, data)//进程5的功能体
{
static struct etimer et;
PROCESS_BEGIN();//开始

while(1)
{
etimer_set(&et, 1 * CLOCK_SECOND);
rt_now = RTIMER_NOW();
rt_until = rt_now + RTIMER_SECOND;

printf("now [ticks]: %lu\r\nuntil[ticks]: %lu\r\n", rt_now, rt_until);
if (rtimer_set(&rt, rt_until, 1, rt_callback, NULL) != RTIMER_OK) {
printf("Error setting\r\n"); }
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
printf("rtimer difference [ticks]: %ld\r\n", RTIMER_SECOND - (rt_now_cb - rt_now));
}
PROCESS_END();//结束,与PROCESS_BEGIN()配对!
}

 

 

我的串口printf打印信息为:

因为我开了7个进程,所以打印了一些无关的信息,只看我们测试now/rtimer/until内容就好。

 

也不知道测试结果是对是错?反正打印有跳变的值出来,如果后面真正使用时,真要有问题再搞吧,现在只是先调通。

先这样吧,接下来搞button-sensor.c按键传感器,传感器是一大块肥肉,CONTIKI把所有模拟信号输入当成传感器信号。

形成事件进行驱动,比如,ADC,按键,心率,体温,温湿度,其处理方法都是按照固定模试进行,用心学肯定能搞定!

最重要是要搞清楚OS,一步接一步的意图是什么。其实就是模仿CONTIKI作者逻辑思维.

posted on 2019-07-21 21:15  木子剑  阅读(372)  评论(0)    收藏  举报