코드의 실행 대기 용도로 while() 문을 사용하는 경우가 있다.
예. UART RX 로 데이터 수신된것을 폴링방식으로 읽는 경우를 보면,
아래처럼 작성된다.
while (RX 버퍼에 데이터가 없다면) ; // 대기. 버퍼에 데이터가 있다면 빠져나온다. 함수 RX 버퍼 읽기. // 값읽기.
|
위 코드의 문제점은 while 문이 무한대기에 빠져 있을 수 있다는 점이다. 송신측에서 데이터를 보낸다는 보장이 없는 경우도 있다.
위 코드에 추가로 간단한 타이머 기능을 구현하면 아래와 같다.
uint32_t count=10000; // 시스템 상황에 따라 최대값을 조정한다.
/// 대기상태. count 값 감소하여 0이 되어도 while탈출하고 혹은 count값이 0이 되기전에 RX버퍼에 데이터 수신되어도 탈출. while(RX버퍼에 데이터가 없다면. && --count) ;
if(count > 0) { 버퍼의 데이터 읽기처리. } else //count 가 0인 경우. { 데이터 수신 못했음. 오류 처리. }
|
///430.
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
1바이트 변수의 비트 분리하여 2바이트 걸쳐서 저장하기. (0) | 2015.10.27 |
---|---|
C언어, continue. 반복문에서 continue 이하 실행 생략 루프진행. (0) | 2015.09.13 |
ASCII 코드. (0) | 2015.09.01 |
배열 초기화. (0) | 2015.07.07 |
VC++ 타이틀바에 보이는 프로그램 이름 변경. (0) | 2015.06.06 |
댓글