[임베디드 4-1강] gpio 제어하기

강지원·2024년 6월 7일

STM32 강의

목록 보기
7/33

1. GPIO(General Purpose Input Ouput)란?

마이크로프로세서가 주변장치와 통신하기 위해 범용으로 사용되는 입출력포트이다.

GPIO는 입력과 출력포트를 제어하기 위해 3개의 레지스터를 갖고 있으며, 3개의 레지스터는 PORTx, DDRx, PINx로 이루어져 있다.

2. GPIO 제어하기

2-1 Board 회로도 확인(LED, BUTTON 위치)

Board에 내장된 LED, Button 을 제어

- LED : PC13 제어
- LED 위치 : D2

- Button : PA0 제어
- Button 위치 : S2

2-2 GPIO 핀 설정

1) LED

output으로 설정

핀설정을 하면 헤더파일에 자동으로 정의됨.

2) Button

input으로 설정

User Label 을 설정해주면 핀위치가 바뀌어도 코드를 다 바꿀 필요 없이 쉽게 핀위치를 바꿀 수 있다

2-3 코드

* ctrl + space 누르면 문장자동완성

HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState)
GPIOx : GPIO 그룹
GPIO_Pin : GPIO 핀번호
PinState : 핀 상태

* 헤더파일에 정의되어 있음

LED 만 꺼졌다 켜졌다하는 코드

/* USER CODE BEGIN WHILE */
  while (1)
  {
	  HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 1);
	  HAL_Delay(1000);

	  HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 0);
	  HAL_Delay(1000);

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

Button을 누르면 LED가 켜지는 코드

/* USER CODE BEGIN WHILE */
  while (1)
  {
	 if(!HAL_GPIO_ReadPin(GPIO_SW_GPIO_Port, GPIO_SW_Pin)){
		  HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 0);

	  }else{
		  HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 1);
	  }

	  HAL_Delay(100);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

0개의 댓글