OSAL 시스템 안내

976 단어 OSAL
한 단락 의 프로그램 을 볼 때, 왕왕 그것 의 데이터 구조 로부터 착수 해 야 한다. main () 함수 에 주 순환 에 두 개의 관건 적 인 배열 이 존재 합 니 다. * tasksEvents 와 * tasksArr, tasksEvents 라 는 배열 은 번호 가 0 에서 tasksCnt 까지 저 장 됩 니 다. 모든 작업 이 이번 순환 에서 실 행 될 지 여부 입 니 다. 실행 해 야 할 작업 의 값 은 0 이 아 닙 니 다. 그렇지 않 으 면 0 입 니 다. tasksArr 배열 은 모든 작업 에 대응 하 는 입구 주 소 를 저장 합 니 다. tasksEvents 에 기 록 된 실행 할 작업 만 이번 순환 에서 호출 됩 니 다.
for(;;) // Forever Loop
{
uint8 idx = 0;
Hal_ProcessPoll(); //        
do {
if (tasksEvents[idx]) //              
{
break;
}
} while (++idx < tasksCnt);
if (idx < tasksCnt)
{
uint16 events;
halIntState_t intState;
HAL_ENTER_CRITICAL_SECTION(intState);
events = tasksEvents[idx];
tasksEvents[idx] = 0; //        ,     ,           
HAL_EXIT_CRITICAL_SECTION(intState);
events = (tasksArr[idx])( idx, events ); //       ,    ,       
HAL_ENTER_CRITICAL_SECTION(intState);
tasksEvents[idx] |= events; //           ,     ,       ,           
HAL_EXIT_CRITICAL_SECTION(intState);
}
}


좋은 웹페이지 즐겨찾기