在MCU開發過程中,有時候需要軟件的迭代,比如從V1.9升級到V1.10,或者從V23.09.23升級到V23.09.24,我們常常通過手動改動字符串或者數組來實現這個功能,從現在開始,我們會使用Keil的內置宏__DATE__和__TIME__,通過這2個宏,每次程序編譯完成,燒錄到MCU之后,MCU都能夠準確打印出該固件的編譯時間。
printf("(版本/編譯時間: %s,%s)\r\n", __DATE__,__TIME__);
上圖中編譯時間是18:21:14,但是串口打印的時間卻是18:21:23。但是我們發現電腦的時間何編譯的時間還是有一點點區別的,原因是,編譯之后,代碼還要下載,還要運行,這個也是需要時間的,所以產生了誤差。但如果你發現打印的時間不準確,是較早前的時間,比如很明顯相差1分鐘以上,或者你認為這個時間不是真正編譯的時間,那么需要注意:按照Keil的編譯邏輯,默認是不編譯未修改過的源文件,只鏈接。說詳細一點點就是:例如這兩條打印語句的位置,是在int main(void)函數中,且main函數在main.c文件中,假如本次修改代碼,未修改main.c文件,那么Keil是不會重新編譯main.c文件的,也就不會將編譯時的__DATE__和__TIME__編譯進去。也可以通過以下設置,使得main.c文件,無論是否修改,每次編譯時都會重新編譯它:
當然每次都編譯main.c,并非是最好的代碼風格,可以把版本號打印提煉成一個函數,并單獨使用一個.c文件進行實現,并將這個.c文件按照以上方法設置。
-
mcu
+關注
關注
146文章
17893瀏覽量
361809 -
STM32
+關注
關注
2291文章
11019瀏覽量
362999 -
keil
+關注
關注
69文章
1223瀏覽量
169186
發布評論請先 登錄
慧榮科技企業級主控芯片SM8366為企業級SSD存儲芯片注入新動力

構建企業級文件管理系統,輕松搭建 Seafile 社區版云存儲解決方案

聲明式資源管理方法
STM32項目實戰:基于STM32U5的智能大棚溫控系統(LVGL),附項目教程/源碼

STM32項目實戰:基于STM32U5的火災報警系統(LVGL),附項目教程/源碼

STM32項目實戰:基于STM32U5的智能燈光控制系統(LVGL),附項目教程/源碼

emc企業級存儲系統的特點
淺談基于物聯技術的企業能效管理方法研究

評論