Home > Study > C Language > ARM System Programming > [ex41] #3 UART 숫자 입력 및 문자열 → 정수 변환 함수 실습

[ex41] #3 UART 숫자 입력 및 문자열 → 정수 변환 함수 실습
Study Language

문제 설명


UART를 통해 최대 4자리까지의 숫자 문자열을 입력받고, 이를 정수로 변환하여 반환하는 함수를 작성하라.

  • 입력 문자는 한 글자씩 UART 수신 레지스터에서 읽음
  • 수신된 문자는 즉시 에코(되돌려 출력) 처리
  • 입력이 \r (Enter)일 경우 즉시 입력 종료 후 정수 반환
  • 숫자 이외 문자는 처리하지 않으며, 최대 4자리까지만 입력 가능

정답 코드


int Uart_Get_Int_Num(void)
{
    char s[10];
    int i;
	int num = 0;
	
    for (i=0;i<4;i++)
    {
        while (!Macro_Check_Bit_Set(USART1->SR, 5));
        s[i] = USART1->DR;

        while (!Macro_Check_Bit_Set(USART1->SR, 7));
        USART1->DR = s[i];

        if (s[i] == '\r')
        {
            return num;
        }
		num = num * 10 + (s[i] - '0');
	}
}

메모


printf 내부의 \n 습관화 필요