본문 바로가기

공부/STM32F1

8.[stm32f103][hal] 외부 인터럽트

728x90
반응형

 

1. 회로도

 

PC0 : 인터럽트 0

PC1 : 인터럽트 1

 

PE3 : 출력

PE4 : 출력

 

테스트를 LED를 항상 켜져 있다가 외부키 가 눌리면 OFF 시키도록 하려고 합니다

 

2. STM32CUBE 설정

 

NVIC 쪽 Enabled를 체크해야 아래와 같은 소스가 자동으로 만들어집니다.

이 부분이 인터럽트 처리 함수 입니다. 

 

 

 

3. 소스

main.c

int main(void)
{

  HAL_Init();


  SystemClock_Config();

  MX_GPIO_Init();

  HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET);
  while (1)
  {
  
  }
  /* USER CODE END 3 */

}

stn32f1xxx_it.c

void EXTI0_IRQHandler(void)
{
  HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET);
  
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
}


void EXTI1_IRQHandler(void)
{
  HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_RESET);  
 
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
}

 

4. 관련함수

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

{

 

 

}

 

 

5. 추가

EXTI를 EVENT모드로 설정할 경우 WFE명령어로 Sleep Mode에 진입한 MCU를 깨우는 용도로 사용됩니다.

관련 : https://www.plainy.co.kr/bbs/board.php?bo_table=stm32_lecture&wr_id=16

 

인터럽트 안에서 HAL_Delay를 쓰려면 0순위로 선언하면 안됨!!!

728x90
반응형