ST20 에서 사용가능한 타이머(Timer) 관련한 기능을 간단한 예제를 통해 알아보도록 한다.
실시간 운영체제에서 가장 중요한 것이 어찌보면 시간이라고 할 수 있다. 시간에 따라, 전혀 엉뚱한 동작을 할 수도 있고, 시스템이 뻗을 수도 있다.
어떤 일이든 순서가 있게 마련이고, 과정이 있기 마련이다. A → B → C 로 이루어지는 일이 B 를 지나치고 A → C 로 진행된다면, 우리가 원하는 결과를 얻을 수 없다. 여기서는 Timer 를 타이머로 표기하겠다.

들어가기 전에

타이머 관련 함수들은 timer.c 파일에 정의되어 있다. 타이머 관련 함수를 사용하기 위해서는 반드시

   timerStart();

선언해주어야 한다.

예제 1

일단 예제부터 보자!!

{
	timerStart();   --->> 반드시 먼저 선언해준다!!
 
	setTimer(10, (void(*)())timer_test, NULL);      --->> 10 ms 후에 timer_test 함수를 수행함, 이때 넘어주는 인자는 없다!!
}
 
void timer_test(void)
{
	printf("\nTime Over!!!\n");
}

간단히 설명을 하자면, setTimer() 의 경우, 첫번째 인자에 시간을 지정하고 시간후에 수행할 함수명과 인자를 적어주면 된다.
직접 컴파일 후에 실행해보면, 10ms 후에 printf 문이 출력된다.

예제 2

  {
 
//	timerStart();
 
	setTimer(10, (void(*)())timer_test, 100);    ------->>> 100 을 인자로 넘겨줌
 
	clearTimer((void(*)())timer_test);     ----->>> 10 ms 이전에 호출되면, setTimer() 의 효과는 사라진다!!
 
    	}
 
void timer_test(U32 t)
{
	printf("\nTime %d Over!!!\n",t);
}

컴파일 후에 실행하면, printf 문이 출력되지 않는다.

  • computer/digitalarena/타이머_사용하기.txt
  • Last modified: 3 years ago
  • by likewind