STM32 LED 깜빡이기 (NUCLEO-F103RB) 다음으로 버튼을 누르면 LED에 불이 들어오고 버튼을 누르지 않으면 LED에 불이 꺼지는 프로그램을 구현하는 과정에 대한 설명입니다.
아래 과정은 아래 환경과 보드를 이용했습니다.
- Windows 11 Home
- STM32CubeIDE-1.11.2
- STM32 NUCLEO-F103RB 보드
1. 프로젝트 생성하기
- STM32 LED 깜빡이기 (NUCLEO-F103RB)의 '1. 프로젝트 생성하기'와 동일한 방법으로 STM32 프로젝트를 생성합니다.
단, 프로젝트 이름만 기존과 다르게 입력합니다.
- 아래그림과 같이 프로젝트가 생성됩니다.
2. GPIO 핀 설정 및 소스코드 생성하기
- 'Pinout view' 화면에서 다음 순서대로 진행합니다.
◦ 좌측 상단의 'B1 [Blue PushButton]' 부분을 선택 후 마우스 메뉴 버튼을 클릭합니다.
◦ 실행되는 팝업메뉴에서 'GPIO Input'을 선택합니다.
- Pinout & Configuration' 화면에서 다음 순서대로 진행합니다.
◦ 좌측 트리에서 'System Core'를 선택합니다.
◦ 트리 하단 항목에서 'GPIO'를 선택합니다.
◦ Pin 목록에서 'PA5'를 선택합니다.
◦ 'User Label'을 LED로 변경합니다.
- Pinout & Configuration' 화면에서 다음 순서대로 진행합니다.
◦ Pin 목록에서 'PC13-TA'를 선택합니다.
◦ 'User Label'을 BTN으로 변경합니다.
- 'Ctrl + S'를 누르면 자동으로 코드가 생성되거나 아래와 같이 툴바에서 'Code Generation' 버튼을 눌러서 코드를 생성합니다.
- 아래 그림과 같이 코드가 생성된 것을 확인할 수 있습니다.
아래 코드 중 'LED_Pin', 'LED_GPIO_Port', 'BTN_Pin', 'BTN_GPIO_Port'는 이전에 지정한 User Label 값에 따라서 자동으로 생성된 코드입니다.
3. 코드 작성 및 컴파일
- while 문 안에 아래와 같이 코드를 작성합니다.
위치는 /* USER CODE BEGIN 3 */ 과 /* USER CODE END 3 */ 사이에 아래 코드를 작성합니다.
if (HAL_GPIO_ReadPin(BTN_GPIO_Port, BTN_Pin) == GPIO_PIN_RESET) { // If Button Pressed
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); // LED On
} else {
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); // LED Off
}
- 툴바에서 'Build Debug' 버튼을 눌러서 컴파일 실행합니다.
- 아래 그림과 같이 컴파일 결과를 확인할 수 있습니다.
4. 다운로드 및 디버깅
- STM32 LED 깜빡이기 (NUCLEO-F103RB)의 '4. 다운로드 및 디버깅'과 동일한 방법으로 STM32 실행파일을 실행합니다.
- 아래 그림과 같이 버튼을 누르면 LED가 꺼지고 버튼을 누르지 않으면 LED가 꺼지는 것을 확인할 수 있습니다.
'로봇 > STM32' 카테고리의 다른 글
STM32 UART로 보드 제어하기 (1) | 2023.03.01 |
---|---|
STM32 Button을 누르면 UART로 메시지 출력하기 (2) | 2023.02.28 |
STM32 Button Interrupt를 이용한 LED 제어 (0) | 2023.02.28 |
STM32 LED 깜빡이기 (NUCLEO-F103RB) (0) | 2023.02.21 |
STM32 개발환경 설정하기 (0) | 2023.02.21 |