GPIO 관련 HAL 함수
STM32에서 GPIO 입력/출력을 제어할 때 주로 쓰이는 함수를 정리한다.
1. 핀 상태 쓰기 (출력)
HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
- 특정 GPIO 핀에 High(1) 또는 Low(0) 값을 출력.
- PinState: GPIO_PIN_SET / GPIO_PIN_RESET
예시:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // PA5 핀 HIGH 출력
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // PA5 핀 LOW 출력
2. 핀 상태 읽기 (입력)
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
- 특정 GPIO 핀의 입력 상태(HIGH/LOW)를 읽음.
- 반환값: GPIO_PIN_SET 또는 GPIO_PIN_RESET
예시:
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET) { // PC13이 LOW라면 (예: 버튼 눌림) }
3. 핀 상태 토글
HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
- 해당 핀의 출력을 반전시킴 (HIGH ↔ LOW).
- LED 토글 등에 자주 사용.
예시:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // PA5 출력 반전
Delay 관련 HAL 함수
STM32에서는 주로 SysTick Timer를 이용해 지연 함수를 제공한다.
1. 밀리초 단위 지연
HAL_Delay(uint32_t Delay);
- 지정한 시간(ms) 만큼 코드 실행을 지연.
- 내부적으로 SysTick 인터럽트를 활용.
- Blocking: HAL_Delay() 호출 동안 메인 루프의 다른 작업은 멈춘다. 실시간성이 필요한 작업과 함께 쓰면 안 됨.
- 최종적으로 인터럽트에 의존하는 블로킹 함수
예시:
HAL_Delay(1000); // 1초 지연
2. Tick 카운트 읽기
uint32_t HAL_GetTick(void);
- MCU가 실행된 이후 경과한 시간을 ms 단위로 반환.
- HAL_Delay() 내부도 이 함수를 활용.
예시:
uint32_t start = HAL_GetTick(); while ((HAL_GetTick() - start) < 500) { // 500ms 동안 반복 }
'Embedded System > STM32' 카테고리의 다른 글
[STM32] 6. Built-in Button을 사용하여 built-in LED Control (1) | 2025.09.07 |
---|---|
[STM32] 5. Blink LED (0) | 2025.09.07 |
[STM32] 4. Blink built-in LED (0) | 2025.09.07 |
[STM32] 3. STM32Cube 프로젝트 생성 (0) | 2025.09.06 |
[STM32] 2. Cortex 시리즈 정리 (0) | 2025.09.04 |
댓글