Home » Post » STM » STM32F0 UART Receive 코드로 구현하기

STM32F0 UART Receive 코드로 구현하기

STM32F0 UART Receive –  UART 수신부를 구현하는 예제입니다.

STM32F091RC USART 목차

  1. STM32F0XX UART CUBEMX로 설정하기
  2. STM32F0XX UART Transmit 코드로 구현하기
  3. STM32F0XX UART Receive 코드로 구현하기 (현재 포스팅)
  4. UART ADC 데이터 송신하기

Receive 코드는 두줄이면 해결되지만, 데이터를 실제로 수신하는지 확인해야하므로 Transmit과 혼용해서 사용해볼까 한다.

HAL_UART_Receive()

수신 함수도 송신 함수와 다를 것 없어보인다. 입력인자는 같은데, 사용하는 방법이 다르다고 볼 수도 있을 듯 하다. 데이터 버퍼를 pData로 지정해 두었는데, 수신을 하면 데이터를 저장해 둘 것이니, 아마 저 입력 인자에 변수를 넣는다면 수신된 데이터가 변수에 저장될 것이다.

그래서 데이터를 선언해야한다.

입력인자가 uint8_t의 변수를 사용하고 있으므로, 똑같이 unsigned 8비트 인티저 타입으로 선언한다. 입력인자에서는 *을 붙이고 있으므로(포인터를 사용하고 있으므로) 주소 값을 넘겨줘야한다는 사실도 눈여겨보자.

데이터가 수신돼면, 데이터를 보내는 것을 확인할 수 있다.

동영상

“STM32F0 UART Receive 코드로 구현하기”에 대한 15개의 생각

  1. uint8_t data; 해당 data 변수 선언을 통해 만약 data ==’a’라면 HAL_UART_Transmit_IT하는데
    만약 data가 문자열이라면 어떻게 해야할까요..?!?!?
    만약 data =='(a,b)’ 라면 이라는 코드를 짜고 싶습니다!!

    1. 안녕하세요 박소정님!
      오랜만의 댓글이군요.
      의도에따라 코드가 다릅니다
      A또는b라면
      C언어 문법을 응용하시면 됩니다
      data == ‘a’ || data == ‘b’로 하시면 되지만
      문자열 매치가 필요하시다면 복잡해져요.
      Uart는 8비트 데이터 레지스터라 문자열을 한꺼번에 받지 못하고 하나 수신하고 저장하고, 수신하고 저장하고를 계속 반복해야하거든요.
      지금은 모바일폰으로 작성중이라 자세히 적지는 못하지만 시간되면 덧붙일게요.
      원하시는 의도가 무엇인지 다시 답글 남겨주세요 🙂

        1. 그렇다면 uint8_t 형식의 배열을 만드시구요(개수는 취향것) uart receive 함수를 하면 입력한 문자열이 저장될거에요.
          If문에서는 strcmp, strstr등의 함수를 이용해서 문자열을 비교해보시구(함수 반환인자에 맞게 코딩하셔야합니다) 원하시는 어플리케이션을 구성해보세요

        1. 연구실 사람이었으면 얼굴 보고 하는게 훨씬 편할텐데, 글로만 표현하려다보니 어렵군요.
          예제 코드를 작성하고 구동되면, 아래에 코멘트를 달아두겠습니다.
          (작업중)

        2. HAL_UART_Receive(&huart2, buf, LEN, 100);

          if(!strcmp(buf, “Hello”)){
          HAL_UART_Transmit(&huart2, “Hello! \r\n”, strlen(“Hello! \r\n”), 100);
          }

          while문 안에 대충 이런 코드 넣어보니까 잘 되는군요. 참고바랍니다.

  2. 안녕하세요.
    구글링 중에 찾았는데 혹시 문자열을 보냈지만 HAL_UART_Receive_IT으로 수신하면 문자열이 아니라 처음 문자 하나만 수신하는데 이 문제 해결 방법 알고 계실까요?

    1. 안녕하세요~ uint8_t * pData에 넣어줘야 할 인자 배열 길이를 좀 넉넉하게 선언해보시구요. size도 필요로 하는 문자열 길이만큼 넣어주세요.

  3. uart로 센서 측정값을 읽을 수 있나요?
    가능하면 어떤식으로 작성해야 읽을수 있나요? 간단한 예시가 혹시 있을까요?

    1. 채희찬님 안녕하세요.
      센서의 출력이 uart면 읽을 수 있습니다. 그러나 보통 센서들은 i2c나 spi로 되어 있는 경우가 많아요.
      Uart가 지원된다면 tx rx로 송신하거나 읽으면서 사용 가능하구요. 데이터시트에 있는 가이드대로 하시면 될 것 같습니다.

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.