STM32硬件调试详解
STM32的基本系统主要涉及下面几个部分:
一、电源
1)、无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空;
2)、对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU; 3)、用万用表测试供电电压是否正确。调试时最好用数字电源供电,以便过压或过流烧坏板子。电压最好一步一步从进线端测试到芯片供电端。
二、复位、启动选择
1)、Boot引脚与JTAG无关。其仅是用于MCU启动后,判断执行代码的起始地址;
2)、在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源,切不可悬空; STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存 = 芯片内置的Flash。
2)SRAM = 芯片内置的RAM区,就是内存啦。
3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。
在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:
BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。
BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。
用JTAG口或SWD模式烧写 选择从用户闪存启动。
用串口ISP模式烧写程序时时选择从系统存储启动

三、烧写接口
如果要减小插座的数量,就用SWD模式的仿真,在这个模式下,如果用JLINK只要四根线就可以了,这四根线分别是:3.3V、GND、SWDIO、SWCLK
其中
STM32的JTMS/SWDIO接JTAG口的TMS;
STM32的JTCK/SWCLK接JTAG口的TCK。
如果要用ULINK2,则再加多一条“NRST”,即5条。
这个接口你可自行定义,在使用时用杜邦线跳接或做块转换接口板联接仿真器与目标板即可。
X下面是在MDK里设置的图片:

在烧写时出现了IDCODE如图有序列号,证明烧写接口是好的!也就是硬件调试通了。如没有也许焊接不过关,从新加固焊接芯片。
四、调试烧录失败的常见原因
1、目标芯片没有正确连接,不能正常工作:
解决方法:确保目标板的最小系统正确连接,芯片能正常工作:VDD、VDDA及VSS 、VDDS已全部正确连接,复位电路能够可靠复位,各复位源不互相影响。
2、芯片内原先烧录的代码影响了新的调试操作:
芯片内原先烧录的代码出错,芯片上电运行,进入未定义状态,不能进入调试模式。芯片内原先烧录的代码启动了某些外设,或者将SWJ引脚配置为普通I/O口。
解决方法:选择芯片的BOOT0/BOOT1引脚从RAM启动,或先擦除芯片内代码。
3、芯片已被读/写保护:
调试工具不能读写芯片内置的Flash。 解决方法:先使用调试工具解除芯片的读/写保护。
烧写软件报错问题总结,后续有待完善!如有错误敬请指点会及时更正。
(转)
STM32硬件调试详解的更多相关文章
- STM32固件库详解
STM32固件库详解 emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板 ...
- Linux Bash命令关于程序调试详解
转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...
- STM32 HAL库详解 及 手动移植
源: STM32 HAL库详解 及 手动移植
- 2019-11-29-VisualStudio-断点调试详解
原文:2019-11-29-VisualStudio-断点调试详解 title author date CreateTime categories VisualStudio 断点调试详解 lindex ...
- Intellij IDEA中使用Debug调试详解
转载:https://www.linuxidc.com/Linux/2017-09/146772.htm Intellij IDEA中使用Debug调试详解 Debug用来追踪代码的运行流程,通常 ...
- Zend Studio集成Xdebug断点调试详解
转自:http://www.softown.cn/post/115.html Xdebug是PHP开发中两个常用的断点调试工具之一(另一个为Zend Debugger). 现在,我们在Zend Stu ...
- Go工具和调试详解
https://blog.csdn.net/happyanger6/article/details/78724594/ https://blog.csdn.net/u012210379/article ...
- STM32—串口通讯详解
串口通讯目录 物理层 协议层 USART简介 开发板与上位机的连接 代码讲解: 一.初始化结构体 二.NVIC配置中断优先级 三.USART配置函数讲解 四.传输数据的函数: 1.发送一个字节 2.发 ...
- (转)stm32启动文件详解
在<<STM32不完全手册里面>>,用的是STM32F103RBT6,所有的例程都采用了一个叫STM32F10x.s的启动文件,里面定义了STM32的堆栈大小以及各种中断的名字 ...
随机推荐
- Android:使用ViewPager实现左右滑动切换图片(图上有点点)
在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...
- hadoop博客
http://www.cnblogs.com/scotoma/ http://www.cnblogs.com/xia520pi/
- WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转)
WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转) Windows Communication Foundation (WCF)是Microsoft为构建面向服务的应用提供的分布式通信 ...
- jqueryrotate 使用 帮助 笔记 学习
1.想变角度 $("imgID").rotate(45); 2.想变角度时,有运动过程 $("imgID").rotate({animateTo:45} ...
- linux 用grep匹配横线
file的内容如下: ADSFADSFSDFASDFJKJK----------------------------------------ADSFADSFSDFASDFJKJK----------- ...
- oh my zsh命令
打开某个文件夹地址,输入 cdf 命令,会自动进入这个文件夹命令行 open ./ 打开当前命令行所在目录的文件夹
- volicety常用方法
1.volicety得到某个元素的个数 $extendsInfos.size() 2.volicety 布尔值判断: 如果a为null,#if($a) ,产生的判断值是false 等同于#if(fa ...
- 让ie6支持fixed最简单和实用的方法
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- BZOJ_1027_[JSOI2007]_合金_(计算几何+Floyd求最小环)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1027 共三种金属,\(m\)种材料,给出每种材料中三种金属的占比. 给出\(n\)种合金的三种 ...
- BZOJ3232: 圈地游戏
题解: 神题一道... 题解戳这里:http://hi.baidu.com/strongoier/item/0425f0e5814e010265db0095 分数规划可以看这里:http://blog ...