본문 바로가기

임베디드31

디바운싱(Debouncing)이란? - 버튼 입력의 정확도를 높이는 핵심 개념 임베디드 시스템에서 가장 많이 사용하는 입력 장치 중 하나가 버튼(Switch)입니다.단순해 보이는 버튼 입력도 실제로는 노이즈와의 전쟁이라고 할 수 있는데요.그 이유는 바로 디바운싱(Debouncing) 때문입니다.디바운싱이란?디바운싱(Debouncing)은 버튼을 누르거나 뗄 때 발생하는 불필요한 신호의 변동, 즉 스위치 접점이 떨리는 현상(bounce)을 제거하는 처리 과정입니다.스위치를 누르면 단순히 한 번 눌리는 것 같지만, 전기적 신호는 매우 짧은 시간 동안 여러 번 ON/OFF를 반복하며 튕기듯 전달됩니다.이 상태에서 프로그램이 그대로 신호를 처리한다면, 버튼을 한 번 눌렀음에도 여러 번 눌린 것처럼 인식할 수 있죠.왜 디바운싱이 필요할까?정확한 입력 감지 : 여러 번 눌렸다고 인식되는 오류.. 2025. 4. 17.
STM32CubeIDE에서 한글 주석 사용하는 방법 임베디드 개발을 하다 보면코드에 한글 주석을남겨야 할 일이 꽤 많습니다.특히 협업 시에는설명을 한글로 남겨두는 게훨씬 효율적이죠.그런데 STM32CubeIDE에서한글이 깨지거나 물음표로 보이거나,아예 빈칸으로 나오는 경험다들 한 번쯤은 해보셨을 겁니다.처음 STM32CubeIDE를 사용할 때,주석이 깨져서 엄청 당황했던기억이 납니다."왜 한글이 안 써지지?"하고 검색을 해도,정확한 해결 방법이 정리된 자료는많지 않더라고요.그래서 오늘은 STM32CubeIDE 환경에서한글 주석을 제대로 작성하고표시하는 방법을정리해보려고 합니다.IDE 내부 설정부터윈도우 시스템 환경변수까지,한 번 설정해 두면두고두고 편하게 쓸 수 있는 꿀팁이니꼭 따라 해 보세요!한글 주석이 깨지는 이유STM32CubeIDE는 기본적으로UT.. 2025. 4. 14.
Hard Fault(하드 폴트) - 0으로 나누기 stm32 MCU에서 0으로 나누기를 시도하면 하드 폴트(Hard fault) 발생할 수 있음.하드 폴트는 프로그램이 비정상적인 동작을 할 때 발생하는 예외. 0으로 나누는 경우 하드 폴트가 발생하는 이유는 프로세서가 이러한 연산을 처리할 수 없기 때문.0으로 나누기와 같은 잘못된 연산을 감지하고 이를 처리할 방법이 없을 때 하드 폴트 발생. 0으로 나누기를 방지하는 방법 : 나눈셈을 수행하기 전에 분모가 0인지 확인. #include int divide(int numerator, int denominator) {    if (denominator == 0) {        // 분모가 0일 때 처리할 코드를 작성합니다.        // 예를 들어, 에러 메시지를 출력하거나, 에러 코드를 반환할 수 있.. 2024. 5. 27.
[STM32] multiple definition error [펌] https://blog.naver.com/kim1417/222748055449 STM32H7 LwIP 코드 생성 버그(?) #STM32H7 #CubeMX #CubeIDE #LwIP #Bug #errno #Multiple #Definition STM32H7에 대... blog.naver.com 출처 : 네이버 블로그 [카드한장] 2024. 3. 14.
[STM32F1] Timer Interrupt 1. CubeMX 설정 - NVIC Setting : 인터럽트 Enabled 체크 - Code generation 2. 코드 작성 1) main.c /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim3); // Timer 시작 /* USER CODE END 2 */ 2) stm32f1xx_it.c // 인터럽트 발생 시, IRQ 핸들러 함수 호출 -> HAL_TIM_IRQHandler 함수 호출 void TIM3_IRQHandler(void) { /* USER CODE BEGIN TIM3_IRQn 0 */ /* USER CODE END TIM3_IRQn 0 */ HAL_TIM_IRQHandler(&htim3); /* USER CODE BEGIN TIM3_IRQn .. 2022. 12. 6.
메모리 늘리는 방법 : an internal error occurred 에러 : "Updating index" 해결법 1. 증상 2021. 09. 16) STM32CubeIDE를 실행하고 Index 업데이트 할 때 에러 발생 2. 원인 메모리 부족 3. 조치사항 메모리 확장. C:\ST\STM32CubeIDE_1.6.1\STM32CubeIDE/stm32cubeide.ini 파일 우클릭 -> 편집 가장 아래 쪽을 보면 , Xms, Xmx 항목 Xms - 최소 힙 메모리 크기 Xmx - 최대 힙메모리 크기 실행될때 Xms만큼은 기본으로 메모리를 생성하고 최대 Xmx까지 확장생성 할 수 있게 하라는 의미. 요즘 나오는 컴퓨터는 기본으로 -Xms512m -Xmx1024m 정도로 설정하자. 출처: https://aljjabaegi.tistory.com/213 [알짜배기 프로그래머] 2021. 9. 16.