之前做stm32开发的时候为了获取stm32芯片内部数据想进了各种方法。一开始是用串口发送数据,后来系统更新到win10后串口驱动不兼容,于是就找到了另外一种调试方式。
我是在keil中进行stm32开发,stm32程序通过keil编译器编译,然后通过JLink下载到芯片上。在Debug模式中可以直接查看stm32的运行内存,如图1-1所示
图1-1 stm32中变量值及其内存值
只要知道数组在内存中的地址,即可以找到对应地址所存储的采样值。同时,Keil还提供了一个内置的命令用于将芯片内存对应地址段的内容存储到电脑上,其命令格式如表1-1所示:
表1-1 save命令参数详解
命令名
第一个参数
第二个参数
save
文件位置
内存段起始位置,
内存段结束位置
图1-2 保存到电脑上的HEX386格式文件
所有的内存数据都是以HEX386格式存储,其格式含义如表1-2所示:
表2-2 HEX386的文件格式
格式
:LLAAAARRDDDD………DDDDCC
:
用于表示该符号之后的数据是符合HEX386格式
LL
Length field,表示数据段(D)的字节数
AAAA
Address field,表示数据段第一个字节的地址
RR
Record type,表示数据段数值的含义
00 代表数据
01 代表纪录结束
02 代表扩展段地址记录
04 代表扩展线性地址记录
DD
Data,表示内存的数据
CC
校验值,用来判断获取的数据是否正确