wokwi 시뮬레이터에서 STM32 C031C6 보드를 돌리고 있는데 lED에 불이 들어오지 않습니다

보드가 오기 전이라 데이터 시트 보면서 시뮬레이터로 돌리고 있는데 뭐가 잘못됐는지 연결한 LED에 불이 들어오지 않습니다.. 한쪽은 PB2에 연결되어 엤고 한쪽은 GND에 연결되어 있습니다

1개의 답변이 있어요!

  • 안녕하세요. 이수민 전문가입니다.

    코드부터 보면 레지스터 설정은 맞게 하셨어요. IOPENR의 1번 비트로 GPIOB 클럭을 켜고, MODER의 4~5번 비트를 지운 뒤 01로 만들어 PB2를 출력으로 설정하고, ODR 2번 비트를 올리는 흐름이라 논리적으로 문제가 없어요. 두 번째 사진처럼 설정을 while 밖으로 빼신 구조가 더 정석이고요. 시뮬레이터 타이머도 돌아가고 있으니 컴파일과 실행은 되고 있는 상태예요.

    그래서 가장 유력한 범인은 LED의 극성이에요. LED는 다이오드라 전류가 한 방향으로만 흐르는데, 긴 다리인 애노드가 전원 쪽(PB2), 짧은 다리인 캐소드가 GND 쪽에 연결돼야 불이 들어와요. 지금 배선을 보면 LED 왼쪽 다리가 GND로, 오른쪽 다리가 PB2로 가 있는데, Wokwi의 LED 부품은 왼쪽이 애노드(A), 오른쪽이 캐소드(C)예요. 그러니까 거꾸로 연결된 상태라 ODR을 아무리 올려도 전류가 못 흐르는 거예요. Wokwi에서 LED 다리에 마우스를 올리면 A와 C 표시가 뜨니 확인해보시고, 두 선을 서로 바꿔 연결하면 바로 켜질 거예요.

    참고로 실제 보드에서는 LED에 전류 제한 저항 220~330옴을 직렬로 꼭 넣어야 해요. 시뮬레이터는 봐주지만 실물은 LED나 핀이 상할 수 있거든요. 그리고 클럭을 켠 직후 GPIO 레지스터에 접근할 때는 실제 칩에서 한두 사이클의 여유가 필요한 경우가 있어서, IOPENR 설정 뒤에 IOPENR을 한 번 읽어주는 더미 코드를 넣는 습관을 들이면 보드가 왔을 때 겪을 미묘한 문제를 예방할 수 있어요. :)