본문 바로가기
반응형

전체 글398

[STM32] DMA + IDLE + 링버퍼 실전 DMA, IDLE, 링버퍼를 사용한 실전 예제 📌 HAL_UART_Receive_DMA + IDLE 인터럽트 조합 링버퍼 방식✨ DMA + IDLE + 링버퍼 완성 예제#include "main.h"// 수신 버퍼 (DMA용)#define UART_RX_BUFFER_SIZE 256uint8_t uart_rx_dma_buffer[UART_RX_BUFFER_SIZE];// 링버퍼 (수신 데이터 임시 저장용)#define UART_RING_BUFFER_SIZE 1024uint8_t uart_ring_buffer[UART_RING_BUFFER_SIZE];volatile uint16_t ring_head = 0;volatile uint16_t ring_tail = 0;extern UART_HandleTypeDe.. 2025. 5. 2.
[STM32] DMA + 인터럽트 + 링버퍼 수신 방식의 개념 DMA, 인터럽트, 링버퍼 수신 방식의 개념 정리 📌 HAL_UART_Receive_DMA + IDLE 인터럽트 조합 링버퍼 방식🧩 왜 중요한가?UART는 기본적으로 데이터를 한 바이트씩 순차적으로 받음DMA는 UART 수신을 CPU 개입 없이 버퍼에 넣어줄 수 있음하지만 "DMA가 언제 수신을 끝내는지" 를 알기가 어려움이걸 해결하는 게 바로 IDLE 인터럽트UART 라인이 일정 시간 동안 변화가 없으면 "IDLE" 발생즉, "수신이 끊겼다"고 알 수 있음DMA + IDLE 조합은CPU 부하를 줄일 수 있음수신 완료 시점을 정확하게 인식할 수 있음 📌 "빠른 연속 데이터 수신"에도, "비정기적 데이터 수신"에도 매우 효과적🚀 장점CPU 부하 최소화→ DMA가 수신, CPU는 IDLE 때만 개입.. 2025. 5. 1.
[STM32] DMA vs 인터럽트 DMA vs 인터럽트 수신 방식 비교 및 장단점, 상황별 사용 (STM32 기준)🧩 기본 비교구분인터럽트 방식DMA 방식CPU 개입이벤트마다 직접 ISR처리데이터 전송 전체를 DMA가 맡아 CPU는 최소 관여반응 속도개별 이벤트(단건 전송)마다 빠른 반응전체 데이터 전송 완료 후 일괄 처리CPU 부하빈번한 인터럽트 발생 시 CPU 부하 ↑데이터 전송 중 CPU는 자유롭게 다른 작업 가능설정 복잡성간단 (인터럽트 Enable만 하면 됨)복잡 (DMA 스트림/채널 설정, 전송 크기 관리)메모리 일관성관리 간편(캐시가 있는 경우) 캐시 일관성 관리 필요에러 핸들링작은 데이터 단위에서 세밀한 핸들링 가능전송 완료 후 일괄 핸들링디버깅 난이도쉬움 (인터럽트 발생 즉시 디버깅 가능)어려움 (DMA 완료 후 결과만.. 2025. 4. 30.
[STM32] DMA(Direct Memory Access) STM32에서의 DMA(Direct Memory Access)📚 기본 개념DMA란?CPU를 거치지 않음메모리 ↔ 주변장치, 또는 메모리 ↔ 메모리 간에 전송직접 데이터 전송을 수행하는 하드웨어 모듈CPU가 데이터 전송에 관여하지 않기 때문에 아래 가능CPU는 다른 작업에 집중 가능 → 성능 최적화⚙️ STM32 DMA 구조STM32 MCU는 DMA 컨트롤러를 내장하고 있음보통 여러 개의 Stream/Channel 지원각각 Source Address → Destination Address 전송 지원데이터 전송이 끝나거나, 에러 발생 시 인터럽트 발생 가능 STM32F7 기준DMA1, DMA2 컨트롤러각각 다수의 Stream 제공 (ex: DMA2_Stream0)🛠️ DMA 기본 전송 흐름DMA 컨트롤러.. 2025. 4. 29.
[STM32] 인터럽트(Interrupt) 시스템 STM32에서의 인터럽트(Interrupt) 시스템📚 기본 개념인터럽트(Interrupt)란?CPU가 다른 작업을 수행 중이라고 가정외부 신호나 하드웨어 이벤트가 발생현재 작업을 일시 중단하고 긴급 처리를 수행하는 시스템STM32는 Cortex-M 기반이라Nested Vectored Interrupt Controller (NVIC) 가 인터럽트를 관리함⚙️ 인터럽트 처리 흐름인터럽트 발생 (ex: 버튼 눌림, UART 데이터 수신 완료)NVIC가 감지하여 현재 실행 중인 코드 중단인터럽트 서비스 루틴(ISR) 으로 이동ISR 코드 실행return from interrupt 명령으로 이전 코드 복귀🔧 STM32 인터럽트 주요 구성 요소구성요소설명EXTIExternal Interrupts (GPIO 핀 .. 2025. 4. 28.
[STM32] CHxN 채널을 사용해서 PWM 출력? STM32에서 CHxN 채널을 사용할 때 PWM 출력이 되지 않는 이유와 해결 방법1. STM32CubeMX나 STM32CubeIDE를 사용하여 PWM을 설정할 때 CHx를 사용하라고 함2. 이때TIM1_CH2N, TIM8_CH2N 같은 CHxN 채널을 선택하면 PWM이 동작하지 않는 문제가 발생할 수 있음3. CHxN 채널의 특징과 원인, 그리고 실제 해결 방법을 정리🧩 문제 상황PWM 설정 시 다음과 같은 CHxN 채널을 사용하면 PWM 출력이 정상적으로 동작하지 않음TIM1_CH1N, TIM1_CH2N, TIM1_CH3NTIM8_CH1N, TIM8_CH2N, TIM8_CH3N이 채널을 선택하고 코드도 정상적으로 생성했음에도 LED가 켜지지 않거나, 오실로스코프에 파형이 출력되지 않는 경우가 많음?.. 2025. 4. 27.
[STM32] VSCode에서 오류 모음 VSCode에서 STM32CubeMX로 개발환경 구축할때 오류 모음❌ ../Core/Startup/startup_stm32f746zgtx.s:61: Error: junk at end of line, first unrecognized character is \🔍 원인해당 .s 파일이 CRLF 줄바꿈 형식으로 저장됨또는 비정상적인 특수문자(\ 등)가 포함되어 있음✅ 해결 방법LF로 줄바꿈 변경 (VSCode 우측 하단 → CRLF → LF로 변경)또는 dos2unix startup_stm32f746zgtx.s 명령 사용❌ fatal error: stdint.h: No such file or directory🔍 원인macOS에 설치된 arm-none-eabi-gcc가 newlib 라이브러리를 제대로 참조하.. 2025. 4. 26.
[STM32] Please login to download a software package 오류 Please login to download a software package이 창은 STM32CubeIDE 또는 STM32CubeMX에서 필요한 소프트웨어 패키지 (예: STM32F7 시리즈의 HAL 드라이버)를 다운로드하려 할 때, 로그인이 되어 있지 않아 거부된 상황임✅ 해결 방법🔹 1. ST 계정 로그인 필요STMicroelectronics의 공식 계정(myST)이 있어야 다운로드가 가능함👉 로그인 절차상단 메뉴Help > STM32Cube Updates > Connection to mySTST 계정으로 로그인하거나, 계정이 없다면 가입📌 ST 계정 만들기https://my.st.com 에서 회원가입 (무료)🔹 2. 로그인 후 다시 시도로그인한 상태에서 STM32CubeIDE가 자동으로 필.. 2025. 4. 25.
Targeted Binary Type, Targeted Project Type STM32CubeIDE에서 Targeted Binary Type, Targeted Project Type환경설정하다보면 나오는 각각의 버튼이 의미하는 바를 아래와 같이 정리✅ 1. Targeted Binary Type옵션설명🔘 Executable(기본)보드에서 직접 실행 가능한 프로그램을 생성함 (예: .elf, .bin)⚪ Static Library실행 파일이 아니라, 다른 프로젝트에서 재사용할 수 있는 정적 라이브러리(.a 파일)를 생성 예: 공통 드라이버, 유틸, HAL 래퍼 등만 따로 모듈화할 때 사용💡 대부분의 경우는 Executable을 선택하면 됨✅ 2. Targeted Project Type옵션설명🔘 STM32Cube (기본값)STM32CubeMX 기반의 설정 가능 프로젝트를 생성함 .. 2025. 4. 24.
VSCode + CubeMX와 CubeIDE STM32 개발 환경 비교 VSCode + STM32CubeMX vs STM32CubeIDE1. STM32 개발 환경에서 VSCode + STM32CubeMX 조합과 STM32CubeIDE의 차이점 비교2. 개발, 유지보수, 형상관리(Git 등) 측면에서 비교🧩 공통 개요항목설명STM32CubeMX핀 설정, 클럭 구성, 미들웨어 선택 등을 GUI로 설정하고, 코드 생성기 역할 수행STM32CubeIDEEclipse 기반 통합 개발 환경 (CubeMX 포함), 빌드, 디버깅, 플래싱까지 통합VSCode가볍고 자유도가 높음, 외부 도구(GCC, GDB, make/CMake 등)와 연동하여 개발 가능🛠️ 1. 개발 측면 비교항목VSCode + CubeMXSTM32CubeIDE사용자 인터페이스가볍고 빠르며 깔끔함Eclipse 기반이라.. 2025. 4. 23.
반응형