关于STM32 ST-LINK Utility查看内核运行状态,助你判断程序是否跑飞

发布者:RainbowDreamer最新更新时间:2023-08-30 来源: elecfans关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

本文围绕STM32 ST-LINK Utility讲几点主要功能及相关拓展知识:

1.STM32编程下载;

2.利用该编程工具查看内核运行状态;

3.Option Bytes选项字配置;

1STM32编程下载

STM32 ST-LINK Utility一个最重要的功能就是对STM32进行编程。支持常见的hex、bin文件,还有早期摩托罗拉定义的srec和s19格式的文件(说实话,我都不了解这两种格式的文件)。

这里主要想提示一下初学者:hex带有地址,而bin文件不带地址,下载时需要填写起始地址。

下面看两张在STM32 ST-LINK Utility中下载选择文件的图大家就明白了。

1.选择hex下载,地址不可修改(灰色)

2.选择bin下载,需要填写起始地址

关于hex和bin的内容请参看我的另两篇文章:

1.关于bin、hex和axf文件格式的描述

2.MDK-ARM如何生产Bin文件

2利用该编程工具查看内核运行状态

之本节内容主要想讲述一下:利用STM32 ST-LINK Utility工具中Hot Plug热插拔模式,查看内核运行状态。

1.STM32 ST-LINK Utility模式说明

即设置中三种模式选择:

主要有三种,在这个工具的用户手册中可以看到:

大概意思是:

Normal:常规模式

连接目标(芯片)之后,芯片复位,然后暂停(halted)。

Connect Under Reset:连接复位模式

主要用于JTAG/SWD引脚被禁用的时候。

Hot Plug:热插拔模式

连接目标芯片,不复位/重置芯片,则此时可以查看芯片状态。

2.查看内核运行状态

硬件连接好:Target -> MCU Core

为什么讲这一条内容呢?

相信大家都遇到或听到过程序跑飞这种情况,当你的程序跑飞,这里讲的内容可能帮助你判断程序是不是处于跑飞状态。

因为这里可以查看MCU内核的运行状态,简单的说就可以查看PC跑到哪儿去了(你应用程序跑如果超过相应区域,说明跑飞了)。

举个例:你应用程序存储在0x08010000 ---0x08020000这个范围内,正常运行应用程序应该在这个范围内,但是你发现PC的值为0x08025000(不在范围内),那就说明跑飞了。

这里可以执行的操作有:运行、暂停、系统复位、内核复位、单步运行、读内核寄存器。类似于IDE中的在线调试(IDE在线调试需要有源代码,而这里不需要源代码,可直接查看PC执行到的地址)。

提示:PC:Program Counter即程序计数器寄存器,指向当前执行程序的地址,如果修改它的值,就能改变程序的执行流。(具体可以参看Cortex-M3内核寄存器所在章节)

3Option Bytes选项字配置

对Option Bytes操作常用的一个就是对Flash加密(读/写保护)。当然,读写保护可以通过程序代码实现,也可以通过这里说的选项字设置来实现。

拿F401举例:Target ->Option Bytes

STM32 ST-LINK Utility工具还有些特殊功能,可能我们不常用,比如:command line interface命令行接口、external loader developing加载外部程序等,感兴趣的朋友可以参看用户手册研究一下。


关键字:STM32 引用地址:关于STM32 ST-LINK Utility查看内核运行状态,助你判断程序是否跑飞

上一篇:STM32F10x_ADC三通道逐次转换 (单次、单通道软件触发)
下一篇:基于STM32的智能粮仓系统设计

推荐阅读最新更新时间:2024-11-12 02:51

