저렴한 와이파일 모듈로 ESP8266 많이 사용한다고 하여, 지인에게 여분의 ESP8266 모듈 얻어 일주일동안 토나올 정도로 아주 제대로 꽃삽질을 하였다. STM32 보드에 ESP 와이파일 모듈을 내장한 보드라면 ESP 모듈을 직접 제어하고 ESP에서 제공하는 라이브러리 사용하여 소켓프로그램을 할 수 있겠지만, STM32 Discovery 데모보드를 사용하고 있는 나로썬, UART로 ESP 마이컴과 통신하여 와이파이를 제어할 수밖에 없다. 지인에게 얻은 ESP8266 모듈에는 마이컴이 내장되어 있고, 양산용 펌웨어가 아닌 디버그 펌웨어가 올라가 있어 UART 통신 과정에서 수많은 예외상황이 발생하여 삽질의 연속이었다. 디버그 메시지로 UART RX 인터럽트가 빈번하게 발생하여 오버헤드로 인한 UART ..
표준 입출력으로 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으로 할당된 것을 확인할 수 있다. ..
아래 포스트에서 GPIO Input 포트를 폴링하여 Led를 제어했다면 이번 포스트는 PA0 Pin를 인터럽트로 설정하여 Led를 제어하려고 한다. GPIO Input을 이용한 LED Control STM32F407G 데모보드는 2개의 버튼을 가지고 있으며, PA0 Pin을 GPIO Input으로 설정하여 Blue 버튼을 입력하게 되면, PA0 High로 변경되며 이때 LED를 켜지도록 할 예정이다. 아래 회로도를 참고하기 바란다. memories.tistory.com PA0 Pin을 인터럽트로 설정하려면 CubeIDE에서 아래와 같이 Pin 타입을 GPIO_EXTI0로 설정하도록 한다. 그리고 NVIC 항목에서 EXTI line0를 활성화 시키도록 한다. 위 상태로 ioc 파일을 저장하면 GPIO 초기..
STM32F407G 데모보드는 2개의 버튼을 가지고 있으며, PA0 Pin을 GPIO Input으로 설정하여 Blue 버튼을 입력하게 되면, PA0 High로 변경되며 이때 LED를 켜지도록 할 예정이다. 아래 회로도를 참고하기 바란다. STM32CubeIDE에서 PA0는 GPIO Input으로 설정하고 PD12 ~ PD15는 GPIO Output으로 설정하고 저장하면 각 Pin type과 초기값을 설정하는 템플릿 코드가 생성된 것을 확인할 수 있다. 위와 같이 CubeIDE에서 MCU 초기 설정에 대한 코드가 생성되므로, Pin 타입과 초기값에 대한 고민없이 바로 Blue 버튼 입력시 LED를 어떻게 제어할 것인가만 고민하면 된다. 위 회로도처럼 Blue 버튼이 입력되면 PA GPIO는 High 설정되..
다양한 테스트가 가능한 STM32 개발보드를 갖고 있다면 여러가지 만들어보고 테스트 할 수 있지만, 만약 ST에서 판매하는 STM32F407VG 디스커버리 데모보드만 갖고 있다면 ST에서 제공하는 Datasheet를 참고하여 간단하게 LED 테스트 할 수 있다. 이것은 CubeIDE를 사용하여 Pin 설정과 코딩을 어떻게 하는지 학습하는데 꽤 도움이 된다. STM32F4DISCOVERY - STMicroelectronics STM32F4DISCOVERY - Discovery kit with STM32F407VG MCU * New order code STM32F407G-DISC1 (replaces STM32F4DISCOVERY), STM32F407G-DISC1, STMicroelectronics www.s..
STM32 CubeIDE는 수많은 ST MCU 및 MPU 개발을 위한 통합 개발 환경을 제공하며, 기존 TrueStudio와 CubeMX을 통합한 것이다. 따라서 CubeMX로 Pin 설정을 하고, 코드 작성을 TrueStudio로 작성했다면 이제는 CubeIDE 하나로 모든 처리가 가능하다. STM32CubeIDE - STMicroelectronics STM32CubeIDE - Integrated Development Environment for STM32, STM32CubeIDE-RPM, STM32CubeIDE-Lnx, STM32CubeIDE-Win, STM32CubeIDE-DEB, STM32CubeIDE-Mac, STMicroelectronics www.st.com CubeIDE는 윈도우, 맥OS ..
아래 블로그의 리눅스에서 STM32F4 개발환경 구성 포스팅을 참고하였으며, 우분투 20.04 버전에서 필요한 패키지 및 라이브러리 설치를 정리하였다. Blink for stm32f4-discovery board on Linux with Makefile I was inspired by this great post by Ross Wolin to make (yet) another blink tutorial for the stm32f4-discovery board on Linux. Ross Wolin did a great job writting makefiles for the peripheral libra… liviube.wordpress.com 우분투에서 STM32F4 개발환경을 구성하기 위해 아래의 필수 ..