うおーるぼっとをWiiリモコンでコントロールする新しいプログラムです。 以前のものより、Wiiリモコンが早く繋がる様になりました。 It is a program which controls A with the Wii remote. ※ A Bluetooth dongle and a Wii remote control are needed.

Dependencies:   USBHost mbed FATFileSystem mbed-rtos

Committer:
jksoft
Date:
Mon Jun 10 16:01:50 2013 +0000
Revision:
0:fccb789424fc
1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:fccb789424fc 1 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 2 * RL-ARM - RTX
jksoft 0:fccb789424fc 3 *----------------------------------------------------------------------------
jksoft 0:fccb789424fc 4 * Name: RT_TASK.C
jksoft 0:fccb789424fc 5 * Purpose: Task functions and system start up.
jksoft 0:fccb789424fc 6 * Rev.: V4.60
jksoft 0:fccb789424fc 7 *----------------------------------------------------------------------------
jksoft 0:fccb789424fc 8 *
jksoft 0:fccb789424fc 9 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
jksoft 0:fccb789424fc 10 * All rights reserved.
jksoft 0:fccb789424fc 11 * Redistribution and use in source and binary forms, with or without
jksoft 0:fccb789424fc 12 * modification, are permitted provided that the following conditions are met:
jksoft 0:fccb789424fc 13 * - Redistributions of source code must retain the above copyright
jksoft 0:fccb789424fc 14 * notice, this list of conditions and the following disclaimer.
jksoft 0:fccb789424fc 15 * - Redistributions in binary form must reproduce the above copyright
jksoft 0:fccb789424fc 16 * notice, this list of conditions and the following disclaimer in the
jksoft 0:fccb789424fc 17 * documentation and/or other materials provided with the distribution.
jksoft 0:fccb789424fc 18 * - Neither the name of ARM nor the names of its contributors may be used
jksoft 0:fccb789424fc 19 * to endorse or promote products derived from this software without
jksoft 0:fccb789424fc 20 * specific prior written permission.
jksoft 0:fccb789424fc 21 *
jksoft 0:fccb789424fc 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
jksoft 0:fccb789424fc 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
jksoft 0:fccb789424fc 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
jksoft 0:fccb789424fc 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
jksoft 0:fccb789424fc 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
jksoft 0:fccb789424fc 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
jksoft 0:fccb789424fc 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
jksoft 0:fccb789424fc 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
jksoft 0:fccb789424fc 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
jksoft 0:fccb789424fc 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
jksoft 0:fccb789424fc 32 * POSSIBILITY OF SUCH DAMAGE.
jksoft 0:fccb789424fc 33 *---------------------------------------------------------------------------*/
jksoft 0:fccb789424fc 34
jksoft 0:fccb789424fc 35 #include "rt_TypeDef.h"
jksoft 0:fccb789424fc 36 #include "RTX_Config.h"
jksoft 0:fccb789424fc 37 #include "rt_System.h"
jksoft 0:fccb789424fc 38 #include "rt_Task.h"
jksoft 0:fccb789424fc 39 #include "rt_List.h"
jksoft 0:fccb789424fc 40 #include "rt_MemBox.h"
jksoft 0:fccb789424fc 41 #include "rt_Robin.h"
jksoft 0:fccb789424fc 42 #include "rt_HAL_CM.h"
jksoft 0:fccb789424fc 43
jksoft 0:fccb789424fc 44 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 45 * Global Variables
jksoft 0:fccb789424fc 46 *---------------------------------------------------------------------------*/
jksoft 0:fccb789424fc 47
jksoft 0:fccb789424fc 48 /* Running and next task info. */
jksoft 0:fccb789424fc 49 struct OS_TSK os_tsk;
jksoft 0:fccb789424fc 50
jksoft 0:fccb789424fc 51 /* Task Control Blocks of idle demon */
jksoft 0:fccb789424fc 52 struct OS_TCB os_idle_TCB;
jksoft 0:fccb789424fc 53
jksoft 0:fccb789424fc 54
jksoft 0:fccb789424fc 55 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 56 * Local Functions
jksoft 0:fccb789424fc 57 *---------------------------------------------------------------------------*/
jksoft 0:fccb789424fc 58
jksoft 0:fccb789424fc 59 OS_TID rt_get_TID (void) {
jksoft 0:fccb789424fc 60 U32 tid;
jksoft 0:fccb789424fc 61
jksoft 0:fccb789424fc 62 for (tid = 1; tid <= os_maxtaskrun; tid++) {
jksoft 0:fccb789424fc 63 if (os_active_TCB[tid-1] == NULL) {
jksoft 0:fccb789424fc 64 return ((OS_TID)tid);
jksoft 0:fccb789424fc 65 }
jksoft 0:fccb789424fc 66 }
jksoft 0:fccb789424fc 67 return (0);
jksoft 0:fccb789424fc 68 }
jksoft 0:fccb789424fc 69
jksoft 0:fccb789424fc 70 #if defined (__CC_ARM) && !defined (__MICROLIB)
jksoft 0:fccb789424fc 71 /*--------------------------- __user_perthread_libspace ---------------------*/
jksoft 0:fccb789424fc 72 extern void *__libspace_start;
jksoft 0:fccb789424fc 73
jksoft 0:fccb789424fc 74 void *__user_perthread_libspace (void) {
jksoft 0:fccb789424fc 75 /* Provide a separate libspace for each task. */
jksoft 0:fccb789424fc 76 if (os_tsk.run == NULL) {
jksoft 0:fccb789424fc 77 /* RTX not running yet. */
jksoft 0:fccb789424fc 78 return (&__libspace_start);
jksoft 0:fccb789424fc 79 }
jksoft 0:fccb789424fc 80 return (void *)(os_tsk.run->std_libspace);
jksoft 0:fccb789424fc 81 }
jksoft 0:fccb789424fc 82 #endif
jksoft 0:fccb789424fc 83
jksoft 0:fccb789424fc 84 /*--------------------------- rt_init_context -------------------------------*/
jksoft 0:fccb789424fc 85
jksoft 0:fccb789424fc 86 void rt_init_context (P_TCB p_TCB, U8 priority, FUNCP task_body) {
jksoft 0:fccb789424fc 87 /* Initialize general part of the Task Control Block. */
jksoft 0:fccb789424fc 88 p_TCB->cb_type = TCB;
jksoft 0:fccb789424fc 89 p_TCB->state = READY;
jksoft 0:fccb789424fc 90 p_TCB->prio = priority;
jksoft 0:fccb789424fc 91 p_TCB->p_lnk = NULL;
jksoft 0:fccb789424fc 92 p_TCB->p_rlnk = NULL;
jksoft 0:fccb789424fc 93 p_TCB->p_dlnk = NULL;
jksoft 0:fccb789424fc 94 p_TCB->p_blnk = NULL;
jksoft 0:fccb789424fc 95 p_TCB->delta_time = 0;
jksoft 0:fccb789424fc 96 p_TCB->interval_time = 0;
jksoft 0:fccb789424fc 97 p_TCB->events = 0;
jksoft 0:fccb789424fc 98 p_TCB->waits = 0;
jksoft 0:fccb789424fc 99 p_TCB->stack_frame = 0;
jksoft 0:fccb789424fc 100
jksoft 0:fccb789424fc 101 rt_init_stack (p_TCB, task_body);
jksoft 0:fccb789424fc 102 }
jksoft 0:fccb789424fc 103
jksoft 0:fccb789424fc 104
jksoft 0:fccb789424fc 105 /*--------------------------- rt_switch_req ---------------------------------*/
jksoft 0:fccb789424fc 106
jksoft 0:fccb789424fc 107 void rt_switch_req (P_TCB p_new) {
jksoft 0:fccb789424fc 108 /* Switch to next task (identified by "p_new"). */
jksoft 0:fccb789424fc 109 os_tsk.new_tsk = p_new;
jksoft 0:fccb789424fc 110 p_new->state = RUNNING;
jksoft 0:fccb789424fc 111 DBG_TASK_SWITCH(p_new->task_id);
jksoft 0:fccb789424fc 112 }
jksoft 0:fccb789424fc 113
jksoft 0:fccb789424fc 114
jksoft 0:fccb789424fc 115 /*--------------------------- rt_dispatch -----------------------------------*/
jksoft 0:fccb789424fc 116
jksoft 0:fccb789424fc 117 void rt_dispatch (P_TCB next_TCB) {
jksoft 0:fccb789424fc 118 /* Dispatch next task if any identified or dispatch highest ready task */
jksoft 0:fccb789424fc 119 /* "next_TCB" identifies a task to run or has value NULL (=no next task) */
jksoft 0:fccb789424fc 120 if (next_TCB == NULL) {
jksoft 0:fccb789424fc 121 /* Running task was blocked: continue with highest ready task */
jksoft 0:fccb789424fc 122 next_TCB = rt_get_first (&os_rdy);
jksoft 0:fccb789424fc 123 rt_switch_req (next_TCB);
jksoft 0:fccb789424fc 124 }
jksoft 0:fccb789424fc 125 else {
jksoft 0:fccb789424fc 126 /* Check which task continues */
jksoft 0:fccb789424fc 127 if (next_TCB->prio > os_tsk.run->prio) {
jksoft 0:fccb789424fc 128 /* preempt running task */
jksoft 0:fccb789424fc 129 rt_put_rdy_first (os_tsk.run);
jksoft 0:fccb789424fc 130 os_tsk.run->state = READY;
jksoft 0:fccb789424fc 131 rt_switch_req (next_TCB);
jksoft 0:fccb789424fc 132 }
jksoft 0:fccb789424fc 133 else {
jksoft 0:fccb789424fc 134 /* put next task into ready list, no task switch takes place */
jksoft 0:fccb789424fc 135 next_TCB->state = READY;
jksoft 0:fccb789424fc 136 rt_put_prio (&os_rdy, next_TCB);
jksoft 0:fccb789424fc 137 }
jksoft 0:fccb789424fc 138 }
jksoft 0:fccb789424fc 139 }
jksoft 0:fccb789424fc 140
jksoft 0:fccb789424fc 141
jksoft 0:fccb789424fc 142 /*--------------------------- rt_block --------------------------------------*/
jksoft 0:fccb789424fc 143
jksoft 0:fccb789424fc 144 void rt_block (U16 timeout, U8 block_state) {
jksoft 0:fccb789424fc 145 /* Block running task and choose next ready task. */
jksoft 0:fccb789424fc 146 /* "timeout" sets a time-out value or is 0xffff (=no time-out). */
jksoft 0:fccb789424fc 147 /* "block_state" defines the appropriate task state */
jksoft 0:fccb789424fc 148 P_TCB next_TCB;
jksoft 0:fccb789424fc 149
jksoft 0:fccb789424fc 150 if (timeout) {
jksoft 0:fccb789424fc 151 if (timeout < 0xffff) {
jksoft 0:fccb789424fc 152 rt_put_dly (os_tsk.run, timeout);
jksoft 0:fccb789424fc 153 }
jksoft 0:fccb789424fc 154 os_tsk.run->state = block_state;
jksoft 0:fccb789424fc 155 next_TCB = rt_get_first (&os_rdy);
jksoft 0:fccb789424fc 156 rt_switch_req (next_TCB);
jksoft 0:fccb789424fc 157 }
jksoft 0:fccb789424fc 158 }
jksoft 0:fccb789424fc 159
jksoft 0:fccb789424fc 160
jksoft 0:fccb789424fc 161 /*--------------------------- rt_tsk_pass -----------------------------------*/
jksoft 0:fccb789424fc 162
jksoft 0:fccb789424fc 163 void rt_tsk_pass (void) {
jksoft 0:fccb789424fc 164 /* Allow tasks of same priority level to run cooperatively.*/
jksoft 0:fccb789424fc 165 P_TCB p_new;
jksoft 0:fccb789424fc 166
jksoft 0:fccb789424fc 167 p_new = rt_get_same_rdy_prio();
jksoft 0:fccb789424fc 168 if (p_new != NULL) {
jksoft 0:fccb789424fc 169 rt_put_prio ((P_XCB)&os_rdy, os_tsk.run);
jksoft 0:fccb789424fc 170 os_tsk.run->state = READY;
jksoft 0:fccb789424fc 171 rt_switch_req (p_new);
jksoft 0:fccb789424fc 172 }
jksoft 0:fccb789424fc 173 }
jksoft 0:fccb789424fc 174
jksoft 0:fccb789424fc 175
jksoft 0:fccb789424fc 176 /*--------------------------- rt_tsk_self -----------------------------------*/
jksoft 0:fccb789424fc 177
jksoft 0:fccb789424fc 178 OS_TID rt_tsk_self (void) {
jksoft 0:fccb789424fc 179 /* Return own task identifier value. */
jksoft 0:fccb789424fc 180 if (os_tsk.run == NULL) {
jksoft 0:fccb789424fc 181 return (0);
jksoft 0:fccb789424fc 182 }
jksoft 0:fccb789424fc 183 return (os_tsk.run->task_id);
jksoft 0:fccb789424fc 184 }
jksoft 0:fccb789424fc 185
jksoft 0:fccb789424fc 186
jksoft 0:fccb789424fc 187 /*--------------------------- rt_tsk_prio -----------------------------------*/
jksoft 0:fccb789424fc 188
jksoft 0:fccb789424fc 189 OS_RESULT rt_tsk_prio (OS_TID task_id, U8 new_prio) {
jksoft 0:fccb789424fc 190 /* Change execution priority of a task to "new_prio". */
jksoft 0:fccb789424fc 191 P_TCB p_task;
jksoft 0:fccb789424fc 192
jksoft 0:fccb789424fc 193 if (task_id == 0) {
jksoft 0:fccb789424fc 194 /* Change execution priority of calling task. */
jksoft 0:fccb789424fc 195 os_tsk.run->prio = new_prio;
jksoft 0:fccb789424fc 196 run:if (rt_rdy_prio() > new_prio) {
jksoft 0:fccb789424fc 197 rt_put_prio (&os_rdy, os_tsk.run);
jksoft 0:fccb789424fc 198 os_tsk.run->state = READY;
jksoft 0:fccb789424fc 199 rt_dispatch (NULL);
jksoft 0:fccb789424fc 200 }
jksoft 0:fccb789424fc 201 return (OS_R_OK);
jksoft 0:fccb789424fc 202 }
jksoft 0:fccb789424fc 203
jksoft 0:fccb789424fc 204 /* Find the task in the "os_active_TCB" array. */
jksoft 0:fccb789424fc 205 if (task_id > os_maxtaskrun || os_active_TCB[task_id-1] == NULL) {
jksoft 0:fccb789424fc 206 /* Task with "task_id" not found or not started. */
jksoft 0:fccb789424fc 207 return (OS_R_NOK);
jksoft 0:fccb789424fc 208 }
jksoft 0:fccb789424fc 209 p_task = os_active_TCB[task_id-1];
jksoft 0:fccb789424fc 210 p_task->prio = new_prio;
jksoft 0:fccb789424fc 211 if (p_task == os_tsk.run) {
jksoft 0:fccb789424fc 212 goto run;
jksoft 0:fccb789424fc 213 }
jksoft 0:fccb789424fc 214 rt_resort_prio (p_task);
jksoft 0:fccb789424fc 215 if (p_task->state == READY) {
jksoft 0:fccb789424fc 216 /* Task enqueued in a ready list. */
jksoft 0:fccb789424fc 217 p_task = rt_get_first (&os_rdy);
jksoft 0:fccb789424fc 218 rt_dispatch (p_task);
jksoft 0:fccb789424fc 219 }
jksoft 0:fccb789424fc 220 return (OS_R_OK);
jksoft 0:fccb789424fc 221 }
jksoft 0:fccb789424fc 222
jksoft 0:fccb789424fc 223 /*--------------------------- rt_tsk_delete ---------------------------------*/
jksoft 0:fccb789424fc 224
jksoft 0:fccb789424fc 225 OS_RESULT rt_tsk_delete (OS_TID task_id) {
jksoft 0:fccb789424fc 226 /* Terminate the task identified with "task_id". */
jksoft 0:fccb789424fc 227 P_TCB task_context;
jksoft 0:fccb789424fc 228
jksoft 0:fccb789424fc 229 if (task_id == 0 || task_id == os_tsk.run->task_id) {
jksoft 0:fccb789424fc 230 /* Terminate itself. */
jksoft 0:fccb789424fc 231 os_tsk.run->state = INACTIVE;
jksoft 0:fccb789424fc 232 os_tsk.run->tsk_stack = rt_get_PSP ();
jksoft 0:fccb789424fc 233 rt_stk_check ();
jksoft 0:fccb789424fc 234 os_active_TCB[os_tsk.run->task_id-1] = NULL;
jksoft 0:fccb789424fc 235
jksoft 0:fccb789424fc 236 os_tsk.run->stack = NULL;
jksoft 0:fccb789424fc 237 DBG_TASK_NOTIFY(os_tsk.run, __FALSE);
jksoft 0:fccb789424fc 238 os_tsk.run = NULL;
jksoft 0:fccb789424fc 239 rt_dispatch (NULL);
jksoft 0:fccb789424fc 240 /* The program should never come to this point. */
jksoft 0:fccb789424fc 241 }
jksoft 0:fccb789424fc 242 else {
jksoft 0:fccb789424fc 243 /* Find the task in the "os_active_TCB" array. */
jksoft 0:fccb789424fc 244 if (task_id > os_maxtaskrun || os_active_TCB[task_id-1] == NULL) {
jksoft 0:fccb789424fc 245 /* Task with "task_id" not found or not started. */
jksoft 0:fccb789424fc 246 return (OS_R_NOK);
jksoft 0:fccb789424fc 247 }
jksoft 0:fccb789424fc 248 task_context = os_active_TCB[task_id-1];
jksoft 0:fccb789424fc 249 rt_rmv_list (task_context);
jksoft 0:fccb789424fc 250 rt_rmv_dly (task_context);
jksoft 0:fccb789424fc 251 os_active_TCB[task_id-1] = NULL;
jksoft 0:fccb789424fc 252
jksoft 0:fccb789424fc 253 task_context->stack = NULL;
jksoft 0:fccb789424fc 254 DBG_TASK_NOTIFY(task_context, __FALSE);
jksoft 0:fccb789424fc 255 }
jksoft 0:fccb789424fc 256 return (OS_R_OK);
jksoft 0:fccb789424fc 257 }
jksoft 0:fccb789424fc 258
jksoft 0:fccb789424fc 259
jksoft 0:fccb789424fc 260 /*--------------------------- rt_sys_init -----------------------------------*/
jksoft 0:fccb789424fc 261
jksoft 0:fccb789424fc 262 #ifdef __CMSIS_RTOS
jksoft 0:fccb789424fc 263 void rt_sys_init (void) {
jksoft 0:fccb789424fc 264 #else
jksoft 0:fccb789424fc 265 void rt_sys_init (FUNCP first_task, U32 prio_stksz, void *stk) {
jksoft 0:fccb789424fc 266 #endif
jksoft 0:fccb789424fc 267 /* Initialize system and start up task declared with "first_task". */
jksoft 0:fccb789424fc 268 U32 i;
jksoft 0:fccb789424fc 269
jksoft 0:fccb789424fc 270 DBG_INIT();
jksoft 0:fccb789424fc 271
jksoft 0:fccb789424fc 272 /* Initialize dynamic memory and task TCB pointers to NULL. */
jksoft 0:fccb789424fc 273 for (i = 0; i < os_maxtaskrun; i++) {
jksoft 0:fccb789424fc 274 os_active_TCB[i] = NULL;
jksoft 0:fccb789424fc 275 }
jksoft 0:fccb789424fc 276
jksoft 0:fccb789424fc 277 /* Set up TCB of idle demon */
jksoft 0:fccb789424fc 278 os_idle_TCB.task_id = 255;
jksoft 0:fccb789424fc 279 os_idle_TCB.priv_stack = idle_task_stack_size;
jksoft 0:fccb789424fc 280 os_idle_TCB.stack = idle_task_stack;
jksoft 0:fccb789424fc 281 rt_init_context (&os_idle_TCB, 0, os_idle_demon);
jksoft 0:fccb789424fc 282
jksoft 0:fccb789424fc 283 /* Set up ready list: initially empty */
jksoft 0:fccb789424fc 284 os_rdy.cb_type = HCB;
jksoft 0:fccb789424fc 285 os_rdy.p_lnk = NULL;
jksoft 0:fccb789424fc 286 /* Set up delay list: initially empty */
jksoft 0:fccb789424fc 287 os_dly.cb_type = HCB;
jksoft 0:fccb789424fc 288 os_dly.p_dlnk = NULL;
jksoft 0:fccb789424fc 289 os_dly.p_blnk = NULL;
jksoft 0:fccb789424fc 290 os_dly.delta_time = 0;
jksoft 0:fccb789424fc 291
jksoft 0:fccb789424fc 292 /* Fix SP and systemvariables to assume idle task is running */
jksoft 0:fccb789424fc 293 /* Transform main program into idle task by assuming idle TCB */
jksoft 0:fccb789424fc 294 #ifndef __CMSIS_RTOS
jksoft 0:fccb789424fc 295 rt_set_PSP (os_idle_TCB.tsk_stack+32);
jksoft 0:fccb789424fc 296 #endif
jksoft 0:fccb789424fc 297 os_tsk.run = &os_idle_TCB;
jksoft 0:fccb789424fc 298 os_tsk.run->state = RUNNING;
jksoft 0:fccb789424fc 299
jksoft 0:fccb789424fc 300 /* Initialize ps queue */
jksoft 0:fccb789424fc 301 os_psq->first = 0;
jksoft 0:fccb789424fc 302 os_psq->last = 0;
jksoft 0:fccb789424fc 303 os_psq->size = os_fifo_size;
jksoft 0:fccb789424fc 304
jksoft 0:fccb789424fc 305 rt_init_robin ();
jksoft 0:fccb789424fc 306
jksoft 0:fccb789424fc 307 /* Intitialize SVC and PendSV */
jksoft 0:fccb789424fc 308 rt_svc_init ();
jksoft 0:fccb789424fc 309
jksoft 0:fccb789424fc 310 #ifndef __CMSIS_RTOS
jksoft 0:fccb789424fc 311 /* Intitialize and start system clock timer */
jksoft 0:fccb789424fc 312 os_tick_irqn = os_tick_init ();
jksoft 0:fccb789424fc 313 if (os_tick_irqn >= 0) {
jksoft 0:fccb789424fc 314 OS_X_INIT(os_tick_irqn);
jksoft 0:fccb789424fc 315 }
jksoft 0:fccb789424fc 316
jksoft 0:fccb789424fc 317 /* Start up first user task before entering the endless loop */
jksoft 0:fccb789424fc 318 rt_tsk_create (first_task, prio_stksz, stk, NULL);
jksoft 0:fccb789424fc 319 #endif
jksoft 0:fccb789424fc 320 }
jksoft 0:fccb789424fc 321
jksoft 0:fccb789424fc 322
jksoft 0:fccb789424fc 323 /*--------------------------- rt_sys_start ----------------------------------*/
jksoft 0:fccb789424fc 324
jksoft 0:fccb789424fc 325 #ifdef __CMSIS_RTOS
jksoft 0:fccb789424fc 326 void rt_sys_start (void) {
jksoft 0:fccb789424fc 327 /* Start system */
jksoft 0:fccb789424fc 328
jksoft 0:fccb789424fc 329 /* Intitialize and start system clock timer */
jksoft 0:fccb789424fc 330 os_tick_irqn = os_tick_init ();
jksoft 0:fccb789424fc 331 if (os_tick_irqn >= 0) {
jksoft 0:fccb789424fc 332 OS_X_INIT(os_tick_irqn);
jksoft 0:fccb789424fc 333 }
jksoft 0:fccb789424fc 334 }
jksoft 0:fccb789424fc 335 #endif
jksoft 0:fccb789424fc 336
jksoft 0:fccb789424fc 337 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 338 * end of file
jksoft 0:fccb789424fc 339 *---------------------------------------------------------------------------*/