@echo off
setlocal
:: Be sure to install the ST-LINK drivers and Utility application for Windows
:: Location of ST-LINK_CLI.exe, which is part of the Utility application
:: set STLINKUTIL="C:Program Files (x86)STMicroelectronicsSTM32 ST-LINK UtilityST-LINK UtilityST-LINK_CLI.exe"
set STLINKUTIL="C:Program Files (x86)STMicroelectronicsSTM32 ST-LINK UtilityST-LINK UtilityST-LINK_CLI.exe"//这个位置需要修改
:: Please update the bootloader and firmware image names accordingly
:: If dealing with one product, it is fine to update for just one product (don't need them all)
:: Firmware per product
:: Projector
set PROJECTOR_BL=pico_bootloader.bin //文件名需要修改如果有必要
set PROJECTOR_FW=pico_controller0103.bin
:: Update bootloader / firmware address offsets accordingly:
set BL_ADDRESS_OFFSET=0x08000000//文件的烧录地址需要根据,具体需求进行修改
set FW_ADDRESS_OFFSET=0x08004000
:: Usage - be sure to execute valence_flash.bat with respective bootloader/firmware images from the same directory
:: To flash projector: > valence_flash.bat projector
set data0=0xcd //这是跳转的指令
set data1=0xab
set BL=%PROJECTOR_BL%
set FW=%PROJECTOR_FW%
::if [%1] == [] goto errorusage
::if %1 == projector (
:: set BL=%PROJECTOR_BL%
:: set FW=%PROJECTOR_FW%
::) else (
:: goto Errorusage
::)
:getoptend
:: check JTAG adapter found
echo checking JTAG ...
call :CheckSTLink
if %ERRORLEVEL% neq 0 (
exit /B %ERRORLEVEL%
)
:: attempt to connect to device
echo connect to device ...
call :Connect
if %ERRORLEVEL% neq 0 (
exit /B %ERRORLEVEL%
)
:: erase flash
echo erase flash ...
call :EraseFlash
if %ERRORLEVEL% neq 0 (
exit /B %ERRORLEVEL%
)
:: flash bootloader
set FILE=%BL%
set ADDRESS=%BL_ADDRESS_OFFSET%
echo flash bootloader %FILE% AT %ADDRESS% ...
call :Flash
if %ERRORLEVEL% neq 0 (
exit /B %ERRORLEVEL%
)
:: flash firmware
set FILE=%FW%
set ADDRESS=%FW_ADDRESS_OFFSET%
echo flash bootloader %FILE% AT %ADDRESS% ...
call :Flash
if %ERRORLEVEL% neq 0 (
exit /B %ERRORLEVEL%
)
::DFU_Mode
%STLINKUTIL% -OB Data0=%data0% Data1=%data1% 1>NUL 2>&1
echo DFU_Mode Data0 Data1 complete
:: reset device
call :SysReset
echo start Reset
echo %ERRORLEVEL%
exit /B %ERRORLEVEL%
:errorusage
echo USAGE ERROR:
echo valence_flash.bat espresso
echo valence_flash.bat concert
exit /B 1
:: function CheckSTLink: check ST-LINK adpater exists
:: Input:
:: Output: ERRORLEVEL
:CheckSTLink
%STLINKUTIL% -List
exit /B %ERRORLEVEL%
:: function Connect: connect to the device
:: Input:
:: Output: ERRORLEVEL
:Connect
%STLINKUTIL% -c SWD UR LPM RM=Hrst
exit /B %ERRORLEVEL%
:: function SysReset: cause a system reset
:: Input:
:: Output: ERRORLEVEL
:SysReset
%STLINKUTIL% -Rst
exit /B %ERRORLEVEL%
:: function HardReset: cause a hardware reset
:: Input:
:: Output: ERRORLEVEL
:HardReset
%STLINKUTIL% -HardRst
exit /B %ERRORLEVEL%
:: function EraseFlash: full chip erase
:: Input:
:: Output: ERRORLEVEL
:EraseFlash
%STLINKUTIL% -ME
exit /B %ERRORLEVEL%
:: function Flash: Load firmware of FILE into ADDRESS and verify
:: Input: FILE - filepath, ADDRESS - location in flash
:: Output: ERRORLEVEL
:Flash
%STLINKUTIL% -V -P %FILE% %ADDRESS%
exit /B %ERRORLEVEL%
烧录的过程是按住shift按键,打开命令窗口。把bat文件拓进去