企业级操作之STM32项目版本管理方法

本文介绍了在MCU开发中,如何通过Keil的内置宏__DATE__和__TIME__精确记录固件的编译时间,以及注意事项,包括默认编译逻辑和优化代码风格的方法。
摘要由CSDN通过智能技术生成

4d5d5fab3d05b8f43d8678143371d213.png

在MCU开发过程中,有时候需要软件的迭代,比如从V1.9升级到V1.10,或者从V23.09.23升级到V23.09.24,我们常常通过手动改动字符串或者数组来实现这个功能,从现在开始,我们会使用Keil的内置宏__DATE__和__TIME__,通过这2个宏,每次程序编译完成,烧录到MCU之后,MCU都能够准确打印出该固件的编译时间。

printf("(版本/编译时间: %s,%s)\r\n", __DATE__,__TIME__);

1b4b830426ef39c711378c8e6434f629.png

上图中编译时间是18:21:14,但是串口打印的时间却是18:21:23。但是我们发现电脑的时间何编译的时间还是有一点点区别的,原因是,编译之后,代码还要下载,还要运行,这个也是需要时间的,所以产生了误差。

但如果你发现打印的时间不准确,是较早前的时间,比如很明显相差1分钟以上,或者你认为这个时间不是真正编译的时间,那么需要注意:

按照Keil的编译逻辑,默认是不编译未修改过的源文件,只链接。说详细一点点就是:例如这两条打印语句的位置,是在int main(void)函数中,且main函数在main.c文件中,假如本次修改代码,未修改main.c文件,那么Keil是不会重新编译main.c文件的,也就不会将编译时的__DATE__和__TIME__编译进去。

也可以通过以下设置,使得main.c文件,无论是否修改,每次编译时都会重新编译它:

8ca0e6f97605baffc7c957a3e6140b6d.png

ac9e78d1bf1fe84a0579d8606f2806d9.png

当然每次都编译main.c,并非是最好的代码风格,可以把版本号打印提炼成一个函数,并单独使用一个.c文件进行实现,并将这个.c文件按照以上方法设置。

==========

往期回顾:

单片机程序无法下载?

STM32外部中断大问题

单片机卡死的八大原因和解决方法

MATLAB如何实现PID?

==========

95bed81fb96968200183888ba85a0405.png

188bec9e3c1824fd9f0af134d18189b0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值