Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

Embedded System 24

[MCU] GPIO 실습 : USER Button과 LED 켜기

이전 GPIO의 HW와 설정에 대해서 정리한 내용에 대해서 실제 보드의 코드로 잘 이해했는지 확인해보자.ㅤSTM32F429ZIT6 / NUCLEO-144 Boards 를 기준으로 작성되었습니다.ㅤLED 켜보기메모리 주소를 이용해 HAL 없이 LED를 켜보자우선 다큐먼트와 회로도에서 LED가 어디에 연결되어있는지 확인해야한다. 내가 켜보고싶은 파란색 LED인 LD2 는 GPIO Pin PB7 과 연결되어있다.ㅤㅤ위 회로도를 볼 때, LD2가 ON일 때는 PB7의 출력이 HIGH이고, LD2가 OFF일 때는 PB7의 출력이 LOW가 되어야 함을 알 수 있다. 정리하자면 LD2를 toggle하기 위해선 PB7에 HIGH와 LOW 신호를 control 할 수 있어야 한다.ㅤ그렇다면 PB7에 어떻게 출력 신호를 ..

Embedded System/MCU 2025.10.28

[MCU] 빌드 프로세스와 컴파일 환경

지금까지는 VSCode와 여러 IDE의 도움으로 내가 작성한 코드에 대해서 “빌드하기” 버튼을 누르면 마법과 같은 일이 일어나서 프로그램이 실행된다! 라고 생각해왔다고 볼 수 있다. 왜냐면 빌드하면 진짜 IDE가 알아서 컴파일, 어셈블링, 링킹을 거쳐 실행파일을 만드는걸 다 해줘왔거든. 그래서 이게 어떤 절차로 이루어지는지 크게 궁금하지도 않았었다. 학부 1학년때에나 간략하게 짚고 넘어가는 과정이여서 1학년때는 관심이 크게 없었고, 그 이후로도 쭉 관심을 크게 가지지 않고 지나왔던 부분인 것 같다.ㅤ그런데 이제 임베디드 세상으로 온 이상, 더 이상 마법같은 일이라고 부를 수는 없을 것 같다. 혹시나 내가 사용해야 하는 보드가 딱 적합한 IDE를 지원하지 않으면서, 특정 경로에 있는 헤더파일과 DLL을 링..

Embedded System/MCU 2025.10.27

[MCU] GPIO의 하드웨어 구조와 데이터시트, 침침한 눈을 곁들인

STM32F429ZIT6 / NUCLEO-144 Boards 를 기준으로 작성되었습니다.ㅤ레퍼런스 메뉴얼 참고 링크https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdfㅤ실습을 하면서 계속 GPIO, GPIO 라는 키워드가 반복해서 나왔다. GPIO라는게 General Purpose Input / Output 이라는건 알고있었는데, 그래서 이게 정확히 어떤거냐? 라는 질문을 받아보니 말문이 턱 막히더라. 범용으로 사용한다는건 설정값들을 바꿔서 휘뚜루마뚜루..

Embedded System/MCU 2025.10.24

[ARM] ARM Processor Architecture - 2 : ARM 레지스터 구조와 Exception

ARM의 레지스터와 프로세서 모드이전 글에서 잠깐 소개했지만, 조금 더 디테일하게 들어가보자.ㅤ레지스터 구조ARM Cortex-A 프로세서에는 43개의 물리적인 레지스터가 있다.범용 레지스터:R0~R7: 8개 (모든 모드 공유)R8~R12: 7개 (User/System) + 5개 (FIQ) = 12개R13: 6개 (모드별로 다름)R14: 6개 (모드별로 다름)R15: 1개 (PC, 모든 모드 공유)상태 레지스터:CPSR: 1개SPSR: 5개 (각 예외 모드마다)눈여겨 볼 점은 8개의 레지스터 R0~R7 은 모든 모드에서 범용으로 사용하고, R8~R12 는 나머지 모드에서는 모두 공용으로 사용하지만 FIQ(Fast Interrupt reQuest) 에서는 별도의 레지스터를 사용한다..

[ARM] ARM Processor Architecture - 1 : Introduction

개인적으로 C언어를 작성하고 컴퓨터에 대한 로우레벨을 이해하려고 할 때 가장 크게 도움이 되었던 이론이 컴퓨터구조 였다고 생각된다. 수업을 들으면서 내 머릿속에서는 ‘아, C언어에서 함수를 호출하면 이렇게 스택에 쌓이고 Stack Pointer를 통해 파라미터를 가져와 사용하겠구나! 그러고 리턴값이 register에 담겨서 넘어가겠구나’ 라는 생각이 바로바로 들어왔다. 그런데 이런 배경 지식이 없는 상태에서 수업을 들었다면 ‘C언어에서 어셈블리 코드로 변환되고 이걸 기계어로 CPU가 처리하는데, 마법이 일어나서 결과를 전달하겠군’ 정도로 밖에 생각할 수 없었을 것 같다.ㅤ그래서 임베디드 공부를 할 때에도 베이스 아키텍처에 대한 지식이 탄탄하게 잡혀있으면 이후에 복잡하고 어려운 컨셉들이 제시되더라도 “아,..

