반응형
led 제어만을 목적으로 하는 단순한 프로그램이 아니고서는 HAL_Delay 함수 사용은 자제하는 것이 좋다. 왜냐하면 HAL_Delay 함수 사용중에는 다른 작업을 할 수 없고 다른 작업이 많아서 지연이 발생할 경우 HAL_Delay 함수 실행 시점도 지연이 발생하기 때문이다. 좀 과장해서 설명하자면 500ms 마다 led가 점멸하도록 코딩했는데 지연으로 인해 1000ms 마다 led가 점멸할 수도 있다. 그래서 다른 작업에 영향을 주거나 받는 것이 최소화 될 수 있도록 아래와 같이 주로 코딩을 한다.
1. 기본 led 제어 설정은 아래를 참조하자.
@ HAL_GetTick() 함수를 사용하여 500ms 주기로 led 끄고 켜기
uint32_t before = HAL_GetTick();
while (1)
{
if(HAL_GetTick() - before >= 500)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
before = HAL_GetTick();
}
}
@@ 직전 실행 시간과 현재 시간의 차이를 매번 확인해서 실행하는 방식으로 다른 코드에서 일부 지연이 생겨도 led 제어 코드는 동일한 주기로 실행이 가능하다.
728x90
'MCU > Learn STM32F103 basics' 카테고리의 다른 글
[stm32f103] micros(), delay_us() 사용하기 (0) | 2024.02.26 |
---|---|
[stm32f103] led 제어하기 - HAL_Delay() 사용 (0) | 2023.09.24 |
[stm32f103] STM32CubeMX 필수 기본 설정 (0) | 2023.09.23 |