STM32F0 CUBEMX LED 예제입니다.
오늘은 F091RC 칩을 사용한 보드를 사용할거다. 파란 버튼을 누르면 LED가 나오게 할거다.
이놈이다.
사용 보드를 선택 후 더블클릭 한다.
초기화면이다. LD2는 초록 빛을 내는 LED이고, B1은 파란색 버튼이다.
GPIO 버튼을 클릭한다.
나중에 인터럽트를 사용하면 Rising edge로 사용할 생각이다.
근데 아마 인터럽트를 쓸 일은 많지 않아보이고, 이번 포스팅은 풀링 방식으로 만지고 놀거다.
프로젝트 만져 준다.
완료됐다. Open Project를 클릭한다.
TrueSTUDIO 실행 화면이다. 처음 몇 초동안 광고를 봐야한다.
B1 버튼이 눌렸는지 아닌지를 보려면 상태를 읽어야 한다.
간단하게 만드려면 보통 HAL 드라이버를 사용한다. 대충 HAL 쳐놓고 Ctrl + Space를 누르면 연관된 명령어들이 쭉 나온다. 위의 코드의 입력 변수들을 보면, GPIO의 어떤 라인을 사용 할건지, 그 라인 중에서 몇 번째 핀을 사용할 것인지 기입하라고 되어있다. CUBEMX에 있는 핀 맵을 보고 해도 되고, 코드를 뒤져봐도 된다.
역시나 있구나. 요 착한 것.
LED는 LD2_GPIO_port, LD2_pin
버튼은 B1_GPIO_port B1_pin이다.
읽으면 쓰는 것도 있겠구나 싶어서 대충 뒤져보니 있더라. WritePin도 뒤져보니 별거 없다. 그냥 입력 인자가 세 개인데, READ함수에 넣는 거 + 상태 조합이더라. 그래서 친절히 아래처럼 적어주면 잘 돌아간다.
HAL_GPIO_WritePin()
while (1) 안에 코드 한 줄만 작성하면 끝!
구동 영상이다.
!HAL_GPIO_ReadPin(B1_GPIO_Port, B1_PIN)
안녕하세요 STM32 공부하려고 정보 찾다가 좋은 블로그를 찾은거 같아서 천천히 둘러보는 중이었습니다ㅎㅎ
궁금한게 생겨서 댓글 남깁니다!
영상을 보니 PIN버튼을 누를때 0으로 입력을 받고 not연산때문에 1로 변경됩니다. 그리고 1은 SET이라서 LED가 켜지는거같네요.
제가 생각하기에는 풀다운 모드 기준 PIN버튼을 누를때 1이 되고, PIN버튼을 떼면 0으로 알고 있는데 따로 설정하는 방법이 있을까요??
설정하신거에는 풀다운, 풀모드를 안하신거 같아서요.
김지성님 안녕하세요!
PIN 버튼을 눌렀을 때 0이되고 평상시에 1이 된다는 것은, 풀 업 저항이 달려있을 경우에 해당 됩니다.
MCU 핀 설정에서는 관련 설정을 하지 않았지만, nucleo board schematic을 보면 외부에 4.7k pull up 저항이 달려있습니다.
반대로 설정하고자 한다면.. 땜질을 좀 하셔야 할 듯 싶지만, 추천드리지는 않습니다..^^;
좋은 하루 되세요-!