MCU/Learn STM32F103 basics

[stm32f103] led 제어하기 - HAL_Delay() 사용

mle21 2023. 9. 24. 06:00
반응형

@@ GPIO_Output 설정과 HAL_Delay()를 사용하여 led를 제어해 보자.

@@ 개발보드의 PC13에 led가 연결되어 있다.

 


1. 기본 cubemx 설정은 아래를 참조하자.

 

[stm32f103] STM32CubeMX 필수 기본 설정

@@ 보드: stm32f103c8t6 개발보드 @@ 디버거: st-link v2 @@ IDE: IAR Embedded Workbench IDE - ARM 7.70.1 1. STM32CubeMX 실행 > File > New Project... 클릭 > New Project 팝업창 뜸 아래 팝업창에서 stm32f103c8t6 검색 > 하단부 stm32f10

t-shaped-person.tistory.com

 

2. pinout에서 PC13 마우스 좌클릭 > GPIO_Output 선택

@ 1번 기본 cubemx 설정 참고하여 GENERATE CODE 실시

 

1) HAL_GPIO_WritePin() 함수를 사용하여 500ms 주기로 led 끄고 켜기

  while (1)
  {
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
    HAL_Delay(500); // 실제 499를 넣어야 하나 편의상 500 사용
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
    HAL_Delay(500); // 실제 499를 넣어야 하나 편의상 500 사용
  }

 

2) HAL_GPIO_TogglePin() 함수를 사용하여 500ms 주기로 led 끄고 켜기

  while (1)
  {
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    HAL_Delay(500); // 실제 499를 넣어야 하나 편의상 500 사용
  }

 

3) HAL_Delay()

@ ms 단위로 딜레이를 줄 수 있음

@ 숫자 n을 입력값으로 넣을 경우 n+1ms 딜레이로 동작한다.

@ 0을 넣으면 1ms, 99를 넣으면 100ms 딜레이 동작

@ 딜레이 동안에는 다른 작업을 할 수 없음

@ HAL_Delay 함수 실행시 다른 작업을 수행할수 없음

@ 테스트나 강제로 안정화 시간을 줘야할때 주로 사용


728x90