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
이런식으로 출력된다.
'프로젝트 기록 > 23SEMA_Control_STM32' 카테고리의 다른 글
[LoRa] 4편. 통신에서 사용할 랜덤값 생성 (0) | 2023.01.17 |
---|---|
void value not ignored as it ought to be 오류 (0) | 2023.01.12 |
[LoRa] 3편. 통신을 위한 안테나 정리 (0) | 2023.01.11 |
[LoRa] 2편. 로라 모듈이 연결된 보드끼리 연결 (0) | 2023.01.11 |
[STM32제어] UART 통신, teraterm 이용해서 값 주고받기 (0) | 2023.01.10 |