Hello World for nxtOSEK

一个在LCD屏幕上显示“Hello,World!” 以及传感器/电机状态的例子。LCD屏幕以500 msec的周期在RTOS(实时操作系统)刷新(这就是为什么,它需要花长一点时间)。当这个程序在运行时,用户还可以监视伺服电机的变化和触感/光感/声音/超声波传感器的数据,以及NXT内部数据,包括系统时钟和LCD屏幕的电池电压。

从V1.08开始,如果您使用TOPPERS ATK hook和nxtOSEK hook ,那么您就不必在代码中定义他们。因为他们已经被liblejososek.a库链接。

samples\helloworld\helloworld.c

/* helloworld.c */
#include "kernel.h"
#include "ecrobot_interface.h"

/* nxtOSEK hook to be invoked from an ISR in category 2 */
void user_1ms_isr_type2(void){ /* do nothing */ }

TASK(OSEK_Task_Background)
{
  while(1){
    ecrobot_status_monitor("Hello, World!");
    systick_wait_ms(500); /* 500msec wait */
  }
}

samples\helloworld\helloworld.oil

#include "implementation.oil"

CPU ATMEL_AT91SAM7S256
{
  OS LEJOS_OSEK
  {
    STATUS = EXTENDED;
    STARTUPHOOK = FALSE;
    ERRORHOOK = FALSE;
    SHUTDOWNHOOK = FALSE;
    PRETASKHOOK = FALSE;
    POSTTASKHOOK = FALSE;
    USEGETSERVICEID = FALSE;
    USEPARAMETERACCESS = FALSE;
    USERESSCHEDULER = FALSE;
  };

  /* Definition of application mode */
  APPMODE appmode1{};

  /* Definition of OSEK_Task_Background */
  TASK OSEK_Task_Background
  {
    AUTOSTART = TRUE
    {
      APPMODE = appmode1;
    };
    PRIORITY = 1; /* lowest priority */
    ACTIVATION = 1;
    SCHEDULE = FULL;
    STACKSIZE = 512;
  };
};

 

 

 

返回 示例程序