在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);
就是这些内容,我们可以照着这些模仿就可以了...
剩下的我们正常调试就 可以了.....