100 lines
2.3 KiB
C
100 lines
2.3 KiB
C
|
|
/**
|
|||
|
|
******************************************************************************
|
|||
|
|
* @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 <stdint.h>
|
|||
|
|
#include <stdarg.h>
|
|||
|
|
#include <stdbool.h>
|
|||
|
|
|
|||
|
|
#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
|