우분투를 사용할 때는 프로그램을 전환하여도 현재 입력소스 상태가 아닌 프로그램에서 사용한 입력소스를 유지하고 있는 것이 당연한 것이라 이것이 이렇게 중요한지 요즘 새삼 느끼고 있다. macOS는 입력소스는 모든 앱에 동일하게 적용되기 때문에 특정 앱에서 한글로 입력소스를 설정한 상태라면 다른 앱으로 전환하여도 한글 상태가 유지된다. 이것은 큰 문제가 아니지만 요즘 개발하는 제품의 UART가 LPUART를 사용하기 때문에 한글 입력이 들어오면 타겟보드의 UART Rx가 먹통 되는 현상 때문에 정신이 피폐해지고 있었다. 처음에는 내가 사용하는 시리얼 프로그램인 Tiny Serial에 버그가 있는줄 알고 원인을 찾았지만 딱히 문제 되는 부분이 없어 고민하고 있던 중 SecureCRT나 Serial IOIO 앱..
저렴한 와이파일 모듈로 ESP8266 많이 사용한다고 하여, 지인에게 여분의 ESP8266 모듈 얻어 일주일동안 토나올 정도로 아주 제대로 꽃삽질을 하였다. STM32 보드에 ESP 와이파일 모듈을 내장한 보드라면 ESP 모듈을 직접 제어하고 ESP에서 제공하는 라이브러리 사용하여 소켓프로그램을 할 수 있겠지만, STM32 Discovery 데모보드를 사용하고 있는 나로썬, UART로 ESP 마이컴과 통신하여 와이파이를 제어할 수밖에 없다. 지인에게 얻은 ESP8266 모듈에는 마이컴이 내장되어 있고, 양산용 펌웨어가 아닌 디버그 펌웨어가 올라가 있어 UART 통신 과정에서 수많은 예외상황이 발생하여 삽질의 연속이었다. 디버그 메시지로 UART RX 인터럽트가 빈번하게 발생하여 오버헤드로 인한 UART ..
아래 이미지와 같이 uart를 사용하여 디버그 메시지 확인 및 사용자가 특정 기능을 확인하기 위한 커맨드를 입력할 수 있다. 이것은 개발할 때 반드시 필요한 기능이기 때문에 uart 관련 전용 파일로 만들어 다른 프로그램에서 쉽게 적용할 수 있도록 코딩하였다. 사용자 입력을 받으려면 uart data를 인터럽트로 받는 것보다 폴링 방식으로 data를 수신하는 것이 편하지만, 이 코드에서는 인터럽트 방식을 사용하였다. 따라서 아래 이미지와 같이 MCU를 설정하도록 한다. STM32CubeIDE는 MCU 설정에 맞게 소스코드를 생성하는데, 이 글에서는 UART 관련 사항을 uart.h / uart.c 파일로 관리할 것이다. 우선 main.c 파일에서 MX_USART2_UART_Init() 함수를 제거하고 u..
표준 입출력으로 uart로 설정하는 것은 인터럽트없이 가능하다. 아래 이미지와 같이 UART 및 LED Pin만 설정하여 printf와 scanf 동작을 확인할 예정이다. UART를 USART2으로 설정하여 PA2, PA3를 사용하고 있으며, STM32F4xx 데모보드에서 해당 Pin에 와이어를 연결하도록 한다. UART로 표준 입출력을 사용하기 위해 syscall.c 파일에 weak 함수로 설정된 _read() / _write() 함수를 재정의하여 사용하면 간단하게 구현이 가능하다. 시스템콜인 _read()와 _write() 함수를 아래와 같이 재정하여 간단하게 UART로 표준 입출력으로 설정할 수 있다 int _read(int file, char *ptr, int len) { if(HAL_UART_R..
지금까지는 STM32F407G 데모보드로 간단한 테스트를 진행하였지만, 지금부터는 MCU의 특정 Pin에 와이어를 연결하여 주변 장치를 제어할 예정이다. 첫번째로 개발할 때 가장 중요한 디버그 메시지를 보기 위해 UART를 연결하려고 한다. 데스크탑 PC에는 시리얼 포트가 있지만, 점점 없어지는 추세이므로 USB2Serial IC을 사용하여 UART 메시지를 출력할 것이다. USB2Serial IC는 인터넷에서 쉽게 구할수 있으며, 이 포스트에서는 CH340을 사용하였다. UART4 사용하여 시리얼 통신를 하기 위해 STM32CubeIDE를 사용하여 다음과 같이 Pin을 설정하였다. UART4-TX는 PA0을 사용하지만, PA0에 GPIO_EXTI0을 할당하여 PC10으로 할당된 것을 확인할 수 있다. ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.