文章目录
- 前言
- 一、__DATE__和__TIME__是什么?
- 二、使用步骤
- 1.引入库
- 2.参考代码
 
- 总结
前言
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.参考代码
代码如下(示例):
//DATE得到的月数,__DATA__[0-2]表示月的缩写
/*                   012
Jan ------ 1 -------  an
Feb ------ 2 -------   b
Mar ------ 3 ------- M r
Apr ------ 4 -------   r
may ------ 5 -------   y
Jun ------ 6 -------   n
Jul ------ 7 -------   l
Aug ------ 8 -------   g
Sept------ 9 -------   p
Oct ------ 10-------   t
Nov ------ 11-------   v 
Dec ------ 12-------   c*/
// 将日期转换为uint类型。
// ((((2 * 10) + 0) * 10 + 2) * 10) + 1;  先加再乘。10进制,加上1位,就*10 。
#define YEAR 		(((	(__DATE__ [7 ] - '0') * 10  \+ (__DATE__ [8 ] - '0')) * 10 \+ (__DATE__ [9 ] - '0')) * 10 \+ (__DATE__ [10] - '0'))// 判断月的缩写的第3位,如果第3位相同的,则判断第1位或者第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)// 求取日期:__DATE__ [4]十位,__DATE__ [5]个位。十位为空,则直接用__DATE__ [5]-'0'表示个位。否则十位*10 + 个位。
#define DAY 		( (__DATE__ [4] == ' ' ? 0 : __DATE__ [4] - '0') * 10 \+ (__DATE__ [5] - '0')) sprintf ( FirmWare,   "%d%02d%02d",  YEAR, MONTH, DAY );       // 利用__DATE__得到的时间,在编译的时候会改变,其余时间都不会改变,利于对产品打上版本编号。总结
在设置固件代码版本号的时候,可以用“品牌代码+固件版本号+时间”的方式设置。
类似参考文章:
 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、编译时获得系统的日期和时间