ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
10 июля
313782 Топик полностью
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; } }