调试stm32时jtag速度注意
STM32单片机硬件关键基础精华及注意事项
STM32单片机硬件关键基础精华及注意事项时间:2012-09-06 19:02:44 来源:作者:STM32简单介绍一、背景如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。
使你不必在性能、成本、功耗等因素之间做出取舍和折衷。
即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU 应用领域的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度;存储器的种类、规模、性能和容量;以及各种软件获得的难易,我相信你看完本专题会得到一个满意的答案。
对于在16位MCU领域用惯专用在线仿真器(ICE)的工程师可能会担心开发工具是否能够很快的上手?开发复杂度和整体成本会不会增加?产品上市时间会不会延长?没错,对于32位嵌入式处理器来说,随着时钟频率越来越高,加上复杂的封装形式,ICE已越来越难胜任开发工具的工作,所以在32位嵌入式系统开发中多是采用JTAG仿真器而不是你熟悉的ICE。
但是STM32采用串行单线调试和JTAG,通过JTAG调试器你可以直接从CPU获取调试信息,从而将使你的产品设计大大简化,而且开发工具的整体价格要低于ICE,何乐而不为?有意思的是STM32系列芯片上印有一个蝴蝶图像,据ST微控制器产品部Daniel COLONNA先生说,这是代表自由度,意在给工程师一个充分的创意空间。
我则“曲解”为预示着一种蝴蝶效应,这种蝴蝶效应不仅会对方案提供商以及终端产品供应商带来举足轻重的影响,而且会引起竞争对手策略的改变……翅膀已煽动,让我们一起静观其变!二、STM32市面上流通的型号截至2010年7月1日,市面流通的型号有:基本型:STM32F101R6,STM32F101C8,STM32F101R8,STM32F101V8 ,STM32F101RB,STM32F101VB增强型:STM32F103C8,STM32F103R8,STM32F103V8,STM32F103RB,STM32F103VB,STM32F103VE,STM32F103ZE三、STM32系列的作用ARM公司的高性能”Cortex-M3”内核1.25DMips/MHz,而ARM7TDMI只有0.95DMips/MHz一流的外设1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度低功耗在72MHz时消耗36mA(所有外设处于工作状态),待机时下降到2μA最大的集成度复位电路、低电压检测、调压器、精确的RC振荡器等简单的结构和易用的工具四、STM32F10x重要参数2V-3.6V供电容忍5V的I/O管脚优异的安全时钟模式带唤醒功能的低功耗模式内部RC振荡器内嵌复位电路工作温度范围:-40℃至+85℃或105℃五、性能特点基本型STM32F101:36MHz CPU,多达16K字节SRAM,1x12位ADC温度传感器增强型STM32F103:72MHz CPU,多达20K字节SRAM,2x12位ADC 温度传感,PWM定时器,CAN,USB六、STM32互联型系列简介:全新STM32互连型(Connectivity)系列微控制器增加一个全速USB(OTG)接口,使终端产品在连接另一个USB设备时既可以充当USB主机又可充当USB从机;还增加一个硬件支持IEEE1588精确时间协议(PTP)的以太网接口,用硬件实现这个协议可降低CPU开销,提高实时应用和联网设备同步通信的响应速度。
Keil下Jtag仿真STM32f103芯片
下图为设置界面:
选择Debug标签
使用如图所示CM3 Jlink方式点击Settings进入配置界面:
在Debug标签中选择工作模式:
JTAG方式最大支持2M下载和仿真S来自D方式最大可以使用最大值12M
设定完后再打开Flash Download标签设置器件FLASH如下图:
点击ADD添加器件:
STM32f103rb和STM32f103c8都使用选中项
设置完后再进入Utilities标签里选择CM3 Jlink即可: 完成高置后便能以JATG或SWD方式调试STM32芯片
keil下jtag仿真stm32f103芯片本人使用的的keil版本为mdk370arm单片机为stm32f103c8t6设置方法如下首先连接上jlink和stm32开发板和电脑打开keil软件在新建工程后点击设置
Keil
本人使用的的KEIL版本为MDK370,ARM单片机为stm32f103c8t6设置方法如下
STM32 GPIO速度,模式等理解
STM32 GPIO速度,模式等理解一、</>GPIO模式配置1、输入/输出模式(参考stm32手册)2、GPIO输出模式下,几种速度的区别:(1). GPIO 引脚速度:GPIO_Speed_2MHz (10MHz, 50MHz) ;又称输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
)可理解为: 输出驱动电路的带宽:即一个驱动电路可以不失真地通过信号的最大频率。
(如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。
失真因素?)如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。
就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。
关键是:GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。
带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。
使用合适的驱动器可以降低功耗和噪声比如:高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。
当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。
比如:</>①</>USART串口,若最大波特率只需115.2k,那用2M的速度就够了,既省电也噪声小。
</>②</>I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的GPIO引脚速度。
</>③</>SPI接口,若使用18M或9M波特率,需要选用50M的GPIO的引脚速度。
(2). GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚(APB2上)高低电平的速度.手册上指出GPIO最大翻转速度可达18MHz。
stm32 TIM2 重映射过程中的需要注意的细节点
stm32的TIM2的端口使用组合有下面四种:1.当不重映射时,默认TIM2四个的IO口是PA0、PA1、PA2、PA32.要使用PA15、PB3、PA2、PA3的端口组合,要调用下面的语句进行部分重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);3.要使用PA0、PA1、PB10、PB11的端口组合,要调用下面的语句进行部分重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE);4.要使用PA15、PB3、PB10、PB11的端口组合,要调用下面的语句进行完全重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);同时还要禁用JTAG功能,PA15、PB3、PB10、PB11才会正常输出。
GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);/**********************1.执行端口重映射时,复用功能时钟得使能:RCC_APB2Periph_AFIO2. 1. GPIO_Remap_SWJ_Disable: !< Full SWJ Disabled (JTAG-DP + SW-DP)此时PA13|PA14|PA15|PB3|PB4都可作为普通IO用了为了保存某些调试端口,GPIO_Remap_SWJ_Disable也可选择为下面两种模式:2. GPIO_Remap_SWJ_JTAGDisable: !< JTAG-DP Disabled and SW-DP Enabled此时PA15|PB3|PB4可作为普通IO用了3. GPIO_Remap_SWJ_NoJTRST: !< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST此时只有PB4可作为普通IO用了**********************/GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //使能禁止JTAGGPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //JATG-DP禁用,但是SW-DP可使用//初始化GPIOB 推挽输出GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_3|GPIO_Pin_4);GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_3|GPIO_Pin_4);//初始化GPIOA 推挽输出GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA, GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);。
芯达STM32入门系列教程之三《如何使用J-Flash调试》
STM32入门系列教程如何使用J-Flash调试Revision0.01(2010-04-12)对初学者来说,要进行STM32的程序下载调试,一般有三种方法:(1)使用SEGGER J-Flash(J-Link)下载程序到闪存中运行;(2)使用串口ISP来下载HEX文件到CPU中运行;(3)J-Link+MDK组合,来在线调试程序(可下载、调试)。
本文档讲述如何在芯达STM32开发板上使用SEGGER J-Flash下载HEX文件。
而其他两种方法,我们将在文档《如何使用MDK+J-Link调试》、以及《如何使用STM32-ISP下载调试》中详细说明。
先来解释SEGGER。
实际上,大家更为熟悉的ARM仿真器J-Link,就是由SEGGER公司开发的。
J-Link是SEGGER为支持仿真ARM内核芯片推出的JTAG 仿真器。
不管什么CPU的仿真器,都需要安装其相应的驱动后才能使用。
J-Link也不例外,它的驱动软件可以去官方网站:下载最新版本。
这里使用的驱动软件版本是V4.08l,该驱动的安装非常简单,请参考文档《如何安装J-Link驱动软件》。
安装完毕,会出现如下两个图标:现在开始我们的工作吧!步骤一先进行设备连接操作。
芯达STM开发板的JTAG口(开发板面朝上,最顶端有一个JTAG20pin的插口),与J-Link V8仿真器的输出排线连接,J-Link另一头的USB插口则插在电脑的USB口上。
这时,J-Link的指示灯开始闪烁,并保持“点亮”的状态。
注意:大家购买J-Link仿真器的时候,JTAG接口要求是标准的20pin的2.54间距的针座。
否则需要转接卡进行JTAG接口的转换。
步骤二进入PC的桌面,点击上图左边的图标:J-Flash ARM V4.081,出现如下界面:步骤三我们先来进行project设置,保存后会自动识别该配置。
不进行project设置,则在后续步骤进行连接connect开发板的时候,会提示找不到flash 设备下载,导致无法连接,如下所示:点击“Options”,再点击“Project settings”,如下图所示:步骤四在弹出的窗口中进行设置。
JTAG基本原理与调试
JTAG基本原理与调试JTAG(Joint Test Action Group)联合测试⾏动⼩组)是⼀种国际标准测试协议(IEEE 1149.1兼容),主要⽤于芯⽚内部测试。
现在多数的⾼级器件都⽀持JTAG协议,如DSP、FPGA器件等。
标准的JTAG接⼝是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输⼊和数据输出线。
JTAG最初是⽤来对芯⽚进⾏测试的,基本原理是在器件内部定义⼀个TAP(Test Access Port?测试访问⼝)通过专⽤的JTAG测试⼯具对进⾏内部节点进⾏测试。
JTAG测试允许多个器件通过JTAG接⼝串联在⼀起,形成⼀个JTAG链,能实现对各个器件分别测试。
现在,JTAG接⼝还常⽤于实现ISP(In-System Programmable?在线编程),对FLASH等器件进⾏编程。
JTAG编程⽅式是在线编程,传统⽣产流程中先对芯⽚进⾏预编程实现再装到板上因此⽽改变,简化的流程为先固定器件到电路板上,再⽤JTAG编程,从⽽⼤⼤加快⼯程进度。
JTAG接⼝可对PSD芯⽚内部的所有部件进⾏编程上⾯的信息是从度娘百科引⽤过来的,对于jtag没有了解过的⼈来说,上⾯的⼤部分内容都不知道说什么,当然,我是⼀开始看的时候也看不懂。
不过从上⾯得出来的信息知道,jtag是⼀个协议,标准有4个引脚,⽤于芯⽚的测试与编程调试。
jtag是有硬件实现的。
在cpu(注意:这⾥的cpu是指运算处理单元,只包含了内部寄存器以及运算单元等基本部件)外围,处理器(即cpu扩展芯⽚,不是soc)内部包含了jtag的硬件实现,并且向外界提供接⼝,也就是上⾯所说的TMS,TCK,TDI,TDO,四个引脚。
如图:边界扫描链jtag如何⽤于芯⽚测试呢? 其中⽤到的最主要部件就是边界扫描链。
命名为边界扫描链,是由于它位置处于处理器的边界上。
我们知道cpu是通过引脚与外围交流的,所有的数据都会通过引脚输⼊或者输出,⽽jtag就是通过监控引脚的信号达到芯⽚测试的⽬的。
STM32引脚使用选择注意
stm32有些管脚它上电默认的功能不是通用GPIO,比如JTAG与SWJ调试管脚,所以,如果你想使用这几个管脚作为通用IO的话,就必须将JTAG与SWJ功能关闭,以及开启AFIO时钟。
(AFIO 时钟未设置,GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE) 这句不会生效,也就是要先设置时钟,才能配置相应端口,后变换了下顺序,先设RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);再调用GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)就完美可以了)最近博主用STM32F103C8T6做了一个温度测控模块,用到PB3,PB4,PA15等引脚控制外设。
发现不管怎么配置,这三个引脚都不能置零。
后来发现是包括这三个引脚在内的PB3,PB4,PA13,PA14,PA15是特殊的IO口,用作JTAG/SWD仿真器的调试接口(不能直接使用)。
其中PA13,PA14分别作为SWD调试的SWIO 和SWCLK;PB3,PB4,PA13,PA14,PA15共同用于JTAG。
这五个引脚的中英文描述如下图所示,图片来源于STM32F1参考手册:这五个IO引脚非常特殊,正常情况下作为SWJ仿真器的调试引脚,如果要作为普通IO口使用需要特别的配置。
以PA13引脚为例,该引脚在STM32F1数据手册中的描述如下图:相较与其他的普通IO,PA13的Main function 为JTMS-SWDIO。
反而普通IO口的功能在Alternate functions中的remap里。
也就是说PA13要想当做普通IO口使用,就必须使用它复用功能中的重映射。
因此就需要这样的两步操作:一.在时钟配置中打开复用时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Pe riph_AFIO,ENABLE);二.对PA13引脚进行重映射:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);步骤一比较好理解,这里重点叙述下步骤二的重映射操作。
JTAG 制作调试技巧
调试要点一:保证你的PCB板焊接无错漏。
这是先决性的条件。
在回答大家的问题时,发现90% 以上的故障,均来自焊接的线路问题。
调试要点二:保证你的AVR芯片的供电电压是5V。
虽然JTAG可以在3伏的电压下也能工作,但实际应用时,发现有些RS232芯片或分立件只能工作在5V。
所以,调试时请先设置在5V。
等5V 成功了,才去试验3伏。
调试要点三:保证你的目标板上的AVR芯片的熔丝位正确。
目标板是指你的实验板。
只有支持JTAG接口的芯片才能进行JTAG仿真。
支持清单为:ATmega128, ATmega128L, ATmega16, ATmega162, ATmega162V, ATmega1 65, ATmega165V, ATmega169, ATmega169V, ATmega16L, ATmega32, ATmega32 3, ATmega323L, ATmega32L, ATmega64, ATmega64L 。
所以,不要指望用JTAG 来仿真Mega8 啊!以Mega16为例,目标板(实验板)上的熔丝位配置图为:(内部8M RC 晶振)调试要点四:保证你的目标板上的JTAG接口已经加了四支上拉电阻及4、7脚接VCC。
目标板(实验板)上的接线图为:如果上图连接错误,就会出现非常出名的 OCD JTAG错误信息:最逗的是,我测试时发现,就算你的上图连接没有错误,但插入JTAG 双十针线时,插反了,也会出现这个提示!!如果上图连接无误,用万用表量JTAG目标板上的1、3、5、7、9脚,应该都是接近5伏。
如果有某一脚不是5V,证明你的焊接有误。
注:测试时我发现,上面的电路图四支10K 电阻不接JTAG也能正常工作。
不过,既然ATMEL官方文档推荐这四支上拉电阻,大家不要省略了,以免出现莫名其妙的错误。
调试要点五:保证你的JTAG上的RS232线路工作正常。
RS232 其实就是一个电平转换反相器。
所以,大家可以用模拟输入的方法,测试输出,判断RS232线路是否能正常工作。
STM32调试方法
STM32调试方法STM32是一款非常受欢迎的单片机系列,广泛应用于各种嵌入式系统中。
在开发STM32项目时,调试是一个非常重要的环节,它能帮助开发者检测和解决程序中的问题。
本文将介绍STM32的调试方法,包括硬件调试和软件调试。
一、硬件调试硬件调试是通过硬件工具来实现的,通常使用的工具有JTAG、SWD和UART等。
下面将详细介绍这些调试工具的使用方法。
1.JTAG调试JTAG是一种用于测试和调试电子系统的接口标准,它能够提供对目标设备的非侵入式访问。
在STM32项目中,JTAG接口一般用于调试目的,下面是使用JTAG调试STM32的步骤:步骤1:连接JTAG调试器和目标设备。
将JTAG调试器的TCK、TMS、TDI、TDO和GND引脚分别连接到目标设备的相应引脚上。
步骤2:配置STM32的调试模式。
在STM32的配置文件中,将调试模式设置为JTAG模式。
步骤3:使用调试工具进行调试。
使用JTAG调试工具,如OpenOCD或J-Link等,连接到JTAG调试器,然后启动调试器进行调试。
调试工具会与STM32建立连接,并允许开发者对程序进行单步调试、断点设置等操作。
2.SWD调试SWD(Serial Wire Debug)是一种单线(加地线)调试接口,它是ARM公司推出的一种调试接口标准。
SWD相比JTAG接口更简洁、更省引脚,因此在STM32项目中被广泛应用。
下面是使用SWD调试STM32的步骤:步骤1:连接SWD调试器和目标设备。
将SWD调试器的SWCLK、SWDIO和GND引脚分别连接到目标设备的相应引脚上。
步骤2:配置STM32的调试模式。
在STM32的配置文件中,将调试模式设置为SWD模式。
步骤3:使用调试工具进行调试。
使用SWD调试工具,如ST-Link或J-Link等,连接到SWD调试器,然后启动调试器进行调试。
调试工具会与STM32建立连接,并允许开发者对程序进行单步调试、断点设置等操作。
STM32引脚JTDO、JNTRST与JTDI作为普通IO口使用配置
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
GPIO_Remap_SWJ_JTAGDisable已在“stm32f10x_gpio.h”文件中进行了宏定
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 |
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/* Push-pill output,it can be other output types */
GPIO_ResetBits(GPIOB, GPIO_Pin_4);// PB4 is set to0;
tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
/* Disable JLink, enable SW */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA“
RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
STM32引脚JTDO、JNTRST与JTDI作为普通IO口
使用配置
使用Jlink向STM32烧录程序时,需要使用6个芯片的引脚(以
STM32F103C8T6为例),分别是
PB4/JNTRST、PB3/JTDO、PA13/JTMS、PA14/JTCK、PA15/JTDI、NRST。标
实验0-STM32程序下载方法与调试
一、程序下载方法
1、stlink下载线连接
1.1有JTAG口的电路板接线
图1.1 电路板1
图1.2 ST下载线连接方式
图1.3 JTAG接口
图1.4 JTAG接口定义1.2与无JTAG口的电路板接线
图1.5 电路板2
图1.6 SWDIO与SWCLK对应的PA13、PA14接口
单片机引脚- -st-link下载引脚
vcc3.3.----- > vcC3.3
PB14- - -->SWD IO
PB13 --- --> SWCLK
GND --- -- >GND
图1.7 实际接线图
1.3 STlink下载线驱动安装
图1.8 安装好驱动的stlink状态图1.4 keil 软件的配置与程序下载
点击魔术棒option按键,分别点击下图1、2、3、4
图1.9 STLINK下载线配置
图1.10 STLINK下载线配置完成的状态
图1.11 编译完成以后下载程序
注意:以上程序下载后需要按电路板上的RST重启电路板,程序得以运行。
1.5 keil 软件硬件仿真调试
图1.12 实物仿真调试界面设置
可以通过单步调试,看电路板上灯的亮灭以及内部变量在watch里面的变化情况,这对于程序有问题的情况尤为重要。
2、ISP下载线连接
2.1 接线图
图2.1 ISP下载线
2.2 程序下载
图2.2 采用ISP软件下载hex文件到芯片
这种方法的调试只能采用软件仿真调试
2.3 程序软件仿真调试
图2.3 软件仿真调试方法
其中红圈2部分可以不要,只是不能连续仿真,需要不断地点run才能进行。
STM32常见知识点
STM32常见知识点STM32是意法半导体(STMicroelectronics)公司推出的一系列32位微控制器,它具有高性能、低功耗、丰富的外设和灵活的扩展性,被广泛应用于工控、汽车、消费电子等领域。
下面是一些关于STM32的常见知识点。
1. ARM Cortex-M内核:STM32微控制器采用了ARM Cortex-M系列内核,包括Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7,这些内核具有低功耗、高性能和灵活的指令集。
2.外设丰富:STM32微控制器集成了丰富的外设,如通用串行总线(USART)、通用异步接收/发送器(UART)、同步串行通信接口(SPI)、通用定时/计数器(TIM)、模数转换器(ADC)、数字输入/输出(GPIO)等。
这些外设可以满足各种应用的需求。
3.多种存储器:STM32微控制器内部集成了闪存、SRAM和EEPROM等多种存储器,用于存储程序代码和数据。
闪存用于存储程序代码,而SRAM用于存储运行时数据。
EEPROM则用于存储需要频繁修改的数据。
4.低功耗模式:STM32微控制器具有多种低功耗模式,包括停机模式、待机模式和休眠模式等。
这些模式可以帮助系统实现低功耗运行,延长电池寿命。
5.复位和时钟:STM32微控制器有多种复位和时钟选项,包括复位电路、外部高速晶体振荡器、内置振荡器、主从PLL等。
通过这些选项,可以满足不同应用场景的需求。
6.中断和优先级:STM32微控制器支持多种中断和优先级,包括外部中断、定时器中断、串口中断等。
通过合理使用中断和优先级,可以提高系统的实时性能。
7. 调试和编程:STM32微控制器可以通过调试接口(如JTAG和SWD)进行调试和编程。
开发者可以使用调试工具(如ST-Link)连接微控制器并进行调试和烧录操作。
8. 开发平台:STM32微控制器有多种开发平台可供选择,包括STCube和MDK-ARM等。
stm32JTAG和SWD的使用区别
stm32 JTAG和SWD的使用区别对于JTAG和SWD的使用区别,觉得下面这篇文章讲的比较清晰了,所以转帖到这里,希望对新手有所帮助。
SWD与JTAG区别及使用情况[转载]上图是SEGGER说明书中给出的Jlink引脚图,可以对照着看SWD引脚与JTAG引脚的关系。
这是我手边开发板上的JTAG连接图,这个肯定是能用的。
这个是从网上找来的标准的JTAG连接图,供对照参考。
调试方式既可以用JTAG,也可以用SWD。
以下是一段转自:(showvi)SWD 仿真模式概念简述一、SWD 和传统的调试方式区别1. SWD 模式比 JTAG 在高速模式下面更加可靠。
在大数据量的情况下面 JTAG 下载程序会失败, 但是SWD 发生的几率会小很多。
基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。
所以推荐大家使用这个模式。
2. 在大家 GPIO 刚好缺一个的时候, 可以使用 SWD 仿真, 这种模式支持更少的引脚。
3. 在大家板子的体积有限的时候推荐使用 SWD 模式, 它需要的引脚少, 当然需要的 PCB 空间就小啦!比如你可以选择一个很小的 2.54 间距的 5 芯端子做仿真接口。
二、仿真器对 SWD 模式支持情况1. 市面上的常用仿真器对 SWD 模式支持情况(1) JTAGV6 支持 SWD 仿真模式,速度较慢。
(2) JTAGV7 比较好的支持 SWD 仿真模式, 速度有了明显的提高,速度是 JTAGV6 的 6 倍。
(3) JTAGV8 非常好的支持 SWD 仿真模式, 速度可以到10M。
(4) ULINK1 不支持 SWD 模式。
(5) 盗版 ULINK2 非常好的支持 SWD 模式,速度可以达到 10M。
(6) 正版 ULINK2 非常好的支持 SWD 模式,速度可以达到 10M。
2. SWD 硬件接口上的不同(1) JTAGV6 需要的硬件接口为: GND, RST, SWDIO, SWDCLK(2) JTAGV7 需要的硬件接口为: GND, RST, SWDIO, SWDCLK(3) JTAGV8 需要的硬件接口为: VCC, GND, RST, SWDIO, SWDCLK (注:下面有我自己用JTAGV8的实际连线及相应实验结果)(4) ULINK1 不支持 SWD 模式(5) 盗版 ULINK2 需要的硬件接口为: GND, RST, SWDIO, SWDCLK(6) 正版 ULINK2 需要的硬件接口为: GND, RST, SWDIO, SWDCLK由此可以看到只有 JTAGV8 需要 5 个引脚,即多了一个VCC引脚,其好处是: 仿真器对目标板子的仿真需要用到 RST 引脚, 使用仿真器内部的 VCC 作这个功能其实并不是非常美妙。
STM32Jlink调试总结
STM32Jlink调试总结Cepark Jlink调试总结Wkuang 2011-7-9 上周三,电子园老李给我打电话,看我有没有时间调试下电子园的Jlink。
我回答没问题,最近比较闲一点。
周一就收到电子园老李给我发过来Jlink套件包裹,打开一看,里面东西真不少,有51,avr最小系统套件,USB转串口套件,一个成品USB转串口,一个烙铁。
老李说用这些东西来给我练手用,呵呵。
在这里先谢谢电子园。
说说Jlink调试吧,周四,我把PCB带到公司,首先检测一下几个电源和地有没有短路的情况,板子电源和地都正常。
第一次焊接QFP64器件时,芯片引脚处的焊锡就黏在一块不流动,我把温度调到400读都不行,没办法只能换换个位子换到另外一个焊台去。
不换不知道,一换吓一跳啊,新换的焊台非常给力,五分钟把两个贴片芯片搞定(后来才知道我用的第一个焊台是坏的),其他的事情留到周六来办。
周六开始Jlink的调试,首先把Jlink的最小系统焊接完后(焊接过程请看我的另外一个帖子《Jlink焊接调试一些小经验》),ERASE 跳线帽短路5s,擦除芯片,TST跳线帽短路20,芯片自动少些Boot。
重新上电,at90sam7s64最小系统正常工作了,设备管理器上出现图1所示USB设备。
图1最小系统工作正常,在将其他电容电阻焊接完毕,在测试,出现了一下几个问题:问题1:打开Segger的GDB Server,后提示以下错误WARNING: Out of sync , resynchronising...WARNING: Out of sync , resynchronising...WARNING: Out of sync , resynchronising...Can not connect to J-Link via USB.J-Link>问题1解决方法:在网上搜了很多久(网络不给力,打开一个网页要几分钟),发现这是Segger Jlink软件的一个bug,以下是官方的答复SEGGER - AlexSuper ModeratorHi,the problem has been fixed in V4.20d which is planned to be released today.Best regards问题2我打开MDK,进入仿真器调试模式,选择Jlink,开始调试,出现如下警告界面,TCK 必须为高电平,让我检测我的目标板问题2解决方法:这个问题让我很纳闷,因为我开发板没有问题,这个Jlink的警告是让我检测开发板的硬件。
stm32的hardfault异常定位方法
STM32是一种流行的嵌入式微控制器,它在众多应用中得到广泛使用。
在开发STM32的应用程序时,可能会遇到硬件故障(hardfault)异常。
硬件故障异常是指当CPU尝试执行非法指令或访问非法位置区域时发生的异常。
要有效地定位和解决STM32中的硬件故障异常,需要掌握一些方法和技巧。
下面将介绍一些用于定位STM32硬件故障异常的方法:1. 使用调试工具使用调试工具是最直接的方法。
通过连接调试工具,如JTAG或SWD 调试器,可以实时监视程序的执行状态。
任何硬件故障异常都会导致程序暂停,并且可以在调试工具中看到异常的具体位置和原因。
这样可以快速找到问题所在,然后进行修复。
2. 使用异常处理函数在STM32的代码中,可以编写异常处理函数来捕获硬件故障异常。
一旦出现硬件故障异常,程序会跳转到异常处理函数中,并且可以在函数中记录异常信息,比如异常发生的位置区域、当前栈状态等。
通过这些信息,可以帮助定位异常的原因。
3. 查看堆栈信息当硬件故障异常发生时,CPU会将当前的堆栈信息保存起来。
通过查看堆栈信息,可以了解程序执行到异常位置时的函数调用关系和寄存器状态。
这些信息对于定位异常非常有帮助。
4. 检查外设状态有时候硬件故障异常可能与外设的状态有关。
外设可能未正确初始化或配置,导致异常的发生。
在定位异常时,也需要仔细检查外设的状态。
在使用上述方法定位STM32硬件故障异常时,需要注意以下几点:1. 仔细阅读异常信息当硬件故障异常发生时,通常会生成异常信息。
这些异常信息包括异常类型、异常发生的位置区域等。
仔细阅读异常信息可以帮助定位异常的原因。
2. 逐步调试在定位硬件故障异常时,可以采用逐步调试的方法。
通过逐步调试,可以逐步排除可能的问题,缩小定位的范围。
3. 仔细分析代码在定位异常时,需要仔细分析代码。
可能是由于程序逻辑错误、内存溢出等原因导致的异常。
定位STM32硬件故障异常需要一定的经验和技巧。
通过使用调试工具、异常处理函数、查看堆栈信息和检查外设状态等方法,可以快速有效地定位和解决STM32中的硬件故障异常。
STM32开发板JTAG下载步骤
奋斗版STM32开发板JTAG下载步骤
该方法适合奋斗版STM32核心开发板及完整开发板。
下载工具为JLINK仿真器。
利用J-FLASH软件下载代码:
1.将板上的JP1上的短接块插入,将JLINK仿真器的下载电缆插入开发板的XS3插座,给开发板加电。
2.运行PC机端的J-FLASH ARM软件。
该软件在仿真器随机光盘的文件夹里。
3. 按照如图点击进入并按图示选择并确定
4.运行连接后的界面如下,指示出MCU器件的详细信息
4. 打开需要下载的代码文件。
5.选择AUTO下载代码。
6
7.
8. 完成后,给开发板重新供电,程序即开始运行。
利用MDK开发环境下载代码:
1.将板上的JP1上的短接块插入,将JLINK仿真器的下载电缆插入开发板的XS3插座,
给开发板加电。
2.运行PC机端的MDK软件。
3. 点击OPTION选项,显示如下,选择仿真工具为Cortex-M3 J-LINK
4. 参数如图选择,不同版本J-LINK仿真器会有一些区别。
5. 如图选择
6.
7.
8. 在主界面选择FLASH选项,完成代码下载。
2010.3.24 By Sun68。
STM32系列常见问答集锦
STM32系列常见问答集锦STM32系列常见问答集锦【2012年10月25日更新】一、STM32 关于GPIO的问题集锦二、STM32关于USART的问题集锦三、关于STM32的中断问题集锦四、关于STM32的SPI问题集锦五、关于STM32的ADC/DAC问题集锦六、关于STM32的DMA问题集锦七、关于STM32的FLASH问题集锦八、关于STM32的以太网问题集锦九、关于STM32的定时器问题集锦十、关于STM32的I2C问题集锦十一、关于STM32的PWM问题集锦十二、关于STM32的USB问题集锦十三、关于STM32的JLINK问题集锦十四、关于STM32其他问题集锦一、STM32 关于GPIO的问题集锦1、关于GPIO问:STM32的IO口初始化为输入浮空,那管脚是高电平还是低电平呢?答:既不是高电平也不是低电平,悬空的意思是没有使用的状态。
2、有关stm32f103 端口复用的问题?问:在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子:PB6 PB7默认情况下是做普通IO使用的,当我想用I2C1是,我开启RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);当我要使用I2C1的重定义时,我要打开,RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);这样理解对不对?有的人说当用的芯片自带的外设时都要打开AFIO 时钟,但我用到usart1时没有打开AFIO 时钟,照样能用usart,这是为什么?总之问这个问题的根本原因是AFIO的时钟要在什么情况下打开?答:1、串口必须要打开AFIO时钟,不然不能工作。