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

Inflearn Community Q&A

핑핑's profile image
핑핑

asked

STM32 CAN Communication

SW Implementation - 23

uart1 인터럽트 관련

Written on

·

21

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"을 추가한 것 같습니다.

감사합니다 ~!!

핑핑님의 프로필 이미지
핑핑
Questioner

image.png

답변 감사드립니다. 다만, 테스트하면서 이해가 가지 않는 현상이 발생합니다.

디버그 모드로 인터럽트 함수에 bp 찍어보았는데

WinIDT에서 Control버튼 클릭 시에 UART 인터럽트가 발생하지 않고, 바로 콘솔창에 사진과 같이 명령텍스트가 바로 출력됩니다. baudrate 속도 조절해가며 테스트해보았는데 같은 현상입니다. 며칠째 이부분에서 헤메고 있는데 부탁드립니다 ㅠㅠ 아니면 따로 코드를 봐주실 수 있으신가요?

ihil님의 프로필 이미지
ihil
Instructor

안녕하세요.

코드 압축해서 메일(alex@ihil.co.kr)로 보내주세요.

확인 해 보겠습니다.

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