인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

핑핑's profile image
핑핑

asked

STM32 CAN Communication

SW Implementation - 23

uart1 인터럽트 관련

Written on

·

10

0

 

image.png

 

image.png

uart1 수신 인터럽트 테스트 중 질문이 있습니다.

프로그램 실행하면 첫번째 그림과 같이 무작위 쓰레기값이 출력이 되고 그 이후 command입력시 두번째 그림과 같이 개행 없이 출력이 됩니다. 간혹 쓰레기값이 무한정으로 출력되는 경우도 있습니다.

image.png

반면 강의자료에는 @b1t1*이 각각 개행되어 출력됩니다.

1) WinIDT 프로그램 소스 확인해보니 @ct1* 과 같은 방식으로 커맨드 문자가 바뀐것 같은데 그게 맞나요?

2) 프로그램 실행 시 쓰레기값이 출력되는 원인이 무엇인지, 커맨드 출력 시 개행이 되지 않는 이유가 무엇인지 질문드립니다.

CANMCU

Answer 2

0

ihil님의 프로필 이미지
ihil
Instructor

안녕하세요.

아래 인프런 AI 인턴 답글도 좋은 답글이네요.

1) 무작위 쓰레기 값 : RS232 to TTL 모듈 문제일 수 있습니다. 요즘 판매하는 RS232 to TTL 모듈에 문제가 많은 것 같습니다. 우선 해결 방법으로는 Baudrate 속도를 낮추어서 해 보세요. 9600 정도 (or 2400) 정도로 낮추어서 해보세요. fw 프로그램에서 uart 속도를 변경하고, WinIDT에서 해당 속도로 Open하면 됩니다. 아니면 "uart to usb converter" 를 별도로 구매하시는 것도 방법일 것 같습니다.

2) 개행이 되지 않는 문제 : page-34 페이지를 보면 그렇게 나오는게 맞습니다.

페이지 상단의 소스를 보면, (116 - 121 라인) 한문자를 출력하고 "\r\n"을 출력하기 때문에 한문자씩 라인별로 출력되는 게 맞습니다.

제 경험으로는 printf() 문은 뒤에 "\r\n"을 추가하지 않으면 해당 문자열이 출력되지 않았던 것 같습니다. 그래서 한문자씩 출력하고 뒤에 "\r\n"을 추가한 것 같습니다.

감사합니다 ~!!

0

안녕하세요, 인프런 AI 인턴입니다. 핑핑님.

UART1 인터럽트와 관련된 문제에 대해 몇 가지 가능성과 기존 유사 질문 및 답변을 정리해 보았습니다.

  1. 무작위 쓰레기 값 출력 문제:

    • 이는 주로 전송 시작 시점의 초기화나 통신 신호 불안정으로 인해 발생할 수 있습니다. COM 포트 설정에서 올바른 보레이트(115200)로 설정한 것을 확인 후, 처음 전원을 켤 때 Com Port를 Close 하고 다시 Open 하여 재설정해보시길 바랍니다.
    • 관련 질문으로 WinIDT 콘솔에 프린트 출력 안됨 을 참조하세요.
  2. 커맨드 출력시 개행 문제:

    • 개행 없이 출력되는 문제는 UART 통신 중 ‘\n’ 또는 ‘\r’ 등의 개행 문자가 전송되지 않았거나, 설정에서 누락되었을 가능성이 있습니다. 소스 코드의 UART 전송 부분을 확인하여 개행 문자가 포함되어 있는지 점검하세요.
  3. WinIDT 프로그램의 설정 문제:

    • WinIDT와 같은 터미널 프로그램에서 설정 오류가 발생할 수 있습니다. 프로그램 내 옵션에서 개행 기능에 대한 설정을 확인하거나, 다른 터미널 프로그램(PuTTY 등)을 사용해 보세요.

관련된 다른 해결 방법들을 제시한 게시글도 있습니다:
- WinIDT v1.2 USART 통신불가
- WinIDT 프로그램 printf 오류

이 답변이 문제가 해결되는데 도움이 되었기를 바랍니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

핑핑's profile image
핑핑

asked

Ask a question