stm32调试-- 获取内存数据

  之前做stm32开发的时候为了获取stm32芯片内部数据想进了各种方法。一开始是用串口发送数据,后来系统更新到win10后串口驱动不兼容,于是就找到了另外一种调试方式。

  我是在keil中进行stm32开发,stm32程序通过keil编译器编译,然后通过JLink下载到芯片上。在Debug模式中可以直接查看stm32的运行内存,如图1-1所示 


图1-1 stm32中变量值及其内存值

  只要知道数组在内存中的地址,即可以找到对应地址所存储的采样值。同时,Keil还提供了一个内置的命令用于将芯片内存对应地址段的内容存储到电脑上,其命令格式如表1-1所示:

表1-1 save命令参数详解

命令名   第一个参数             第二个参数
save    文件位置

内存段起始位置,

内存段结束位置

   对于图1-1中的DemoduBuffer1[5000]数组,其起始地址是0x20000058,因为每个元素占2个字节,所以其最后一个数据地址0x20002767(该数组总共占据10000字节,转换成16进制就是0x2710,即最后一个数据地址是0x20000058+0x2710 – 0x1 = 0x20002767)。调用该命令“save ../sample.txt 0x20000058,0x20002767 ”后即将数据保存到sample.txt文件中,该文件中的数据如图1-2所示:


图1-2 保存到电脑上的HEX386格式文件

  所有的内存数据都是以HEX386格式存储,其格式含义如表1-2所示:

表2-2 HEX386的文件格式

格式:LLAAAARRDDDD………DDDDCC
用于表示该符号之后的数据是符合HEX386格式
LLLength field,表示数据段(D)的字节数
AAAAAddress field,表示数据段第一个字节的地址
RR

Record type,表示数据段数值的含义

00    代表数据

01    代表纪录结束

02    代表扩展段地址记录

04    代表扩展线性地址记录


DDData,表示内存的数据
CC校验值,用来判断获取的数据是否正确

  stm32采用的是小端存储方式,内存是以8bit一个字节为一单位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值