testostaskmodeset.c

来自「RTOS -REWORKS ReWorks里一个有关任务的例子」· C语言 代码 · 共 71 行

C
71
字号
#include "taskTest.h"

#define put_mode( _comment, _output_mode ) \
   printf( "%s %08x\n", _comment, _output_mode );
   
static void entry1(
  void* argument
);

/* add application specific code here */
int testOSTaskModeSet(){
    OS_STATUS status;
    unsigned32 task_id;
    
    printf("*** test of OSTaskModeSet ***\n");
    printf("create and start a task with OS_DEFAULT mode\n");
    status = OSTaskCreate(
    	"task",
    	90,
    	STACK_MINIMUM_SIZE * 2,
    	OS_DEFAULT,
    	OS_DEFAULT,
    	&task_id
  	);

  	status = OSTaskStart( task_id, entry1, 0 );    
  
  	OSTaskDelay(1000);
	OSTaskDelete(task_id); 
   	printf("*** OSTaskModeSet test OK! ***\n");
	return 1;

}

   
static void entry1(
  void* argument
)
{
    OS_STATUS           status;
    unsigned32        previous_mode;
    printf("task runs before delay\n");
    OSTaskDelay(500);
    printf("task runs after delay\n");
    
    unsigned32 tid;
    status = OSTaskIdGet( "task1", 0, &tid );
    printf("task1_id ---[%d]\n",tid);
   
    status = OSTaskModeSet(
    OS_NO_PREEMPT,
    OS_PREEMPT_MASK,
    &previous_mode
    );
    printf("TA1 - previous OS_PREEMPT_MASK mode: 0x[%x]\n",previous_mode);    
    
    printf("TA1 - OSTaskModeSet OS_PREEMPT_MASK to OS_NO_PREEMPT\n");

            
    status = OSTaskModeSet(
    OS_NO_PREEMPT,
    OS_PREEMPT_MASK,
    &previous_mode
    );

    printf("TA1 - previous OS_PREEMPT_MASK mode: 0x[%x]\n",previous_mode);    

    
}  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?