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、编译时获得系统的日期和时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昨晚上跟读者闲聊

昨天发了一篇华为小米的求职文章,今天一个知识星球的朋友找我聊天,也是关于择业的问题。本来是聊找工作的,然后聊着聊着就聊到了生活的一些事情。我平时比较关注微信信息,有重要能回复就会回复,但是,也不喜…

上次作业的升级版

好好好 211606375 牛振乾 211606351 曾茜 一、预估与实际 PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)Planning计划• Estimate• 估计这个任务需要多少时间4040Development开发9001000• Analysis• 需…

学习vim的正确姿势!

有很多种方法可以去学习Vim:vimtutor就是一个很棒的教程,另外还有help拥有您所想的所有参考信息。链接:https://github.com/wsdjeg/Learn-Vim_zh_cn但是在日常使用中,对于绝大部分用户的需求而言,vimtutor讲得太浅不能满足需要&am…

什么是自由软件?

来源 | www.gnu.org编排 | strongerHuang可能你认为免费软件,就是自由软件,那么你肯定错了,下面来听听专家怎么描述自由软件的。strongerHuang1自由软件定义开源(Open source)是另外一回事:它有基于不同价值…

输入框设置只能输入数字

HTML5 可以用&#xff1a;<input type"number">html4 的话只能用js实现了&#xff1a;<input type"text" οnkeyup"this.valuethis.value.replace(/\D/g, )">上面的只能输入整数。如果需要小数正则需要改成&#xff1a;/[^\d\.]/g再…

毕业设计| STM32F103全彩FFT音乐频谱+LED年历闹钟显示

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;今天在后台看到有人想找毕业设计的点子。然后我今天刚好看到一个不错的点子&#xff0c;给大家分享看今天分享的毕设是来自点-凡自制的FTF音乐频谱制作&#xff0c;先来看展示效果&#xff1a;——视频出处&#xff1a;B站点…

VScode 开发stm32无法识别uint32_t,uint16_t,uint8_t问题

1、添加头文件#include “stdint.h”。 2、在c_cpp_properties.json文件中添加__CC_ARM即可。如下图&#xff1a;

动画讲解C语言的指针,从未如此简单

推荐阅读&#xff1a;专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈关注公众号&#xff0c;后台回复「1024」获取学习资料网盘链接。欢迎点赞&#xff0c;关注&#xff0c;转发&#xff0c;在看&#xff0c;您的每一次鼓励&#xff0c;我都将铭记于心~

SQL Activity Monitor

从实质上说, Actvity Monitor不过是SQL Server中系统View sys.sysprocesses的一种展现. SP_Who2应该也是从这里查询到的数据。下面是view sysprocesses的SELECT内容&#xff1a; SELECT spid, kpid, blocked, waittype, waittime, lastwaittype, waitresource, dbid, …

毕业这几年的嵌入式开发之路

大家好&#xff0c;我是写代码的篮球球痴今天分享一篇文章&#xff0c;这篇文章的主人公总结了他这些年来的嵌入式之路&#xff0c;希望对大家的职业规划有所帮助。在毕业即失业的年代&#xff0c;来看一位朋友是如何玩转嵌入式开发的&#xff0c;献给迷惘的你。出师不利本科毕…

修改Win10 alt+F4默认选项为关机

1、winr打开路径计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced&#xff0c;当前目录下新建DWORD(32位)文件&#xff0c;命名为“Start_PowerButtonAction”。设置值为2&#xff08;16进制&#xff09;。 2、重启电脑。altF4默认为“关…

p1968

我觉得这个评测机和我有仇,写了readgetchar都会超时这么多,最后好像是ios::sync_with_stdio(false);惹的祸... 昨天想找一些水题来写,就看到了这个模拟"水题",想了一下午都不知道怎么搞. 已知一些牛的颜色和位置,求连续相同颜色或连续两种颜色数量相同的区间右端点位…

免费!200块全志XR806开源鸿蒙开发板试用

一板难求的当下&#xff0c;如果上天突然降临一次开发板免费用的活动&#xff0c;我只想说三个字&#xff1a;手慢无&#xff01;为了让开发者小哥哥小姐姐们体验搭载安谋科技STAR-MC1处理器&#xff0c;面向IoT领域的全志XR806开发板&#xff0c;极术社区特推出2022年新年活动…

你们还留恋windows什么呢?

为什么80%的码农都做不了架构师&#xff1f;>>> 我最近看到一个报道&#xff0c;节录如下&#xff1a; --------------------------------------------- ARM全球总裁Tudor Brown 5月3日表示&#xff0c;预期2015年全球移动PC总量就会达到7.5亿台以上&#xff0c; …

MDK调试:设置断点处,代码运行的次数

https://www.cnblogs.com/ramlife/articles/14024516.html

卓老师的这些动图对电子理解真的很有用

01 串行通信在头条电子森林博客中看到一些显示电子系统中信号波形的动图&#xff0c;有助于帮助我们理解传输的机理。特转载如下。1、SPI传输▲ 图1 SPI 数据传输▲ 图1.2 SPI数据传输&#xff08;2&#xff09;▲ 图1.3 SPI时序信号2、I2C传输▲ 图1.2.1 I2C总线以及寻址方…

国内网络安全公司、社区简介

国内网络安全公司简介<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1&#xff0e;http://www.symantec.com/region/cn赛门铁克中国一家从事网络安全服务的公司&#xff0c;挺供网络安全产品下载、整体网络安全解决方案。2&…

一句话输出没有结束符的字符串

编程时往往存在这种情况&#xff1a; 函数接口传给你一个没有“\0”结尾的字符串str和他的长度str_len&#xff0c;调试的时候你需要将其打印出来。 一般人都会这么做&#xff1a; void print_str(const char* str, unsigned int str_len) { unsigned int i0; for (; i < …

动态规划:树形DP-景点中心(树的带权重心)

话说宁波市的中小学生在镇海中学参加计算机程序设计比赛&#xff0c;比赛之余&#xff0c;他们在镇海中学的各个景点参观。镇海中学共有n个景点&#xff0c;每个景点均有若干学生正在参 观。这n个景点以自然数1至n编号&#xff0c;每两个景点的编号均不同。每两个景点之间有且只…

bootscripttable前端排序无效_前端你应该知道的八条bug分享给你们

1: 为什么列表的数据不要让后端同学返回对象&#xff0c; 而应该返回数组&#xff1f;返回对象我们前端直接遍历有没问题啊&#xff0c; 可以正常显示&#xff0c;那是因为你没有遇到下面描述的情况bug现象1:「我明明把3这个key定义在了第二个位置&#xff0c; 但是每次打印出来…