STM3214 [PlatformIO] STM32를 아두이노처럼 개발 - 개발 환경 개발 보드 : NUCLEO-F429ZI1. 서론 STM32 MCU의 모든 기능을 사용하기 위해서는 STM32 CubeIDE(그외 IAR, KEIL)를 사용하는 것이 좋다고 생각합니다. 하지만 아두이노에서 개발하는 것이 편한 사람들이 많으며 또한 방대한 라이브러리 또한 무시할 수 없습니다. 또한 다행인 것이 PlatformIO를 사용하여 Visual studio code에서 arduino 처럼 개발할 수 있는 2가지 토끼를 잡을 수 있습니다. 단, 주의 사항으로 세부적인 설정을 할 수 없으므로 다음과 같은 기능이 필요 한 사람은 CubeIDE로 개발 하는 것을 추천한다. 1. Clock를 세부 조정 해야하는 개발자 2. DMA와 같은 기능을 사용해야 하는 개발자 2. PlatfromI.. 2025. 3. 26. [STM32] I2C 통신으로 1602 Character LCD 출력 소스코드https://github.com/MainForm/STM32_LCD_I2C참고 문서PCF8574 datasheet 1602A datasheet개요 I2C통신은 2개의 선(SDA, SCL)을 통해 많은 Slave Devices과 통신할 수 있는 Protocol입니다. 앞으로 이 통신으로 EEPROM이나 센서에서 데이터를 송수신하는데 많이 사용하게 될 것입니다. 많은 디바이스를 2개의 선으로 통신할 수 있다는 장점이 있지만 통신속도가 다른 통신에 느릴 수 밖에 없어 만약 속도를 중요시 해야하는 통신의 경우 SPI 통신을 고려해야합니다. 이 포스트에서는 I2C의 장점이 가장 또렷하게 드러나는 LCD 출력을 해보려고 합니다. LCD의 경우 작동을 하기 위해서 최소한으로 8pin(데이터 4pin + .. 2025. 2. 22. [STM32] 간략한 Timer 사용 방법(1ms 주기 설정) 첨부파일개발 환경 개발 보드 : nucleo-f429zi board개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.0개요 임베디드 시스템에서 타이머는 매우 기본적인 기능중 하나로 실습시 반드시 해보는 기능중 하나입니다. 타이머를 사용하는 이유는 특정 테스크를 특정 시간마나 반복하여 동작하거나 특정 시간 이후 실행하기 위해 자주 사용됩니다. 또한, 시스템 전체를 멈추는 HAL_Delay함수(AVR의 경우 _delay_ms 함수)를 사용시 다른 기능도 중단되므로 해당 함수 대신 사용하는 기능이다. 타이머의 동작 방법은 사람이 손가락으로 시간을 세는 것과 같다고 할 수 있습니다. 사람이 손가락을 사용하여 10초를 센다고 하였을 때, 우리는 1초마다 손가락을 .. 2025. 2. 16. [STM32] 인터럽트를 이용한 echo UART 통신 1. STM32의 UART 통신의 문제점 STM32의 가장 큰 문제점은 아두이노에 비해 UART를 사용하기 매우 힘들기에 배우기 힘들어 한다고 생각한다. 내가 경험한 바로 크게 2가지 정도 UART를 사용하는데 힘들어하는 점은 다음과 같다. 1.1. 수신하려는 데이터 길이가 고정 많은 사람들이 STM32를 다루기전에 아두이노를 먼저 사용한 경험이 있는 사람이 대부분일 것이다. 아두이노에서는 굳이 데이터의 길이를 알지 않아도 자동적으로 처리해주기에 개발하는데 매우 편리하다. 하지만, STM32의 경우 데이터를 송수신 하는 경우 데이터의 길이를 미리 알아야 송수신이 가능하다. 특히, 데이터의 길이가 가변적인 경우( ex. 명령어를 보내는 경우) 매우 난감하다. 1.2. 인터럽트가 도중 멈추는 경우 .. 2024. 9. 13. [STM32] C++에서 printf() 함수 사용 #ifdef __cplusplusextern "C" {#endifint __io_putchar(int ch){ // UART3에 ch에 있는 문자 1개를 1ms내 전송 if(HAL_UART_Transmit(&huart3, (uint8_t*)&ch, 1 ,1) != HAL_OK) return 0; //출력 실패 시 0 리턴 return ch; //출력 성공 시 출력한 데이터 리턴}#ifdef __cplusplus}#endif 재정의한 __io_putchar() 함수에 extern"C"를 감싸주면 정상적으로 동작 한다. 2024. 9. 12. [STM32] VScode에서 C++로 빌드 1. 개발 환경반드시 VScode의 STM32 Extension의 버전이 2.1.0 이상인지 확인해야 한다. 2. 설정2.1. 파일 확장자를 cpp로 변경먼저, cpp로 빌드 하고자 하는 파일의 확장자를 cpp로 변경한다.2.1. CMake 설정CMake파일에서 확장자를 변경한 파일에 대해서 변경해주어야 한다. 2024. 9. 11. 이전 1 2 3 다음