/** ****************************************************************************** * @file uart2_print.h * @brief UART2调试打印模块头文件 * @author Application Layer * @version 1.0 ****************************************************************************** * @attention * 本模块提供基于环形缓冲区的非阻塞调试信息输出功能 * 支持printf风格的格式化输出 * 支持中断安全调用 ****************************************************************************** */ #ifndef __UART2_PRINT_H #define __UART2_PRINT_H #ifdef __cplusplus extern "C" { #endif #include #include #include #define UART2_TX_BUFFER_SIZE 256 /** * @brief 初始化UART2打印模块 * @note 清空发送缓冲区,重置状态标志 * @param 无 * @retval 无 */ void UART2_Print_Init(void); /** * @brief 发送原始数据到UART2 * @note 数据写入环形缓冲区,非阻塞返回 * @param data: 待发送的数据指针 * @param len: 数据长度 * @retval 无 */ void UART2_Print_Send(const uint8_t *data, uint16_t len); /** * @brief 发送字符串到UART2 * @note 自动计算字符串长度 * @param str: 待发送的字符串指针 * @retval 无 */ void UART2_Print_String(const char *str); /** * @brief 格式化打印到UART2 * @note 支持printf风格的格式化输出 * @param fmt: 格式化字符串 * @param ...: 可变参数 * @retval 无 */ void UART2_Print_Printf(const char *fmt, ...); /** * @brief UART2打印任务处理函数 * @note 在主循环中调用,处理发送缓冲区中的数据 * 每次调用发送一个字节(中断方式) * @param 无 * @retval 无 */ void UART2_Print_Task(void); /** * @brief 检查UART2是否正在发送 * @note 用于查询当前发送状态 * @param 无 * @retval true: 正在发送, false: 空闲 */ bool UART2_Print_IsBusy(void); /** * @brief 获取发送缓冲区剩余空间 * @note 用于检测缓冲区是否即将溢出 * @param 无 * @retval 剩余空间字节数 */ uint16_t UART2_Print_Available(void); /** * @brief UART2发送完成中断回调 * @note 由HAL库调用,不应由用户直接调用 * @param huart: UART句柄指针 * @retval 无 */ void UART2_Print_TxCpltCallback(void); #ifdef __cplusplus } #endif #endif