안녕하세요?
오늘은 GPIO를 이용하여 LED점등을 사용하겠습니다.
HAL라이브러리를 사용하여 STM32CubeMX와 IAR을 사용하도록 하겠습니다.
사용하는 MCU STM32G070RB이며 보드는 NUCLEO 보드를 사용하였습니다.
위에 사진처럼 MCU의 핀을 클릭하여 PA1 ~ PA3까지 GPIO를 설정합니다.
GPIO를 입력으로 설정하게 되면 추가적인 설정은 푸쉬풀/오픈드레인과 핀이름이 있습니다.
푸쉬풀/오픈드레인 설명은 h/w 카테고리에 가시면 볼 수 있습니다.
GPIO의 아웃풋 설정은 푸쉬풀/오픈드레인, 풀업/풀다운/노풀노다운, 핀이름이 되겠습니다.
풀업/풀다운의 설명은 h/w 카테고리에 가시면 볼 수 있습니다.
STM32CubeMX를 설정한 후에 코드를 생성하면 오른쪽처럼 초기화 함수가 자동으로 설정 됩니다.
초기화 함수를 변경하고 싶을 경우 코드를 변경하거나, STM32CubeMX에서 수정 후 사용하시면 됩니다.
<초기화 함수만 작성했을 시>
초기화 함수만 작성한 후에 코드를 시행하게 되면 초기 설정에 따라 PA3는 HIGH로만 되어 PA3에 연결된 LED에 불이 들어 오는 것을 확인할 수 있습니다.(아날로그 입력은 후에 ADC와 맵핑을 하여 사용해야 되서 지금은 사용하지않고 PA3는 OUTPUT으로 변경을 해줬습니다.)
<PA1에 입력을 인가할 경우>
PA1에 5V와 GROUND를 직접 인가하여 (스위치가 없었습니다ㅜㅜ) 입력에 따른 출력상태의 변화를 확인하였습니다.
PA1의 입력을 읽어 HIGH일 경우 2번 핀을 HIGH로, 3번 핀을 LOW로 인가하였고, PA1을 입력을 읽어 LOW인 경우 3번 핀을 HIGH로 변경하였습니다.
감사합니다.
추가적으로 GPIO의 OUTPUT SPEED 설정은 출력변환의 속도를 뜻합니다.
보시면 출력상태가 변화할때 변화속도가 다르다는 것을 확인할 수 있습니다.
변화속도가 빠르면 무조건 좋은것은 아닙니다.
변화속도가 빠를수록 노이즈 및 불안정하게 변화므로, 제품개발 시 출력속도가 정말 중요한게 아니라면 LOW로 사용하는것을 권장드립니다.