본문 바로가기

공부/STM32F1

32.[stm32f103][hal] usart1 Interrupt

반응형

1. STM32CubeMX

 

첫 번째 방법

#include "main.h" 
#include "stm32f1xx_hal.h" 

/* USER CODE BEGIN Includes */ 

/* USER CODE END Includes */ 

UART_HandleTypeDef huart1; 

/* USER CODE BEGIN PV */ 
/* Private variables ---------------------------------------------------------*/ 
uint8_t RxBuffer[1];







int main(void) 
{







  MX_USART1_UART_Init(); 
  /* USER CODE BEGIN 2 */ 

  HAL_UART_Receive_IT(&huart1, RxBuffer, 1);

  while (1){



  }

}









void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
{   
  if(huart->Instance == USART1){ 
    HAL_UART_Receive_IT(&huart1, RxBuffer, 1);    
    printf("Rx= %c\r\n",RxBuffer[0]); 
  } 
}

 

두 번째 방법

__HAL_UART_ENABLE_IT(huart, UART_IT_RXNE);

이 소스를  stm32f1xx_hal_msp.c 에 넣는다.

그리고 나서 stm32f1xx_it.c 에 가서

  if((huart1.Instance->SR & UART_FLAG_RXNE) != RESET)
  {
    printf("%c\r\n",huart1.Instance->DR);
  }

이런식으로 받아오면 된다!

그런데 SR 같은 경우에는 ISR 같이 명령어가 다른경우가 있으니 참고 하기 바랍니다.

오류가 뜨면 직접 목록을 확인해서 넣어주세요!!

저같은 경우는 잘 들어오는지 확인하기 위해서 printf 를 썻지만 변수를 넣어주시면 됩니다.

 

 

반응형

'공부 > STM32F1' 카테고리의 다른 글

명령어 모음  (0) 2019.07.16
33.[stm32f103][hal] 소프트 리셋  (0) 2019.05.31
31.[stm32f103][hal] OLED SSD1306  (0) 2018.10.22
30.[stm32f103][hal] us delay 만들기  (0) 2018.10.12
29.[stm32f103][hal] i2c_AT2402 eeprom  (0) 2018.10.10