[STM32] USART CLI (2)

이상윤·2022년 7월 26일
1

STM32

목록 보기
6/8

STM32 칩을 이용하여 제작한 보드를 이용하여 실습을 진행했다.

먼저 실습했던 내용은 UART통신을 이용해보는 것이었다.

teraterm을 이용하여 입출력 결과를 확인한다.

2가지 방식을 통해 실습을 진행했다.

  1. Polling 방식
  2. Interrupt 방식

Polling 방식

Polling방식으로 구현하는 것을 굉장히 쉽고 간단하다. 하지만 실행시간이 길어질 수록 반응속도가 낮아진다. 비효율적인 방법이다.


size를 1만큼 읽고, 해당 입력된 문자를 다시 보내 터미널에 출력된다.
위 처럼 굉장히 간단하게 구현가능하다.

Interrupt 방식

Interrupt방식으로 구현 하는 방식도 크게 어렵지 않다.

main 함수 내에서 while 루프가 시작하기 전

위와 같이 코드를 적어준다.
인터럽트방식으로 데이터를 받겠다는 의미이다.
현재는 size를 1로 설정해주었으므로 size가 1만큼을 수신받게되면
인터럽트가 발생한다.


인터럽트가 발생하게 되면 위의 HAL_UART_RxCpltCallback 함수가 최종적으로 실행된다. 이 함수 내부에 원하는 동작을 구현하면 된다.
중요한 것은 다시 한번 HAL_UART_Receive_IT 함수를 호출 해야한다.

이 콜백 함수는 stm32f4xx_hal_uart.c에 정의되어 있다.

__weak로 정의 되어있는데 이는 user code에서 재정의하면
재정의 된 코드로 실행된다.

결과가 잘 출력되는 것을 확인하였다.

0개의 댓글