go to link 그런 다음 main() 함수에서 uart_write() 함수를 사용하여 환영 메시지를 인쇄합니다. 다음 메뉴는 메인 메뉴로 초기화되고 터미널에서 인쇄됩니다. 여기서는 매크로 ARRAY_SIZE를 사용하여 메뉴 항목 수를 전달합니다. 실제로 이는 전송 방법에 차이가 있기 때문에 MCU의 UART 모듈과 PC 주변 장치 또는 PC 직렬 포트 간의 통신을 달성하기 위해 추가 회로가 필요하다는 것을 의미합니다. 예를 들어 TTL의 경우 UART 출력의 전압은 Vcc가 논리적 1을 나타내고 논리 0은 출력시 0V인 Vcc까지0V 범위일 수 있습니다. 한편 RS-232에 따르면 논리적 0은 3 과 25 V 사이의 양수 전압이고 논리적 1은 -3과 -25 V 사이의 음의 전압이다. 따라서 소프트웨어 측 에서 MCU의 UART 모듈과 PC 주변 장치는 동일하고 임베디드 장치의 대부분은 우리가 PC 세계에 대해 이야기 할 때 RS-232를 대체 무엇 이었다 PC 직렬 포트 또는 심지어 USB와 통신하기 쉬운 적응할 수 있습니다. 이것이 또한 RS-232가 임베디드 개발자의 관점에서 가장 중요한 표준인 이유이기도 합니다. RS-232의 일부 규칙은 임베디드 월드에서 자체 사용법으로 나타났습니다. 또 다른 이유는 하드웨어 생산자가 하나의 회로를 추가하여 PC 주변 기기에 도합하여 자체 제품을 만들고자 하는 욕구입니다. 견고성을 위해 추가하고 싶은 한 가지 추가 기능이 있습니다. Linux의 터미널에 쓸 때 `n`을 사용하여 새 줄을 만드는 것이 유효합니다. 그러나 터미널 설정에 따라 다르며 항상 그렇지 않을 수도 있습니다.

source site

문자 `n`은 줄 바피 문자입니다. 용어는 입력을 누르면 롤러가 종이를 한 줄 위로 이동하는 타자기의 좋은 옛날에서 파생됩니다. 그러나 머리도 페이지의 시작(왼쪽)으로 돌아가야 합니다. 이를 캐리지 리턴이라고 하며 ASCII 문자 표현은 `r`입니다. 이 두 문자는 함께 오늘날 일반적으로 줄 바이라고 불리는 것을 만들며, 입력 키를 눌러 항상 합니다. 그러나 Tera Term 또는 minicom과 같은 터미널 에뮬레이터에서는 둘 다 수신되어야 합니다(때로는 비활성화될 수 있음) 그렇지 않으면 텍스트가 다음 줄의 동일한 위치에서 계속됩니다. 예를 들어, “HellonWorldn”은 UART에서 컨트롤러 부분을 설명하지 않는 이유를 다음과 같이 표시합니다. 당신은 나에게 컨트롤러 디자인과 baud 발전기 디자인을 보낼 수 있습니다.

나는 단지 게이트와 플립 플롭을 사용하여 uart를 구현해야합니다. 마지막으로 settxactive()는 UART 전송 활성 표시기로 사용할 임프 GPIO 핀을 구성합니다.