Search
🛫

2. UART

헤더파일생성
/** * @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.
변수 추가 가능 기능