stm32寄存器版矩阵键盘库函数(附详细注释)
在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。本文为大家介绍stm32寄存器版矩阵键盘库函数。 stm32寄存器版矩阵键盘库函数 ////////////////////.h文件 #ifnd
[单片机]
<font color='red'>stm32</font>寄存器版矩阵键盘库函数(附详细注释)
stm32 程序二次加载:串口
使用串口二次加载程序即:不需要拆机就能够对产品进行升级,通过Bootloader就可以完成这项工作。该BootLoader的主要功能就是接受串口发送过来的应用程序并存放在固定的内存地址上,程序指针跳转到该地址上,程序就加载成功。 1、STM32在线升级 (IAP) IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。 1.1、IAP编写流程: 由Bootloader负责检测SD卡中是否有固件更新所需的BIN文件,或者通过SPI、CAN、以太网、串口等方式获取BIN文件。 如果获取到所需要的BIN文件,则开始复制文件更新固件,更新结束
[单片机]
stm32和电机开发(上位系统)
电机本身的开发一般都是用PID或者FOC完成的。但是,作为一个系统来说,在stm32之前,一般还会有一个主机系统,这个主机系统一般跑linux系统或者是windows系统。如果是linux系统,那么一般是各种各样的soc;如果是windows系统,一般就是pc电脑了。 为了说明电机控制系统和上层是怎么交互的,我们可以拿写字机做一个说明。写字机一般是拿pc当作主机进行处理,对图像进行预处理后,生成一条一条的控制命令。这些命令,通过串口发送给stm32,经过串口解析、插值、速度规划、x/y/z控制之后,就可以把对应的图像通过笔的书写打印出来。类似的方法还可以用于雕刻、3d打印等场合。 有了上面的说明,我
[单片机]
<font color='red'>stm32</font>和电机开发(上位系统)
STM32,RTC周期性唤醒(wakeup)中断
STM32L151: int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); LED_ON(); MX_DMA_Init(); MX_SPI1_Init(); MX_SPI2_Init(); MX_TIM3_Init(); MX_USART2_UART_Init(); //MX_IWDG_Init(); MX_RTC_Init(); MX_USART3_UART_Init(); MX_USART1_UART_Init(); printf( init complete...\r\n ); LED_OFF(); uns
[单片机]
STM32定时器溢出的工作原理是什么?
从来没有一个外设能够这么骚~那说的就是定时器了,或者说没有了定时器的MCU就不完整。 只能说没有定时器的单片机不值得被爱 OKOK,不骚了,这篇文章就是回答几个在我研究过程中比较疑惑的问题。 所以是可以确定一点的就是,如果你想让你的定时器非常精确,那你一定要有一个很稳的时基,这里就是时钟树。 痛苦的回忆来了,具体要查你的定时器在哪里挂着 还想骂的一点是,不知道为什么定时器还排起了辈分按说是从简单到难,但是ARM构架似乎是一把梭哈。 事实上大多数文章都是拿这个图说事情的,我也不能免俗 这个可编程定时器的主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一个预分频器得到。 软件可以读写计数器、自动重装
[单片机]
<font color='red'>STM32</font>定时器溢出的工作原理是什么?
STM32使用TIM触发ADC,CUBEMX配置
上一篇博客讲到,要采集准确的电机电流值,需要在PWM发波的高电平中间,或中间靠后进行ADC采样 这样可以确定采样出来的电流是真实的电机电流,应该是会比平均电流大写的。因为我这边PWM产生是用TIM1的互补PWM通道,而TIM1又是由TIM3的COM事件来触发的,现在我需要有另外一个定时器来产生一个跟TIM1周期相同,但是PWM的值是TIM1的一半的波形,这里我选择的是TIM15,因此需要保证TIM15的CCR寄存器的值为TIM1的一半,因此,可以直接在TIM1的溢出中断的回调函数中更新TIM15的CCR寄存器的值: 接下来就是要保证TIM1与TIM15同步了,因为TIM1是TIM3(霍尔定
[单片机]
<font color='red'>STM32</font>使用TIM触发ADC,CUBEMX配置
关于STM32的AD基准问题
STM32的64pin封装的AD不能加外部基准,也没有内部基准 STM32有一个内部的参考电压,接到了内部的ADCx_IN17通道,它用于提供一个参考的数值但不是基准。根据数据手册,在温度为-40至+105摄氏度范围内,这个参考电压为:最小值=1.16V、典型值=1.20V、最大值=1.24V。 测量这个参考电压的数值可以作为你的实际信号测量的参照。 关于AD测量的准确性问题,请务必把电源滤波做好,你可以参考ST的评估板上的电源部分,这个文档中有电路图:http://www.st.com/stonline/products/literature/um/13472.pdf STM32的ADC供电是VDDA,参考电压是Vref+和V
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved