前言
STM32开发中,利用宏定义的__DATE__和__TIME__设置产品的代码固件版本: 为了方便在编译代码的时候,自动生成代码固件的版本号,所以我们需要用到__DATE__和__TIME__这两个宏获取记录编译代码时的时间。
提示:以下是本篇文章正文内容,下面案例可供参考
一、__DATE__和__TIME__是什么?
这两个宏在编译的时候会记录当前的编译日期时间,如:Mar 16 2011 18:10:14,而无论以后运行多少次这个时间都不会改变。如果重新编译的话,这个时间又会发生改变。在使用过程中,直接调用宏即可记录当前编译时间。这两个宏的结果都是字符串类型。
const char* time = TIME " "DATE ;
则time 值为该源文件最近一次编译的时间和日期,如18:10:14 Mar 16 2011 如果去掉中间的空格字符 TIME DATE 则为18:10:14Mar 16 2011
二、使用步骤
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.参考代码
代码如下(示例):
#define YEAR ((( (__DATE__ [7 ] - '0') * 10 \
+ (__DATE__ [8 ] - '0')) * 10 \
+ (__DATE__ [9 ] - '0')) * 10 \
+ (__DATE__ [10] - '0'))
#define MONTH ( __DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? 1 : 6) \
: __DATE__ [2] == 'b' ? 2 \
: __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? 3 : 4) \
: __DATE__ [2] == 'y' ? 5 \
: __DATE__ [2] == 'n' ? 6 \
: __DATE__ [2] == 'l' ? 7 \
: __DATE__ [2] == 'g' ? 8 \
: __DATE__ [2] == 'p' ? 9 \
: __DATE__ [2] == 't' ? 10 \
: __DATE__ [2] == 'v' ? 11 : 12)
#define DAY ( (__DATE__ [4] == ' ' ? 0 : __DATE__ [4] - '0') * 10 \
+ (__DATE__ [5] - '0'))
sprintf ( FirmWare, "%d%02d%02d", YEAR, MONTH, DAY );
总结
在设置固件代码版本号的时候,可以用“品牌代码+固件版本号+时间”的方式设置。
类似参考文章: 1、C语言之自定义__DATE__与__TIME__ 2、C语言中 将编译时间转换为int类型作为时间戳 DATE TIME 转INT类型 3、C语言中两个实用的宏定义__DATE__和__TIME__ 4、C语言获取系统的实时时间(stm32中常用到)DATE__和__TIME 5、STM32 用__DATE__和__TIME__获取keil工程编译时间,关联软件版本信息 6、利用KEIL获取文件编译时间 7、关于c 语言的__TIME__ __DATE__宏定义 8、编译时获得系统的日期和时间
|