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 문이 출력되지 않는다.