본문 바로가기

Embedded/STM3213

[STM32] PWM를 통한 SG-90 서보 모터 제어 - 개발 환경개발 보드 : NUCLEO-F103RB개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.01. 서론  많은 액추에이터는 전압을 통해 특정한 각도 및 세기를 제어할 수 있습니다. MCU에서는 DAC을 통해 전압을 제어할 수 있지만, 더 쉽고 간단하게 전압을 직접 조절하지 않고 엑추에이터의 각도 및 세기를 조절할 수 있는 방법이 있습니다. 그 방법이 바로 PWM입니다. PWM을 간략하게 소개하자면 특정 시간내에 전압이 HIGH인 비율을 조절하는 것입니다.    만약 PWM에서 High가 5V이고 25%의 Duty cycle라면 5V X 0.25 = 1.25V와 비슷한 세기를 엑추에이터에 전달하는 것입니다. 그리고 PWM을 사용하면서 주의 사항이 있습니.. 2025. 4. 10.
[STM32] 외부 인터럽트(EXTI : EXTernal Interrupt)를 통해 버튼의 입력 감지 - 개발 환경개발 보드 : NUCLEO-F103RB개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.01. 서론  인터럽트를 사용하기 전 사전적 정의부터 확인해보는 것이 좋습니다.  사전적 정의에서도 알 수 있듯이 "방해하다, 중단시키다 등"의 의미를 가지고 있습니다. MCU 관점에서의 인터럽트는 프로그램의 실행 흐름(STM32에서는 main 함수)을 방해 및 중단하고 급하게 처리해야 할 작업(Task)를 의미합니다.   인터럽트를 처리하는 것을 보면 마치 운영체제가 프로세스를 스케쥴링하는 것과 비슷하게 보이지만 반드시 주의 해야할 사항들이 있습니다. - 주의 사항기존 프로그램의 흐름의 영향이 가지 않도록 빠른 시간내 처리를 완료해야한다.중요) HAL_Dela.. 2025. 4. 6.
[STM32] USART / UART를 통한 데이터 송수신 - 개발 환경개발 보드 : NUCLEO-F103RB개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.01. 서론  USART(Universal Synchronous Asynchronous Receiver Transmitter)는 MCU으로 통신을 하려고 할때 가장 처음 배우는 통신 방법일 것입니다. 그 이유는 대부분의 개발보드에서 USART으로 PC와 통신할 수 있도록 하는 기능을 제공하고 있기 때문이며, 만약 없더라고 하더라도 USB to TTL을 사서 쉽게 해당 기능을 사용할 수 있기 때문입니다. 또한 그 외 다양한 장점이 있지만, 이번에는 STM32으로 USART를 사용해 PC와 통신하는 기능을 사용해보도록 하겠습니다. 2. 프로젝트 생성  STM32 C.. 2025. 4. 6.
[STM32] GPIO 레지스터를 주소로 직접 접근하여 GPIO 제어 - 개발 환경개발 보드 : NUCLEO-F103RB개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.0 - 관련 자료1) RM0008 메뉴얼https://www.st.com/resource/en/reference_manual/rm0008-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf1. 서론  STM32를 개발할 때 STM32에서 제공하는 라이브러리를 사용하여 주변장치를 초기화 및 제어합니다. 그러므로 직접적으로 레지스터를 제어할 이유가 거의 없습니다. 그리고 직접적으로 레지스터를 제어하여 개발하기에는.. 2025. 4. 5.
[STM32] GPIO로 버튼 및 LED 입출력 실습 -개발 환경개발 보드 : NUCLEO-F103RB개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.01. 서론  GPIO(General Perpose Input Output)은 새로운 MCU를 다루게 될때 가장 먼저 테스트 해보는 기능 중 하나입니다. 마치 새로운 언어를 배울 때 "Hello world"를 출력 하는 것과 마찬가지입니다. 이번 포스트에서는 GPIO를 통해 보드에 기본적으로 탑재되어 있는 LED와 버튼으로 간단한 입출력을 실습하도록 하겠습니다.2. 프로젝트 생성  STM32 CubeIDE를 사용하셔도 상관없으며, 저의 경우는 VS code를 사용하여 개발할 것이므로 VS code로 개발하시고 싶은 분은 아래 포스트를 참고 하셔서 프로젝트를 생성해.. 2025. 4. 5.
[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.