마이크로프로세서가 주변장치와 통신하기 위해 범용으로 사용되는 입출력포트이다.
GPIO는 입력과 출력포트를 제어하기 위해 3개의 레지스터를 갖고 있으며, 3개의 레지스터는 PORTx, DDRx, PINx로 이루어져 있다.
Board에 내장된 LED, Button 을 제어

- LED : PC13 제어
- LED 위치 : D2
- Button : PA0 제어
- Button 위치 : S2
output으로 설정

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

input으로 설정


User Label 을 설정해주면 핀위치가 바뀌어도 코드를 다 바꿀 필요 없이 쉽게 핀위치를 바꿀 수 있다
* ctrl + space 누르면 문장자동완성
HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState)
GPIOx : GPIO 그룹
GPIO_Pin : GPIO 핀번호
PinState : 핀 상태
* 헤더파일에 정의되어 있음
/* 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 */
/* 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 */