- 新增性能监控模块(performance_monitor),用于实时跟踪系统性能指标 - 添加串口调试输出功能,支持系统状态和性能统计的定期输出 - 实现双缓冲机制,提升ADC数据采集和存储的实时性 - 优化数据存储模块,支持校正后数据的存储和双缓冲管理 - 增强错误处理机制,完善中断回调函数和系统错误恢复 ♻️ refactor(ltc2508): 重构ADC驱动支持双缓冲 - 将ADC数据存储从单缓冲区重构为双缓冲区结构 - 新增缓冲区状态管理和自动切换机制 - 优化DMA传输完成回调,支持多缓冲区处理 - 提供缓冲区获取和释放的API接口 📝 docs(performance): 新增性能评估报告和使用指南 - 创建STM32F405性能评估报告,详细分析系统性能指标 - 编写双缓冲机制使用指南,说明实现原理和使用方法 - 添加LTC2508驱动使用示例代码 🐛 fix(dma): 调整DMA中断优先级 - 将DMA2_Stream7中断优先级从9调整为6,优化中断响应 - 更新STM32CubeMX配置文件中的中断优先级设置 🔧 chore(config): 优化系统配置和代码结构 - 添加串口调试输出控制开关和间隔配置 - 清理中断处理文件,移除重复的回调函数定义 - 增强错误处理函数,添加系统状态恢复机制
54 lines
1.5 KiB
C
54 lines
1.5 KiB
C
#ifndef PERFORMANCE_MONITOR_H
|
|
#define PERFORMANCE_MONITOR_H
|
|
|
|
#include "main.h"
|
|
#include <stdint.h>
|
|
|
|
// 性能监控配置
|
|
#define PERF_MON_MAX_TASKS 8
|
|
#define PERF_MON_SAMPLE_PERIOD_MS 100
|
|
|
|
// 任务ID定义
|
|
typedef enum {
|
|
PERF_TASK_ADC_PROCESSING = 0,
|
|
PERF_TASK_CORRECTION,
|
|
PERF_TASK_DATA_PACKET,
|
|
PERF_TASK_RS485_TX,
|
|
PERF_TASK_FATFS_WRITE,
|
|
PERF_TASK_USB_PROCESS,
|
|
PERF_TASK_SYSTEM_MONITOR,
|
|
PERF_TASK_IDLE
|
|
} PerfTaskID_t;
|
|
|
|
// 任务性能统计
|
|
typedef struct {
|
|
uint32_t total_time_us; // 总执行时间(微秒)
|
|
uint32_t max_time_us; // 最大执行时间
|
|
uint32_t min_time_us; // 最小执行时间
|
|
uint32_t call_count; // 调用次数
|
|
uint32_t avg_time_us; // 平均执行时间
|
|
float cpu_usage_percent; // CPU使用率百分比
|
|
} TaskPerfStats_t;
|
|
|
|
// 系统性能统计
|
|
typedef struct {
|
|
TaskPerfStats_t tasks[PERF_MON_MAX_TASKS];
|
|
uint32_t total_cpu_usage_percent;
|
|
uint32_t free_heap_size;
|
|
uint32_t min_free_heap_size;
|
|
uint32_t stack_usage_percent;
|
|
uint32_t sample_period_ms;
|
|
uint32_t last_update_tick;
|
|
} SystemPerfStats_t;
|
|
|
|
// 函数声明
|
|
void PerformanceMonitor_Init(void);
|
|
void PerformanceMonitor_TaskStart(PerfTaskID_t task_id);
|
|
void PerformanceMonitor_TaskEnd(PerfTaskID_t task_id);
|
|
void PerformanceMonitor_Update(void);
|
|
void PerformanceMonitor_GetStats(SystemPerfStats_t *stats);
|
|
void PerformanceMonitor_ResetStats(void);
|
|
uint32_t PerformanceMonitor_GetFreeHeapSize(void);
|
|
uint32_t PerformanceMonitor_GetStackUsage(void);
|
|
|
|
#endif // PERFORMANCE_MONITOR_H
|