文章目录
- 前言
- 一、__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、编译时获得系统的日期和时间