在contiki中应用

ccontiki的移植,以后在写,主要是现在还没有看懂呢。。。

拿到了芯片源码,如何添加一些新的功能呢.

比如说添加LCD中显示个6666666.

我们首先要参考,已写好的源码。我们来做参考.

首先打开main.c

前面的一些包含文件,先不用看,之后是debug、调试用的,也先不太用看.

Global_Data_Type      global_data;   //这是一个全局结构体 ,定义了一个全局变量,global_data...

 

AUTOSTART_PROCESSES(

              &etimer_process,
              &display_process,
              &rtc_process,
              &pulse_process,
              &key_process,
              &comir_rx_process,
              &comnb_rx_process,
              &led_process

             )

AUTOSTART_PROCESSES是一个宏定义....

#define AUTOSTART_PROCESSES(...) \
struct process * const autostart_processes[] = {__VA_ARGS__, NULL}

struct process这是一个结构体类型的指针数组..........................................很部复杂,可以进去一点一点的看,也是可以看懂的....但是没必要...

我们就仿照着写就可以了...

比如说:我们全工程查找一下led_process

在base.c中有

//根据宏定义,可以看出传入的是一个进程名字,和一个类似与解释字符的.这个只有不重复即可...

PROCESS(led_process, "LED" );          //PROCESS这个也是一个宏定义:#define PROCESS(name, strname)  PROCESS_THREAD(name, ev, data); struct process name = { NULL, process_thread_##name }

在此定义下面就会有

进程函数:

// LED闪烁进程
PROCESS_THREAD(led_process, ev, data)
{
static struct etimer et;

PROCESS_BEGIN();
while(1)
{
ev = PROCESS_EVENT_NONE;
PROCESS_WAIT_UNTIL(ev == PROCESS_EVENT_POLL);
EventBit_Set(EventBit_Led);
// DEBUG_PRINTF("led_process\r\n");

Led_PinOn();
etimer_set(&et, 200);                                         //延时
PROCESS_WAIT_UNTIL(etimer_expired(&et));
Led_PinOff();

EventBit_Reset(EventBit_Led);
}
PROCESS_END();
}

跳转EventBit_Led

//系统事件定义:

#define     EventBit_Led      6 // 警告事件:LED

在base.h文件中有PROCESS_NAME(led_process); 宏定义,#define PROCESS_NAME(name) extern struct process name,一个声明函数...

添加号这些:

就可以运行进程了...

process_poll(&led_Temp_process);

就是这些内容,我们可以照着这些模仿就可以了...

剩下的我们正常调试就 可以了.....

 

posted @ 2020-07-20 16:37  A_Powered  阅读(194)  评论(0编辑  收藏  举报