본문 바로가기
프로젝트 기록/23SEMA_Control_STM32

[STM32] HAL_UART_Transmit()/ Sprintf 사용법

by 소요이 2023. 1. 12.
728x90

내가 사용하는 STM32NUCLEOF446RE 보드의 경우

USART2를 통해 컴퓨터와 시리얼 통신을 하는데,

이 값을 보통 teraterm으로 받아 변수를 확인한다.

HAL_UART_Transmit()은 UART통신으로 원하는 값을 보낼 수 있다.

 

 

1. HAL_UART_Transmit()

UART_HandleTypeDef huart2;

// 1. Direct write
HAL_UART_Transmit(&huart2, "a", 1, 10);

// 2. Variable write
uint8_t rx_data = 'a';
HAL_UART_Transmit(&huart2, &rx_data, 1, 10);

// 3. String write
uint8_t *tx_data = "Init.";
HAL_UART_Transmit(&huart2, tx_data, sizeof(tx_data), 10);

1번은 원하는 문자를 바로 출력,

2번은 변수를 출력,

3번은 문자열을 출력하는 방법이다.

 

 

 

2. sprintf()

문자열을 출력할 때, 문자열에 숫자를 입력해야 하는 경우가 생긴다.

그 때 sprintf()를 사용한다.

#include <stdio.h>를 먼저 선언해야 한다.

 

  • 사용법) 1
    char buffer[256] ;
    int a = 7 ;
    sprintf( buffer , " test%d", a ) ;

    이렇게 넣으면..
    buf 에는 test7 라는 문자열이 저장된다.

 

  • 사용법) 2
    char *string = "world" ;
    sprintf( buffer, "Hello %s %d", string, a ) ;
    이렇게 쓰면,

    buffer에 Hello world 9 라고 저장된다.

 


사용법)3
char buffer[256] ;
for( int i = 0 ; i < 3 ; ++i )
{

sprinf( buffer, "test %d", i ) ;
printf( "%s\n", buffer ) ;

}
이렇게 쓰면,
test0
test1
test2
이런식으로 출력된다.