OSTaskCreateExt () 작업 생 성

OSTaskCreateExt () 작업 생 성
2008-05-25 22:25
NT8U OSTaskCreateExt (void   (*task)(void *pd),
                       void    *pdata,
                       OS_STK *ptos,
                       INT8U    prio,
                       INT16U   id,
                       OS_STK *pbos,
                       INT32U   stk_size,
                       void    *pext,
                       INT16U   opt)
소속 파일: OSTASK. C 호출 자: 작업 이나 시작 코드 이지 만 인 터 럽 트 에서 호출 할 수 없습니다.
이 함수 가 새 파일 을 만 듭 니 다. OSTaskCreate () 의 업그레이드 버 전 입 니 다.
인자:
task 가 작업 코드 를 가리 키 는 지침 입 니 다.
pdata 는 선택 할 수 있 는 데이터 영역 을 가리 키 며 (void *) 0 일 때 가 많 습 니 다.
ptos   작업 창고 지붕 을 가리 키 는 지침 입 니 다.작업 스 택 은 부분 변수, 함수 파라미터, 반환 주소 및 중단 시 cpu 레지스터 의 상 태 를 저장 하 는 데 사 용 됩 니 다.상수 OS 를 초기 화하 면STK_GROWTH 는 1 (os cpu. h 에서 정의) 로 설정 하고 스 택 을 Stack grows from HIGH to LOW memory on ARM 으로 설정 합 니 다. 이때 ptos 는 작업 스 택 공간의 최고 주 소 를 가 리 켜 야 합 니 다.
prio 퀘 스 트 의 우선 순위.숫자 가 작 을 수록 우선 순위 가 높다.
id    작업 의 표 지 는 같은 우선 순 위 를 설정 할 수 있 습 니 다.
pbos 는 창고 하단 의 지침 을 가리킨다.
stk_size 작업 스 택 의 크기 를 지정 합 니 다.
pext 가 데이터 구 조 를 정의 하 는 지침 은 (void *) 0 일 때 가 많 습 니 다.
opt    작업 과 관련 된 작업 정 보 를 저장 합 니 다.OSTASK_OPT_CHK 는 작업 스 택 검사 등 을 허용 합 니 다.uCOS 참조 가능H.H
범례: 이 예 에서 만 든 임 무 는 스 택 에서 높 은 주소 로 증가 하 는 프로세서 에서 실 행 됩 니 다. 예 를 들 어 MCS - 51, 이때 OSSTK_GROWTH 를 0 으로 설정 합 니 다.이 예 에서 스 택 검사 작업 을 허용 합 니 다. 프로그램 은 OSTaskstkChk () 함 수 를 호출 할 수 있 습 니 다.OS_STK *TaskStk[1024];

void main(void)
{
     INT8U err;

     OSInit(); /* ucos*/
    
     err = OSTaskCreateExt(Task,
              (void *) 0,
              &TaskStk[0], /* */
                10,
                10,
               &TaskStk[1023],
                1024,
               (void *) 0,
                 OS_TASK_OPT_CHK;)/* */
    
     OSStart();

}

void Task(void *pdata)
{
       pdata = pdata;
      for(;;){
    …… /* */
      }
}

스 택 의 증가 와 감소 문 제 는 코드 의 이식 성에 영향 을 줄 수 있 습 니 다. 이렇게 써 서 서로 다른 프로세서 에 적응 할 수 있 습 니 다.OS_STK *TaskStack[TASK_STACK_SIZE];

#if OS_STK_GROWTH == 0
     OSTaskCreate(task,pdata,&TaskStack[0],prio);
#else
     OSTaskCreate(task,pdata,&TaskStack[TASK_STACK_SIZE-1],prio);
#endif

좋은 웹페이지 즐겨찾기