MegaJohn (11.03.2012 10:30, просмотров: 143) ответил zeleny на RTOS_SLEEP - скорее всего проверка таймера или флага макросом PT_WAIT_UNTIL
вот так вот[+]
#define RTOS_INCLUDE <rtos\nOS\scheduler.h>
#define RTOS_TASK Cnos_task
#define RTOS_OP_FIRST default:
#define RTOS_OP_LAST case __LINE__: task_set_state( 0 ); return;
#define RTOS_OP case __LINE__:
#define RTOS_SLEEP(time) sleep( time / SYSTICK_MS ); task_set_state( __LINE__ + 2 ); return
#define RTOS_TASK_CREATE(name,func,priority,stack_head,stack_size,param,attr) task_add(&name,func,param)
#define RTOS_TASK_LOOP switch( task_get_state() )
то есть пример в топике превращается в
////////////////////////////////////////////////////////////////////////////////
void task_A_func( void* par )
{
switch( task_get_state() )
{
default:
{ ( PORTA &= ~(1 << (0)) ); ( PORTA |= (1 << (1)) ); };
sleep( 300 *1 / 1 ); task_set_state( 17 + 2 ); return;
case 19:
{ ( PORTA |= (1 << (0)) ); ( PORTA &= ~(1 << (1)) ); };
sleep( 300 *1 / 1 ); task_set_state( 21 + 2 ); return;
case 23:
{ ( PORTA |= (1 << (0)) ); ( PORTA |= (1 << (1)) ); };
sleep( 300 *1 / 1 ); task_set_state( 25 + 2 ); return;
case 27:
{ ( PORTA &= ~(1 << (0)) ); ( PORTA &= ~(1 << (1)) ); };
sleep( 1 *1000 / 1 ); task_set_state( 29 + 2 ); return;
case 31: task_set_state( 0 ); return;
}
}