日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MDK中利用宏定义__DATE__和__TIME__设置产品的代码固件版本

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_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、編譯時獲得系統的日期和時間

總結

以上是生活随笔為你收集整理的MDK中利用宏定义__DATE__和__TIME__设置产品的代码固件版本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。