嵌入式调试时间戳

本文介绍了一种在没有RTC时钟的嵌入式系统中,通过Unix时间戳转换为北京时间进行调试的方法。通过每秒递增的32位变量g_debug_time,结合debug_time_init和debug_date_time函数,实现在代码运行中打印时间,方便长期运行和问题定位。用户可以自定义时间格式,并通过串口设置时间。
摘要由CSDN通过智能技术生成

该思路是不用RTC时钟,根据Unix时间戳换算成北京时间,再用一定的格式打印出来。适用于长时间的跑代码,查找问题。代码简单,方便移植。
简要说明。
1、g_debug_time为32位变量,Unix时间戳,在中断里每一秒加一
2、初始化时调用debug_time_init,更改时间时也调用debug_time_init。该函数会将g_debug_time更新。
3、将需要打印时间的地方调用debug_date_time
4、串口设置打印时间调用set_debug_date_time。串口设置时间的格式必须是set debug time 19 11 14 14 54 30(中间一个空格)。年月日时分秒不足两位用0补全两位,如05
完整代码如下:
debug_timer.h文件

#ifndef DEBUG_TIMER_H_
#define DEBUG_TIMER_H_

#include "stdint.h"
#define SET_DEBUG_TIME 		"set debug time "

//依照RTC中的RTC_DateTypeDef 和 RTC_TimeTypeDef 自定义时间结构体
typedef struct
{
	uint8_t Year;	  		/*!< Specifies the RTC Date Year.
							 This parameter must be a number between Min_Data = 0 and Max_Data = 99 */

	uint8_t Month;	  		/*!< Specifies the RTC Date Month (in BCD format).
							 This parameter can be a value of @ref RTC_Month_Date_Definitions */

	uint8_t Date;	  		/*!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值