[STM32] HAL 드라이버란?

이번에 STM32 개발 실습을 진행하면서 계속해서 HAL 이라는 키워드가 나왔다. 약간 namespace 같은건가? 싶었는데, 이게 라이브러리였다. 코드 작성하면서 눈치껏 이해했더니 이게 직접 레지스터를 건드리는 작업들이 복잡하고 실수가 많이 나올 수 있으니, 이 구조를 미리 묶어서 함수로 제공하는 형태인 것 같았다. 그래서 HAL 라이브러리가 무엇인지, 그래서 HAL을 써야하는지 말아야 하는지에 대해서 한 번 정리해보려고 한다. HAL이 뭐냐면>The HAL drivers are designed to offer a rich set of APIs and to interact easily with the application upper layers. Each driver consists of a set o..

Embedded System/MCU 2025.10.19

[C언어] 상수를 적으면 일단 int32_t?

자꾸 헷갈렸다. 이것도 사실 정수의 승격이랑 비슷한건데…ㅤ사실 아래 3가지는 모두 동일한 의미를 가진다. 뒤에 숫자를 적어서 값을 대입하는건 형식과 전혀 관계없는 과정임. 결국 일단 작성한 숫자는 int 타입으로 작성된 후에 변수에 맞는 타입으로 들어간다.uint8_t a = 10;uint8_t b = 0xA;uint8_t c = 0b1010;10 이라는 값이 CPU에서 로드됨 (0x0000000A)uint8_t 타입에 맞춰서 가장 앞 2자리만 잘려서 a에 저장됨 (0x0A)ㅤ궁금증이 생겨서 조금 더 찾아봤다. 만약에 int 보다 큰 정수를 입력한 경우에는 어떻게 되나?ㅤhttps://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf 위 문서에서 6.4.4.2 I..

[신호및시스템] Phase 5-2 - Z 변환

Z 변환Z 변환은 라플라스 변환의 이산 시간 신호 버전이다.ㅤ$y(t) \rightarrow y[n]$ 으로 샘플링을 하여 $y[n] = y(n\cdot T_0)$ 을 이용한다.라플라스 변환에서는 $e^{st}$ 를 이용해서 신호에 대해 분석을 진행하였는데, z 변환에서는 이산 신호를 다루기 때문에 $e^{s\cdot nT_0}$ 를 이용한다. 이때 $e^{(sT_0)n}$ 이라고 식을 정리하여 n에 대해 묶어주고 $e^{sT_0} = z$ 라고 정의하면 $z^n$ 을 기준으로 신호에 대해 분석하도록 도메인을 둘 수 있다.ㅤ라플라스 변환에서 사용한 $e^{st}$ 대신에 $z^n$ 을 이용하는 이산 시간 신호에 대한 변환이 Z 변환이다.$$X(z) = \sum_{n=0}^{\infty}x[n]\cdot ..

[신호및시스템] Phase 5-1 - 라플라스 변환

오늘은 라플라스 변환에 대해서 공부했다. 다만, 혁펜하임 강의만으로는 내용이 너무 부족하다고 느껴서 (나의 배경지식의 한계 ^,^) Claude와 아래 유튜브 강의를 활용해서 라플라스 변환의 개념과 의의에 대해서 공부해보았다. What does the Laplace Transform really tell us? A visual explanation (plus applications) But what is a Laplace Transform? ㅤ푸리에 변환의 한계라플라스 변환으로 향하기 앞서서, 다시 한 번 푸리에 변환에 대해 짚고 가자. 푸리에 변환의 수식은 아래와 같다.$$F(\omega) = ∫_{-\infty}^{\infty}f(t)⋅e^{−j\omega t}dt$$푸리에 변환의 물리적인 의미는..

[신호및시스템] Phase 4-3 - 이산 신호처리 파이프라인

디지털 신호처리 파이프라인앞서 수행한 ADC + DAC 를 합쳐서 보면 아래와 같은 순서로 진행됨을 알 수 있다.ㅤ에어팟의 노이즈캔슬링 기능을 구현한다고 해보자. 이때 마이크로 들어오는 노이즈 섞인 노래 입력이 $x(t)$, 에어팟으로 나가는 출력을 $y(t)$ 라고 한다면.에어팟으로 음악 소리를 입력받는다. ($x(t)$)Impulse train을 곱해 $T_0$를 주기로 하는 신호 그래프로 만든다.신호를 골라내어 $x[n]$ 시퀀스로 만든다.디지털로직을 적용해, 변환 과정을 거친다. 이때 변환된 시퀀스는 $y[n]$ 이 된다.시퀀스 $y[n]$을 다시 impulse train 그래프로 만든다.시퀀스를 다시 아날로그 신호로 만들기 위해서 LPF를 통과시켜 $y(t)$ 를 만든다.스피커로 소리 출력ㅤ중간..