임베디드를 통해 개발자 인생을 시작했습니다.
그후에 웹과 앱도 개발하면서 어느덧 13년차 개발자가 되었습니다.
지금은 '오제이 주식회사'라는 작은 회사를 운영하고 있습니다.
유튜브를 4년간 운영했고, 현재 2만 4천 명의 구독자를 보유하고 있습니다.
정말 더디게 성장하고 있지만, 꾸준히 운영하였습니다.
제가 알고있는 지식들이 개발자를 꿈꾸는 학생들에게 도움이 되었으면 좋겠습니다.
講義
受講レビュー
- 【組み込み入門用】組み込み開発は実際にこのようにやります。
- 【組み込み入門用】組み込み開発は実際にこのようにやります。
- 【組み込み入門用】組み込み開発は実際にこのようにやります。
- 【組み込み入門用】組み込み開発は実際にこのようにやります。
投稿
Q&A
초기 신호에 대한 질문
상승엣지 = Low→High 변화, 하강엣지 = High→Low 변화"초기 신호가 High냐, Low냐"는 별도의 문제입니다.Idle이 High라면 첫 유효 신호는 하강엣지, Idle이 Low라면 첫 유효 신호는 상승엣지로 오는 경우가 많음.결국 “초기 상태가 High냐 Low냐”는 프로토콜/회로 설계자가 정한 규칙에 따릅니다.일반적으로 idle 상태(초기 level)가 High라면 → 첫 변화는 Low로 떨어지는 순간, 즉 하강엣지(Falling edge) 가 "유효 신호 시작"을 잡기 좋은 경우가 많습니다.
- 0
- 2
- 23
Q&A
타이머 최대 주파수 질문
네 맞습니다. 외부 크리스탈을 쓰는 이유는 여러 이유가 있는데.. 아래와 같습니다.외부 크리스탈이 꼭 필요한 경우USB 통신USB 2.0 Full-Speed는 48 MHz 정확도가 ±0.25% 이내여야 함.내부 HSI로는 이 기준을 맞추기 힘들고, HSE를 PLL로 곱해서 72 MHz → 48 MHz 파생해야 안정 동작.정확한 UART/CAN/I²S 통신UART 같은 직렬통신은 클럭 오차가 누적되면 프레임 에러 발생.HSI(±1% 오차)는 9600bps 이하에서는 대체로 괜찮지만, 115200bps 이상이나 CAN(정확도 요구 높음)에서는 문제가 생김.HSE를 쓰면 안정적.RTC(Timekeeping)장기간 시간 기준 유지에는 정밀한 기준 클럭 필요.RTC는 보통 32.768 kHz LSE 크리스탈을 따로 쓰지만, 시스템 주기도 HSE 기반으로 더 정확해짐.고정밀 타이밍/PWM예: 1초 정확 타이머, 오디오 샘플링, 모터 제어 주파수 등HSI는 오차가 있어서 긴 시간 기준으로 보면 누적 오차 발생 → HSE로 보정 가능.
- 0
- 2
- 11
Q&A
빌드 오류 & targeted project type
위에 답변 다신 분이시죠?해결 하신걸로 알고 일단, 해결 상태로 놔둘게요.
- 0
- 2
- 37
Q&A
targeted project type 에러 해결 방법 공유합니다.
고생하셨어요.해결 방법 까지 공유 해주셔서 감사합니다.
- 0
- 2
- 41
Q&A
디버깅 오류
일단, 최신 버전 1.19 IDE설치해보시고.. 그것도 안되면 연락주세요.제가 보드 하나 더 보내 드릴게요.
- 0
- 2
- 67
Q&A
STM32 Project Type 관련 질문입니다..
저도 처음 겪는 일이었는데. 결국은 1.19.0 STM IDE를 설치하면 해결되는 문제였습니다.1.19.0은 2025년 7월 15일 기준으로 가장 최신 IDE입니다.이 버전으로 디버깅까지 전부 동작하는 것 확인했습니다.
- 0
- 3
- 98
Q&A
72강 통편집
처음 보는 입장에서는 "transmit only면 MOSI랑 SCLK만 쓰면 되는 거 아닌가?" 생각할 수 있어요.근데 PB14(RCLK)까지 활성화된 이유는, 이게 데이터 전송이 끝났다는 걸 알려주는 신호이기 때문이에요.SCLK는 데이터를 보낼 때 클럭 타이밍을 맞춰주는 신호고,RCLK는 "데이터 다 보냈으니까, 이제 반영해라"는 뜻의 출력 트리거용 신호예요.즉, SPI 통신은 MOSI/SCLK로 끝나지만,그 결과를 실제로 적용시키려면 RCLK 같은 별도 GPIO 신호가 필요할 수 있어요.그래서 transmit only 모드에서도 PB14가 같이 활성화되는 거예요.우리가 사용하는 FND 구동용 칩은, 데이터를 직렬로 받은 뒤에 출력으로 반영하려면 RCLK(Register Clock, Latch Clock) 신호가 필요해요.이건 SPI 전송(MOSI + SCLK) 이후에“이제 이 데이터를 적용해라” 하고 알려주는 트리거 신호죠.그래서 RCLK 핀(PB14)을 GPIO로 따로 제어해줘야 해요.답변이 늦어서 죄송해요 ㅠㅠ/
- 0
- 2
- 55
Q&A
STM32 Project Type 관련 질문입니다..
건우님 이시죠?메일로 연락드렸어요 ㅇㅇ/
- 0
- 3
- 98
Q&A
네트워크 연결이 안됩니다
박수!!고생하셨어요.
- 0
- 2
- 52
Q&A
ST_LINK IDE에서 디버깅 시 브레이크 포인트가 안 걸려요
STM32CubeIDE는 내부적으로 GDB를 사용해서 디버깅을 돌려요.그런데 "Breakpoint installation failed: unmatched quote" 이런 메시지가 뜨는 건,GDB가 브레이크포인트를 설치할 때 내부 문법 오류가 났다는 뜻이에요.제가 겪어본 바로는 보통 이런 경우들이 있었어요:브레이크포인트 정보가 깨졌거나, IDE에 캐시된 상태가 꼬였을 때프로젝트를 빌드한 결과(.elf)가 현재 소스랑 안 맞을 때브레이크포인트 설정할 때, 따옴표(")가 이상하게 들어갔을 때브레이크포인트가 걸린 위치가 애초에 디버깅 가능한 위치가 아닐 때(예: 헤더파일, 인라인 함수 등)컴파일할 때 디버깅 정보(-g)가 누락되었거나, 최적화가 너무 심하게 걸렸을 때 (-O2, -O3)특히 최적화 옵션이 높은 상태에서 함수가 인라인 되면,브레이크포인트가 걸려도 GDB가 위치를 찾지 못해서 이런 문제가 생기더라고요.========================해볼 수 있는 해결 방법 (STM32CubeIDE 기준)1. 브레이크포인트 전부 삭제하고 다시 걸어보기메뉴에서 Run > Remove All Breakpoints 눌러서일단 싹 다 지우고 다시 걸어보는 게 좋아요.특히 오래된 프로젝트 하다가 중간에 코드 바꾸거나 라인 이동했을 땐브레이크포인트 정보랑 실제 위치가 안 맞아서 오류가 잘 생겨요.2. Clean + Build 강제 수행Project > Clean 누르고, 프로젝트 전체 클린 한 다음Build Project 눌러서 다시 빌드 해봐요.이렇게 하면 .elf 파일이 다시 깔끔하게 만들어지고,디버깅 정보도 다시 맞춰져요.3. 컴파일 최적화 꺼주기Project > Properties 들어가서C/C++ Build > Settings > Tool Settings > MCU GCC Compiler > Optimization 이쪽으로 가요.거기서 Optimization Level을 None (-O0) 으로 바꿔줘요.👉 이거 안 하면 함수가 인라인 되거나 코드가 사라져서브레이크포인트가 제대로 안 걸릴 수 있어요.4. 디버깅 세션 완전히 껐다가 다시 시작디버그하다가 이상한 거 뜨면 Run > Terminate 로 디버깅 끝내고Run > Disconnect로도 확실히 끊어줘요.그 다음에 다시 Debug Configurations 들어가서설정 확인하고 재시작하면 안정적으로 붙는 경우가 많아요.5. 라인 말고 함수명으로 브레이크 걸어보기예를 들어 main.c:42 이런 식으로 줄 번호로 걸지 말고그냥 main() 함수에 직접 브레이크 걸어봐요.함수명이 명확한 경우엔 이게 더 잘 걸리는 경우도 있어요.6. 디버그 로그 켜서 GDB 내부 상태 확인하기Run > Debug Configurations 들어가서Startup > Debugger 탭에 가면“Enable GDB trace logging” 옵션 있어요. 체크하고 실행해보세요.그럼 나중에 .log 파일로 어떤 명령어가 문제였는지 확인 가능해요.
- 0
- 2
- 56