MDK中利用宏定义__DATE__和__TIME__设置产品的代码固件版本
文章目錄
- 前言
- 一、__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_context2.參考代碼
代碼如下(示例):
//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、編譯時獲得系統的日期和時間
總結
以上是生活随笔為你收集整理的MDK中利用宏定义__DATE__和__TIME__设置产品的代码固件版本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新题速看~2021阿里、腾讯、字节都在问
- 下一篇: NI视觉视觉软件简介