Language/AVR

STM32 : Button, Timer

짱도르딘 2024. 9. 13. 16:47
728x90

 

Button

 

오늘은 STM32를 통해 버튼을 제어할 예정이다.

 

PC13을 아래와 같이 풀업으로 저장한다.

 

입력 데이터를 아래와 같이 선언 후, while문 내에 다음과 같이 코드를 작성한다.

 

  while (1)
  {
	  if(!(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)))
	  {
		  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
	  }
	  else
	  {
		  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
	  }

//	  inputData = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

 

코드를 돌려보면, 스위치를 누를 때마다 LED가 점등되는 것을 확인할 수 있다.

아래 영상을 통해 동작을 확인할 수 있다.

 

 

 


Timer

타이머를 사용하기 위해 아래와 같이 Prescaler와 Period를 설정하고, 인터럽트 부분에 체크를 한다.

 

그다음, 타이머 관련 함수를 아래와 같이 선언을 해준다.

 

그다음 아래와 같은 코드를 작성하고 실행시키면 아래와 같은 영상처럼 동작하는 것을 확인할 수 있다.

/* USER CODE BEGIN PFP */

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM11)
	{
		HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
	}
}

/* USER CODE END PFP */

 

 

 


 

728x90

'Language > AVR' 카테고리의 다른 글

STM32 : UART  (2) 2024.09.12
STM32 : LED  (0) 2024.09.12
ATmega 128 : CLCD, I2C  (0) 2024.09.10
ATmega 128 : 4-Digit FND 동작 구현  (0) 2024.05.30
ATmega 128 : FND 동작 구현  (0) 2024.05.29