설치된 STM32 Cube IDE에서 로그인을 하지 않아서 패키지를 다운하지 못했었다.
여기에 로그인을 하고 다시 설정하니 패키지까지 다운되는 것을 확인할 수 있었다.
자자 이제 개발하면서 부딪혀 보겠다.
먼저 우리는 디버깅을 하면서 분석해볼 예정이므로 칩설정에서 디버깅을 켜주자.
SYS에서 Debug를 클릭하여 Serial Wire로 변경한다.
그럼 칩에 다음과 같이 변한다.
다음으로 GPIO를 설정해줄건데 칩쪽에 가서 PB7,8,9를 전부 GPIO output으로 변경해준다.
그리고 옆에 GPIO를 클릭하여 다음과 같이 설정해준다.
여기서 아래 설정 값들에 대해 궁금한 점이 있을 것이다.
이름 | 설명 |
GPIO output level | GPIO 핀의 초기 출력 상태를 설정 Low (0V): 초기 상태가 0V, 즉 Low로 설정 High (3.3V 또는 5V): 초기 상태가 3.3V (또는 5V)로 설정 |
GPIO mode | Output Push-Pull: 핀이 Low와 High 상태 모두를 적극적으로 구동합니다. 즉, 출력 핀에서 직접 0V 또는 3.3V (또는 5V)가 나옴 Output Open-Drain: 핀이 Low 상태에서는 0V로 설정되지만, High 상태에서는 핀이 연결을 끊고 외부 회로의 풀업 저항에 의해 High (3.3V 또는 5V)로 유지 |
GPIO Pull-up/Pull-down | 핀의 기본 전기적 상태를 설정하여 부동 상태(Floating)를 방지합니다. 풀업/풀다운 저항을 통해 High 또는 Low 상태로 고정 No Pull-up/Pull-down: 추가 저항을 설정하지 않음. 핀이 부동 상태로 남음 Pull-up: 핀을 기본적으로 High 상태로 설정하는 내부 풀업 저항을 연결 Pull-down: 핀을 기본적으로 Low 상태로 설정하는 내부 풀다운 저항을 연결 |
Maximum output speed | 핀이 신호를 전환할 때 전기 신호의 속도를 설정합니다. 즉, 핀이 Low에서 High 또는 High에서 Low로 바뀌는 속도를 조절 Low: 느린 전환 속도 (전력 절약 가능) Medium: 중간 전환 속도 High: 빠른 전환 속도 Very High: 매우 빠른 전환 속도 |
User Label | 사용자가 해당 GPIO 핀에 대한 이름을 지정할 수 있습니다. 사용 목적이나 연결된 장치 이름 등으로 설정하면 코드 작성 및 유지 보수가 쉬워짐 |
위 설명을 보고 본인이 원하는 상태에 맞게 설정해주면 된다.
설정한 후 Ctrl + S를 눌러 저장을 하면
위 같은 메세지가 뜨는데 그냥 yes하면 된다. 뜻은 칩 설정한거 코드로 생성할거? 이런 뜻인데 해준다는데 감사합니다 하고 받으면 된다.
이후 코드에서 Core->Src->main.c로 들어가서 다음과 같이 코드를 만들어줘라
( 먼저 나는 LED를 3개 달아두어 GPIO를 3개 output으로 변경한것이다.)
코드를 작성할 떄 유의 사항이 USER CODE BEGIN WHILE 과 END 사이에 적어야한다.
안그러면 코드 날라가니 저 안에 작성해주길 바란다.
While(1)은 기본으로 적혀있고, 저기가 아두이노 IDE에선 약간 void loop라고 생각하면 된다.
HAL_GPIO_TogglePin함수는 1이면 0으로 0이면 1로 LED의 상태를 지속적으로 바꿔주기 위해 설정해두었다.
위처럼 한 이유는 Maximum output speed 를 오실로스코프로 테스트하기 위함이다.
( main.h를 참고해서 본인이 정의한 GPIO가 어떻게 만들어졌는지 확인하고 그걸 토대로 인수를 채워 넣어야함)
ex)
main.h는 Core->Inc에 있음
위 처럼 알아서 우리가 정의한 GPIO핀에 대해 코드를 만들어 줌
그럼 저걸 가져다 써야함
보통 HAL_GPIO_Write()에서 사용하는데 port, pin, 상태 총 3개로 인수가 들어감
저렇게 하고 Run One Debug를 누르면
이렇게 완성된 것을 볼 수 있다.
만약 업로드하는데 ST_link를 업데이터 해야하면 업데이트 진행해주면 된다.
만약 link가 안잡히면 그냥 link usb 뺏다 다시 끼면 바로 인식이 될 것이다.
이렇게 간단하게 GPIO를 제어해 보았다.
다음은 버튼과 세그먼트를 이용해 버튼을 누를 때마다 1씩 증가하는 것을 해보겠다.
'STM32' 카테고리의 다른 글
7세그먼트 코드 수정 (0) | 2024.11.10 |
---|---|
버튼 누르면 1씩 올라가는 7세그먼트 (1) | 2024.11.10 |
HAL_Driver로 7세그먼트와 Button 다루기 (3) | 2024.11.09 |
STM32 Cube IDE Install (0) | 2024.11.04 |
혼자서 공부하는 STM32 (0) | 2024.11.01 |