•
헤더파일생성
/**
* @brief UART communication header file
* @details This file contains the function prototypes and definitions for UART communication.
* @note This file is part of the STM32 project.
*/
#ifndef APP_UART_H
#define APP_UART_H
#include "app.h"
/**
* @brief UART로 문자열 전송 함수
* @param str 전송할 문자열
* @return HAL_OK: 성공, HAL_ERROR: 실패
*/
HAL_StatusTypeDef App_UART_SendString(const char *str);
/**
* @brief UART로 문자열을 printf 형식으로 전송하는 함수
* @param format printf 형식의 포맷 문자열
* @param ... 가변 인자
* @return 전송된 문자 수
*/
int App_UART_Printf(const char *format, ...);
#endif /* APP_UART_H */
JavaScript
복사
•
소스코드 파일생성
/**
* @file app_uart.c
* @brief UART 통신 관련 기능 구현 파일
*/
#include "app_uart.h"
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
/* 외부 UART 핸들 참조 - main.c에서 정의됨 */
extern UART_HandleTypeDef huart2;
/**
* @brief UART로 문자열 전송 함수
* @param str 전송할 문자열
* @return HAL_OK: 성공, HAL_ERROR: 실패
*/
HAL_StatusTypeDef App_UART_SendString(const char *str)
{
if(str == NULL)
{
return HAL_ERROR;
}
uint16_t len = strlen(str);
return HAL_UART_Transmit(&huart2, (uint8_t*)str, len, 1000);
}
/**
* @brief UART로 문자열을 printf 형식으로 전송하는 함수
* @param format printf 형식의 포맷 문자열
* @param ... 가변 인자
* @return 전송된 문자 수
*/
int App_UART_Printf(const char *format, ...)
{
char buffer[256];
va_list args;
va_start(args, format);
int len = vsnprintf(buffer, sizeof(buffer), format, args);
va_end(args);
if(len > 0)
{
HAL_UART_Transmit(&huart2, (uint8_t*)buffer, len, 1000);
}
return len;
}
JavaScript
복사
사용 예시
App_UART_SendString("Hello, STM32!\r\n");
HAL_Delay(1000);
App_UART_Printf("Current LED state: %s\r\n",
(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7) == GPIO_PIN_SET) ? "ON" : "OFF");
JavaScript
복사
•
App_UART_SendString , App_UART_Printf 차이점
1.
단순 string 전달
2.
변수 추가 가능 기능