環(huán)境:
主機:WIN10
開發(fā)環(huán)境:MDK5.12
說明:
為單片機設(shè)計了一套簡單的日志系統(tǒng),通過日志系統(tǒng)提供的接口可以查看設(shè)備狀態(tài),并進行一些基本的調(diào)試。
日志系統(tǒng)通過串口輸出,所以單片機需要準(zhǔn)備一個串口供日志系統(tǒng)使用。注意串口發(fā)送不能用DMA發(fā)送(避免在在中斷中打印日志造成的中斷競爭),接收可以用DMA接收。
功能:
打開/關(guān)閉各個模塊的調(diào)試輸出
輸入動作指令,讓設(shè)備進行一些動作
打印系統(tǒng)運行日志
指令:
H:幫助
O:調(diào)試輸出全開
O1:打開1號模塊,打開其他模塊指令類似
F:調(diào)試輸出全關(guān)
F1:關(guān)閉1號模塊
I:輸出系統(tǒng)日志
C:清除系統(tǒng)日志
A1:執(zhí)行1號動作,執(zhí)行其他動作指令類似
源代碼:
log.h:
/**
*Copyright(c),2015-2025
*@filelog.h
*@brief日志模塊主文件
*@authorjdh
*@date2015/5/7
*@update2015/6/19
*@update2015/6/23
*@update2015/6/30
*@update2015/7/8
*@update2015/7/13
*@update2015/8/12
*@update2015/8/18
*@update2016/5/17
*@update2016/6/30
*@update2016/7/22
*@update2016/8/11
*@update2016/8/24
*@update2016/9/2
*@update2016/9/5
*@update2016/9/7
*@update2016/9/9
*/
#ifndef_LOG_H_
#define_LOG_H_
/*********************************************************************
*頭文件
**********************************************************************/
#include“world.h”
#include“console.h”
/*********************************************************************
*宏定義
**********************************************************************/
/**
*@brief日志模塊數(shù)量
*/
#defineNUM_LOG5
/**
*@brief模塊編號
*/
#defineLOG_TEST0
#defineLOG_CLOCK1
#defineLOG_DW10002
#defineLOG_DW1000_STATUS3
#defineLOG_DEAL_BUS4
/*********************************************************************
*數(shù)據(jù)結(jié)構(gòu)
**********************************************************************/
/**
*@brief日志
*/
struct_Log
{
//公有日志
//收到移動點數(shù)據(jù)次數(shù)
uint32_tnum_rf_rx;
//發(fā)送超時被刪除點數(shù)
uint32_tnum_time_out_delete;
//RF發(fā)送次數(shù)
uint32_tnum_rf_tx;
//RF校時或分配事件次數(shù)
uint32_tnum_rf_time;
//RF隨機信道發(fā)送次數(shù)
uint32_tnum_rf_random_tx;
//復(fù)位次數(shù)
uint32_tnum_reset;
//運行時間,分度為0.5s
uint32_ttime_run;
//收到同步脈沖計數(shù)
uint32_tnum_sync_pulse;
//收到422輪詢/事件幀次數(shù)
uint32_tnum_bus_poll;
//收到422事務(wù)命令次數(shù)
uint32_tnum_bus_down_cmd;
//收到422事務(wù)命令中事件個數(shù)
uint32_tnum_bus_down_cmd_dot;
//收到有效的422幀次數(shù)
uint32_tnum_valid_bus;
//收到無效的422幀次數(shù)
uint32_tnum_invalid_bus;
//接收時間錯誤
uint32_tnum_time_error;
//私有日志
//dw1000芯片錯誤次數(shù)
uint32_tnum_dw1000_error[NUM_DW1000];
//接收時間錯誤
uint32_tnum_dw1000_time_error[NUM_DW1000];
//輪詢超時被刪除點數(shù)
uint32_tnum_poll_time_out_delete;
//接收超時復(fù)位
uint32_tnum_dw1000_time_out_reset[NUM_DW1000];
//dw1000芯片狀態(tài)錯誤次數(shù)
uint32_tnum_dw1000_status_error[NUM_DW1000];
};
/*********************************************************************
*函數(shù)
**********************************************************************/
/**
*@brief模塊加載
*/
voidlog_load(void);
/**
*@brief讀取日志
*@retval日志
*/
struct_Loglog_read(void);
/**
*@brief清除日志
*/
voidlog_clear(void);
/**
*@brief收到移動點數(shù)據(jù)次數(shù)
*/
voidlog_write_num_rf_rx(void);
/**
*@brief發(fā)送超時被刪除點數(shù)
*/
voidlog_write_num_time_out_delete(void);
/**
*@briefRF發(fā)送次數(shù)
*/
voidlog_write_num_rf_tx(void);
/**
*@briefRF校時或分配事件次數(shù)
*/
voidlog_write_num_rf_time(void);
/**
*@briefRF隨機信道發(fā)送次數(shù)
*/
voidlog_write_num_rf_random_tx(void);
/**
*@brief復(fù)位次數(shù)
*/
voidlog_write_num_reset(void);
/**
*@brief運行時間
*@paramadd_time:增加的時間。單位:0.5s
*/
voidlog_write_time_run(uint32_tadd_time);
/**
*@brief收到同步脈沖計數(shù)
*/
voidlog_write_num_sync_pulse(void);
/**
*@brief收到422輪詢/事件幀次數(shù)
*/
voidlog_write_num_bus_poll(void);
/**
*@brief收到422事務(wù)命令次數(shù)
*/
voidlog_write_num_bus_down_cmd(void);
/**
*@brief收到422事務(wù)命令中事件個數(shù)
*/
voidlog_write_num_bus_down_cmd_dot(void);
/**
*@brief收到有效的422幀次數(shù)
*/
voidlog_write_num_valid_bus(void);
/**
*@brief收到無效的422幀次數(shù)
*/
voidlog_write_num_invalid_bus(void);
/**
*@brief收到時間錯誤
*/
voidlog_write_num_time_error(void);
/**
*@briefdw1000芯片錯誤次數(shù)
*@paramindex:模塊序號,從0開始
*/
voidlog_write_num_dw1000_error(uint8_tindex);
/**
*@briefdw1000芯片接收時間錯誤次數(shù)
*@paramindex:模塊序號,從0開始
*/
voidlog_write_num_dw1000_time_error(uint8_tindex);
/**
*@brief輪詢超時被刪除點數(shù)
*/
voidlog_write_num_poll_time_out_delete(void);
/**
* @brief dw100
評論
查看更多