1.使用cubemx创建keil工程

 

 

 


创建后界面如上图所示

2.生成hex文件

 

点击Options for Targe->Output,可得知输出文件为temp.hex
路径为MDK-ARM\temp\temp.hex

3.keil内创建后执行命令

 

跳到User界面,此处有6个选项,分别为:
编译前运行选项(2个)
创建前运行选项(2个)
创建后运行选项(2个)
在此处我们选择创建后运行中的其中一个
勾选After Build/Rebuild内的Run #1(如果Run #1被占用,可以使用Run #2)
里面放置一个bat文件名,文件名随意,我们待会儿编写这个文件,图中示例为build_date_time.bat
在后边加入一个空格,并加上一个参数 @L
@L为keil内变量,代表的是当前target,在本例子中为temp
@P为keil内变量,代表的是当前工程名,本例子中为temp,虽然未使用

现在还没有bat文件,所以编译未通过

4.编写bat文件(20201210

bat文件目录为与temp.uvprojx工程文件放在同一目录下,即MDK-ARM目录
并在内写入下面的命令

echo off

::echo %date%_%time%

set date_num=%date:~0,10%

set date_num=%date_num:-=%

set date_num=%date_num:/=%

set time_num=%time:~0,8%

set time_num=%time_num::=%

if "%time_num:~0,1%"==" " set "time_num=0%time_num:~1%"

echo on

cp .\%1\%1.hex .\%1\%1_%date_num%_%time_num%.hex

cp为复制文件命令

.\ 为当前目录,当前目录为.uvprojx工程文件的目录,即在MDK-ARM
目录下

%1代表输入的第一个参数,在此例子中是 @L@L是keil内变量,代表的是当前target,在本例子中为targe名temp

中间命令请参考文末第3个链接

在此例子中输出文件为MDK-ARM\temp\temp_20201210_193418.hex

5.编译并创建你的keil工程

编译并创建keil工程即可得到带有时间戳的hex文件了
文件不会覆盖,如果你编译次数过多,文件数目会越来越多,请及时清理

6.参考链接

bat 传入参数:
https://www.cnblogs.com/lihao007/p/10745872.html

bat 批处理-取年、月、日、时、分、秒、毫秒:https://blog.csdn.net/liruxing1715/article/details/18215177

%date~0,4%和 %time~0,2%等用法详解:
https://blog.csdn.net/icanlove/article/details/42640329

7.修订记录

20201020

  • 使用参考链接3修复在凌晨0点到9点时截取字符出现空格的bug

20201209

  • 编写文档
  • 完全放弃csdn,转向博客园

 

Posted on 2021-12-03 22:56  污钞vtor  阅读(797)  评论(0编辑  收藏  举报