统一固件版本号:以 jb_product.h 为唯一真源

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-19 10:43:49 +08:00
co-authored by Cursor
parent 331864dc64
commit 199be89e41
6 changed files with 37 additions and 39 deletions
+4 -6
View File
@@ -3,12 +3,10 @@
#include "main.h"
// DEMO是项目编号,1.0.0是软件大版本,009是软件小版本
#define __VERSION__ "DEMO_1.0.0"
#define __DEVELOPER__ "WuChuYuan"
#define __EMAIL__ "1917507415@qq.com"
/* 项目代号(固件文件名用);软件版本见 jb_product.h 的 JB_MCU_SW_VERSION_* */
#define __PROJECT_CODE__ "DEMO"
#define __DEVELOPER__ "WuChuYuan"
#define __EMAIL__ "1917507415@qq.com"
typedef enum
{
+18 -10
View File
@@ -16,11 +16,10 @@ set HEX_PATH=%cd%\MDK-ARM\Objects
@REM Custom output directory
set OUTPUT_PATH=%cd%\Output
@REM Software version header
set VERSION_FILE_PATH=%cd%\Inc\application.h
@REM Software version string format
set SOFTWARE_VERSION="#define __VERSION__"
@REM Project code: application.h __PROJECT_CODE__
@REM Soft version: jb_product.h JB_MCU_SW_VERSION_* (single source of truth)
set APP_H=%cd%\Inc\application.h
set PRODUCT_H=%cd%\Protocol\jb_product.h
@REM Optional arg1: Keil root ($K) passed by AfterMake
set "KEIL_ROOT=%~1"
@@ -31,14 +30,23 @@ set "KEIL_ROOT=%~1"
for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyMMdd_HHmmss"') do set CURRENT_DATE=%%i
@REM ------------------------------------------------------------
@REM Read software version from application.h
@REM Compose name: PROJECT_MAJOR.MINOR.PATCH
@REM ------------------------------------------------------------
set SW_Ver=unknown
for /f "tokens=3 delims= " %%i in ('findstr /C:%SOFTWARE_VERSION% "%VERSION_FILE_PATH%"') do set SW_Ver=%%i
if defined SW_Ver set SW_Ver=%SW_Ver:"=%
set PROJECT_CODE=DEMO
set VER_MAJOR=0
set VER_MINOR=0
set VER_PATCH=0
@REM Custom output file name
for /f "tokens=3 delims= " %%i in ('findstr /C:"#define __PROJECT_CODE__" "%APP_H%"') do set PROJECT_CODE=%%i
if defined PROJECT_CODE set PROJECT_CODE=%PROJECT_CODE:"=%
for /f "tokens=3 delims= " %%i in ('findstr /C:"#define JB_MCU_SW_VERSION_MAJOR" "%PRODUCT_H%"') do set VER_MAJOR=%%i
for /f "tokens=3 delims= " %%i in ('findstr /C:"#define JB_MCU_SW_VERSION_MINOR" "%PRODUCT_H%"') do set VER_MINOR=%%i
for /f "tokens=3 delims= " %%i in ('findstr /C:"#define JB_MCU_SW_VERSION_PATCH" "%PRODUCT_H%"') do set VER_PATCH=%%i
set SW_Ver=%PROJECT_CODE%_%VER_MAJOR%.%VER_MINOR%.%VER_PATCH%
set output_file_name=%SW_Ver%_%CURRENT_DATE%
echo Firmware version: %SW_Ver%
if not exist "%OUTPUT_PATH%" mkdir "%OUTPUT_PATH%"
+1 -1
View File
@@ -23,7 +23,7 @@
/* MCU software version: Vmajor.minor.patch */
#define JB_MCU_SW_VERSION_MAJOR 1
#define JB_MCU_SW_VERSION_MINOR 0
#define JB_MCU_SW_VERSION_PATCH 0
#define JB_MCU_SW_VERSION_PATCH 1
/* MCU hardware version: Vmajor.minor.patch */
#define JB_MCU_HW_VERSION_MAJOR 1
+9 -1
View File
@@ -14,7 +14,15 @@ void version_printf(void)
{
appPrintf(LOG_NOTIC, "Developer:%s\r\n", __DEVELOPER__);
appPrintf(LOG_NOTIC, "Email:%s\r\n", __EMAIL__);
appPrintf(LOG_NOTIC, "Version:%s\r\n", __VERSION__);
appPrintf(LOG_NOTIC, "Project:%s\r\n", __PROJECT_CODE__);
appPrintf(LOG_NOTIC, "SW Version:%u.%u.%u\r\n",
(unsigned)JB_MCU_SW_VERSION_MAJOR,
(unsigned)JB_MCU_SW_VERSION_MINOR,
(unsigned)JB_MCU_SW_VERSION_PATCH);
appPrintf(LOG_NOTIC, "HW Version:%u.%u.%u\r\n",
(unsigned)JB_MCU_HW_VERSION_MAJOR,
(unsigned)JB_MCU_HW_VERSION_MINOR,
(unsigned)JB_MCU_HW_VERSION_PATCH);
appPrintf(LOG_NOTIC, "Compiler Date:%s\r\n", __DATE__);
appPrintf(LOG_NOTIC, "Compiler Time:%s\r\n", __TIME__);
}