- 新增SD卡存储监控功能,包含写入次数、错误次数、缓冲区满次数、总写入字节数和文件数量等统计指标 - 新增SD卡监控API函数,包括报告写入、报告错误、报告缓冲区满和报告文件创建 - 在data_storage.c中集成SD卡监控功能,在关键操作点添加监控报告 - 新增详细的使用文档《SD_Storage_Monitoring_Guide.md》,说明监控指标、API使用、集成方法和故障诊断 - 优化系统调试输出,在DebugOutput_PrintSystemStats中增加SD卡统计信息显示,包括基本统计、SD卡统计和计算指标(平均写入大小、错误率) - 调整SDIO时钟分频器从2改为1以提高SD卡通信速度 - 调整TIM2中断优先级从12改为3以提高定时器响应优先级 - 更新STM32CubeMX配置文件(.ioc)以反映SDIO时钟分频和TIM2中断优先级的更改 - 注释掉USB连接状态检测代码以简化主循环处理 - 优化ADC数据就绪中断处理,每2次触发一次DMA读取,并在DMA读取超时时报告数据溢出 - 移除ProcessAdcData函数中已注释的RS485发送代码 - 将数据溢出报告从ProcessAdcData函数移至HAL_GPIO_EXTI_Callback函数中的DMA读取超时处理
89 lines
1.7 KiB
C
89 lines
1.7 KiB
C
#include "system_monitor.h"
|
|
#include <string.h>
|
|
|
|
// 静态变量
|
|
static SystemMonitorStats_t g_system_stats = {0};
|
|
|
|
/**
|
|
* @brief 初始化系统监控模块
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_Init(void)
|
|
{
|
|
memset(&g_system_stats, 0, sizeof(SystemMonitorStats_t));
|
|
}
|
|
|
|
/**
|
|
* @brief 增加采样样点计数
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_IncrementSampleCount(void)
|
|
{
|
|
g_system_stats.total_samples++;
|
|
}
|
|
|
|
/**
|
|
* @brief 报告数据处理溢出(数据来不及处理)
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_ReportDataOverflow(void)
|
|
{
|
|
g_system_stats.data_overflow_count++;
|
|
}
|
|
|
|
/**
|
|
* @brief 获取系统统计信息
|
|
* @param stats: 统计信息结构体指针
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_GetStats(SystemMonitorStats_t *stats)
|
|
{
|
|
if (stats != NULL) {
|
|
memcpy(stats, &g_system_stats, sizeof(SystemMonitorStats_t));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief 报告SD卡写入操作
|
|
* @param bytes_written: 写入的字节数
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_ReportSDWrite(uint32_t bytes_written)
|
|
{
|
|
g_system_stats.sd_write_count++;
|
|
g_system_stats.sd_total_bytes_written += bytes_written;
|
|
}
|
|
|
|
/**
|
|
* @brief 报告SD卡写入错误
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_ReportSDWriteError(void)
|
|
{
|
|
g_system_stats.sd_write_error_count++;
|
|
}
|
|
|
|
/**
|
|
* @brief 报告SD卡缓冲区满
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_ReportSDBufferFull(void)
|
|
{
|
|
g_system_stats.sd_buffer_full_count++;
|
|
}
|
|
|
|
/**
|
|
* @brief 报告SD卡文件创建
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void SystemMonitor_ReportSDFileCreated(void)
|
|
{
|
|
g_system_stats.sd_file_count++;
|
|
}
|