使用SWD通过J-Flash烧写STM32时,会出现各式各样的错误;
总结下原因:
1、复位脚被拉低了,这次我遇到的就是复位引脚的电容焊反了(钽电容),可以正常连接,但是烧写程序时会出现如下报错
–>
- Erasing affected sectors …
- ERROR: RAM check failed @ address 0x20000000.
- ERROR: Write: 0x03020100 07060504
- ERROR: Read: 0x00000000 00000000
- ERROR: (0 bytes of RAM have been checked successfully)
- ERROR: Failed to erase sectors
- De-initializing CPU core (Exit sequence) …
- ERROR: Failed to auto program target
2、SWDIO和SWCLK线序错误、虚焊 、短接,错误表现为连接不成功;
3、另外会出现STM32: Connecting to CPU via connect under reset failed.
此时可以检查下VDDA和VSSA电压是否均正常,如果VDDA低于VDD太多会导致无法正常烧写芯片;
有的J-link ,1脚VCC驱动能力弱,连接目标板后VCC电压降低导致连接失败,此时应更换2脚VCC。
4、如果出现读取的id和工程设置的芯片id不符合的情况,多半是jlink本身有问题,固件与驱动不符,导致的读取数据错误;可以尝试更换低版本的驱动,有时候最新的不一定是最合适的。
5、如果在程序中禁用了SWD调试接口,即将SWD所用的IO口当作普通的IO口使用时,下载完第一次程序后,如果从flash启动(BOOT0==0)则无法继续使用SWD接口重新下载程序或者调试;
此时可能会出现如下提示:
- Connecting …
- Connecting via USB to J-Link device 0
- Target interface speed: 200 kHz (Auto)
- VTarget = 3.345V
- ERROR: Failed to connect.
Could not establish a connection to target.
解决办法是将BOOT0拉高,让程序从ram启动,则可以使用SWD重新下载程序;
关键字:J-LINKV9SWD模式 调试STM32
引用地址:
J-LINKV9SWD模式调试STM32出现问题汇总
推荐阅读最新更新时间:2024-03-16 16:14
STM32进入HardFault_Handler的调试方法
在编写STM32程序代码时由于自己的粗心会发现有时候程序跑着跑着就进入了 HardFault_Handler中断,按照经验来说进入HardFault_Handler故障的原因主要有两个方面: 1:内存溢出或则访问越界。 2:堆栈溢出。 发生异常后我们可以首先查看LR寄存器的值,确认当前使用的堆栈是MSP还是PSP,然后找到相对应的堆栈指针,并在内存中查看相对应堆栈的内容,内核将R0~R3,R12,LR,PC,XPRS寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。那么Cortex-M3 内核HardFault错误调试定位方法有: 方法1 如何精确定位出问题代码的所在位置: 以访问越界为例:(对STM32F1
[单片机]
记ST_LINK与STM32的连接调试
由于先前的32板子不能但不调试,就是不支持JTAG/SWD,平时测试程序只能是编译没问题了就直接下载到板子上,如果想看运行过程中的变量的值只能是靠自己的推测,或者一些自己想出来的土办法(比如用串口打印或者led显示)。 于是在某宝30多块入手mini32板子加st-link调试器。如图 客服不是很专业,给了一些资料就完事了,再问一些问题,一直支支支吾吾的答不上来。只能是自己看资料解决了。 下面将连接流程介绍下: 首先保证连线的准确,这是重中之重,一定要检查清楚。 其次安装客服给的ST-link v2驱动程序,安装过程中的选项默认就好包括路径。 安装完成后插上STLINK打开设备管理器就可以看到STLINK
[单片机]
STM32 CAN总线调试经验
前言 STM32 CAN代码网上很多,但大都是讲如何配置的,对于一些原理以及注意事项没有很清楚的说明。在实际调试过程中,两个设备间的通信只要设备CAN的配置一样基本就可以调通,但在增加设备的过程中,很容易出现多设备无法通信的问题,这里主要就这一问题进行说明。 硬件 STM32F042G4 + MAX3051 测试过程 测试板回来后,两个设备间的通信轻松搞定,但在增加设备的过程中,增加的设备总是不能正常通信。详细比对了一下配置,也没有任何问题。后来,仔细研读MAX3051的芯片手册,得到以下几个重要信息: MAX3051有四种工作模式 高速模式:数据传输速率可达1Mbps,但抗干扰能力弱,需要双绞线 斜率控制:可
[单片机]
STM32学习-keil 调试问题1:单步可以执行 全速运行不可以
描述:keil5 +stm32 使用IIC读数 在仿真时点击工具栏里的view选择下面的periodict window update
[单片机]
KEIL 配置STM32 SRAM启动,调试
听说STM32的FLASH只能擦写10000次,一个开发板就算1天擦写10次 10000/10/365=2.73972602739726,那岂不是一个开发板用两年之后芯片就废了,好方啊,有没有(其实如果你能做到10000次擦写,估计这个开发板你已经玩透了,把芯片刷过flash寿命,菜鸟也变成老鸟了)。如果你实在担心擦写10000次,那就可以试试在RAM中调试代码。 一、STM32的自举配置: 主flash:即从内部flash启动,keil下载程序默认就是下载到这里的,10000次擦写指的也是这里,发布版本的程序也是这种启动模式 SRAM:即从RAM中启动程序,调试的时候可以从RAM中启动 系统存储器:一般用于ISP(in sy
[单片机]
STM32之调试支持(DBG)
STM32F10xxx使用Cortex™-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。 SWJ调试端口(serial wire and JTAG) STM32F10xxx内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚)。 ● JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。 ● 串行调试接口(SW-DP)
[单片机]
STM32中关于串口中断的调试
说来惭愧,前日在调试stm32f10系列的单片机的时候,想做一个关于串口发送的状态机,每隔100毫秒发送一次命令。没有用DMA,就是想单纯的使用发送中断来数据,结果在调试的时候一直死在了串口中断那里,然后查看sr寄存器,发现是TC位只要打开发送中断就会被置位,看到这里我嘴角微微上扬,轻蔑一笑,(ˉ▽ ̄~) 切~~清掉标志位就好啦。 事实证明,我是愚蠢的,我在中断那里TC位清零后,再次仿真,呃,怎么还不出去?_? 好吧,我在使能发送中断之前清一下好吧。~~(╯﹏╰)b,还不走…… 三板斧耍完了,(~ ̄▽ ̄)~,度娘,你在哪? 百度关键字“STM32发送中断”,哈,一堆的人有和我一样的问题。问题总该迎刃而解了吧。 度娘出来的答案好多,
[单片机]
stm32 keil mdk用jlink在线仿真调试键盘按键——图文详解
原来按键用JLINK是能在线调试的!我原来还以为按键这种东西只能用串口发送键值来调试呢!这太好啦,不知道怎么做的新手们赶紧看下去吧! 注意:在调试需要某个按键被按下才能执行的语句时,只需在相应语句前设置断点,然后全速运行,这时再按下相应按键,则程序便会执行到断点语句前(若不按下按键,程序是不会执行到断点前的)。若需要多次观察断点处变量的情况,则重复上述动作即可(全速运行,按键;全速运行,按键;······)。
[单片机]