本文主要是介绍STM32CubeProgrammer + STLINK V2 烧录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
发现使用STM32C8T6 + STLINK V2 + STM32CubeProgrammer无法成功烧录,总是报错 file error。至于原因,姑且参考:STLINK V2 无法用STM32CubeProgrammer下载程序-CSDN博客
解决方案:
烧录工具由STLINK换成OpenOCD。
stm32f1x.cfg
# SPDX-License-Identifier: GPL-2.0-or-later# script for stm32f1x family#
# stm32 devices support both JTAG and SWD transports.
#
source [find target/swj-dp.tcl]
source [find mem_helper.tcl]if { [info exists CHIPNAME] } {set _CHIPNAME $CHIPNAME
} else {set _CHIPNAME stm32f1x
}set _ENDIAN little# Work-area is a space in RAM used for flash programming
# By default use 4kB (as found on some STM32F100s)
if { [info exists WORKAREASIZE] } {set _WORKAREASIZE $WORKAREASIZE
} else {set _WORKAREASIZE 0x1000
}# Allow overriding the Flash bank size
if { [info exists FLASH_SIZE] } {set _FLASH_SIZE $FLASH_SIZE
} else {# autodetect sizeset _FLASH_SIZE 0
}#jtag scan chain
if { [info exists CPUTAPID] } {set _CPUTAPID $CPUTAPID
} else {if { [using_jtag] } {# See STM Document RM0008 Section 26.6.3set _CPUTAPID 0x3ba00477} {# this is the SW-DP tap id not the jtag tap idset _CPUTAPID 0x1ba01477}
}swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpuif {[using_jtag]} {jtag newtap $_CHIPNAME bs -irlen 5
}set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap $_CHIPNAME.dap$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0# flash size will be probed
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME stm32f1x 0x08000000 $_FLASH_SIZE 0 0 $_TARGETNAME# JTAG speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so use F_JTAG = 1MHz
adapter speed 1000adapter srst delay 100
if {[using_jtag]} {jtag_ntrst_delay 100
}reset_config srst_nogateif {![using_hla]} {# if srst is not fitted use SYSRESETREQ to# perform a soft resetcortex_m reset_config sysresetreq
}$_TARGETNAME configure -event examine-end {# DBGMCU_CR |= DBG_WWDG_STOP | DBG_IWDG_STOP |# DBG_STANDBY | DBG_STOP | DBG_SLEEPmmw 0xE0042004 0x00000307 0
}tpiu create $_CHIPNAME.tpiu -dap $_CHIPNAME.dap -ap-num 0 -baseaddr 0xE0040000lappend _telnet_autocomplete_skip _proc_pre_enable_$_CHIPNAME.tpiu
proc _proc_pre_enable_$_CHIPNAME.tpiu {_targetname} {targets $_targetname# Set TRACE_IOEN; TRACE_MODE is set to async; when using sync# change this value accordingly to configure trace pins# assignmentmmw 0xE0042004 0x00000020 0
}$_CHIPNAME.tpiu configure -event pre-enable "_proc_pre_enable_$_CHIPNAME.tpiu $_TARGETNAME"
StLink_v2.cfg
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
adapter speed 10000
stlink.cfg
# SPDX-License-Identifier: GPL-2.0-or-later#
# STMicroelectronics ST-LINK/V1, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 in-circuit
# debugger/programmer
#adapter driver hla
hla_layout stlink
hla_device_desc "ST-LINK"
hla_vid_pid 0x0483 0x3744 0x0483 0x3748 0x0483 0x374b 0x0483 0x374d 0x0483 0x374e 0x0483 0x374f 0x0483 0x3752 0x0483 0x3753 0x0483 0x3754 0x0483 0x3755 0x0483 0x3757# Optionally specify the serial number of ST-LINK/V2 usb device. ST-LINK/V2
# devices seem to have serial numbers with unreadable characters. ST-LINK/V2
# firmware version >= V2.J21.S4 recommended to avoid issues with adapter serial
# number reset issues.
# eg.
# adapter serial "\xaa\xbc\x6e\x06\x50\x75\xff\x55\x17\x42\x19\x3f"
参考:
烧录器配置 | Embedded IDE For VSCode
Vscode EIDE+Cortex Debug搭建STM32开发仿真环境_cortex-debug-CSDN博客
Clion搭建stm32开发环境(STM32F103C8T6),有这一篇就够(只愿意博君一笑!!!)_clion写单片机-CSDN博客
这篇关于STM32CubeProgrammer + STLINK V2 烧录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!