第一个测试: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作者逻辑思维.
浙公网安备 33010602011771号