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

構(gòu)建企業(yè)級文件管理系統(tǒng),輕松搭建 Seafile 社區(qū)版云存儲解決方案

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

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

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

emc企業(yè)級存儲系統(tǒng)的特點
STM32項目實戰(zhàn):基于STM32F4的智能燈光控制系統(tǒng)(LVGL),附項目教程/源碼

淺談基于物聯(lián)技術(shù)的企業(yè)能效管理方法研究

評論