由于想要在单片机产品中能显示固件的版本号和编译时间,以前一直是手工添加的,很不方便,如果每次编译时能自动增加版本号就方便多了,为此写了个小程序,可以很方使的嵌入到IDE中实现此功能(在MDK和STVD+COSMIC环境下测试过,理论上对大部份IDE都有效),现上传给大家,欢迎拍砖。
给单片机C程序自动产生版本号的程序
ourdev_712769GBDVRJ.rar(文件大小:120K) (原文件名:Version.rar)
工作原理:很简单地说,运行Version.exe生成一个"version.h"头文件,文件的内容如下:
#ifndef VERSION_H_INCLUDED
#define VERSION_H_INCLUDED
#define VERNUM "1.0.0"
#define BUILDNUM "0"
#define BUILDTIME "2011-12-13 09:50:58"
#endif
将version.h文件包含到你的工程代码中,在需要的地方直接调用VERNUM,BUILDNUM,BUILDTIME即可,将Version.exe加入到IDE工程选项中编译前运行的程序栏,这样每次执行编译时将自动调用Version.exe,自动将BUILDNUM的值递增,同时将当前时间替换掉BUILDTIME的内容。
使用方法:
一、在MDK环境下:
1.解压缩后将Version.exe复制到MDK工程的源文件目录下,比如:../Source/Version下,记下此路径。
2.打开MDK项目,在User标签下的“Run User Program Before Build/Rebuild"栏选择Version.exe所在的路径"..SourceVersionVersion.exe",Run #1前的框打上√。
3.在C/C++标签下的Include Paths中加入Version.exe所在的目录"../Source/Version"
4.在C源码中#include "version.h",在需要显示版本号的地方调用BUILDNUM等需要的值,比如printf("Version %s Build %s @ %s",VERNUM,BUILDNUM,BUILDTIME);即可。
项目设置
(原文件名:1.jpg)
二、在STVD环境下:
1.解压缩后将Version.exe复制到STVD工程的源文件目录下,比如:../Source/Version下,记下此路径。
2.双击运行一下Version.exe,生成version.h,将version.h加入到工程中。
3.在Project Settings中Pre-Link标签下的Commands文本框中将Version.exe的路径加上去,如图:
STVD设置
(原文件名:2.jpg)
4.在C源码中#include "version.h",在需要显示版本号的地方调用BUILDNUM等需要的值,比如printf("Version %s Build %s @ %s",VERNUM,BUILDNUM,BUILDTIME);即可。
另:Version.exe有一个参数-v可指定VERNUM的值,如果不指定则默认为1.0.0,并且VERNUM的值不会自动改变,变的只是BUILDNUM和BUILDTIME。-v参数的使用:
../Version.exe -v xxxxxxxx
其中xxxxxxxx为任意字符串,没有限定长度和格式,可以是2.0.1,也可以是abcdefg等等。
其实有个更简单的办法
只需定义
const unsigned char CompilerTime[] = {__DATE__ __TIME__};
生成的字符串就是你的编译时间,当然需要将包含这个定义的文件设置为始终编译.
(原文件名:1.JPG)
(原文件名:2.JPG)
一周热门 更多>