HSS模式的优势:全程无需复位芯片,直接读取即可。
而且随时随地都可以连接目标板,不影响目标板的正常功能,不需要额外资源。

1、函数介绍:
函数:pg_init(0)
用于初始化TOOL的SWD接口
函数:pg_read8
用于读取目标板指定RAM空间地址的8bit数据,比如读取地址0x2000 0000地址的8bit数据,就是pg_read8(0x20000000)
函数:pg_read16
用于读取目标板指定RAM空间地址的16bit数据,比如读取地址0x2000 0000地址的16bit数据,就是pg_read16(0x20000000)
函数:pg_read32
用于读取目标板指定RAM空间地址的32bit数据,比如读取地址0x2000 0000地址的8bit数据,就是pg_read32(0x20000000)
函数:读取浮点值
当前版本TOOL还没有注册直接返回浮点值,所以我们在LUA端封装了个API,见下面示例的代码展示。
函数:print_wave
波形打印,可以同时打印六路波形
比如打印一路(每次打印,更新一次value1值就出效果了):
str = string.format("%5.1f", value1)
print_wave(str)
打印两路:
str = string.format("%5.1f, %d", value1, value2)
print_wave(str)
打印三路:
str = string.format("%5.1f, %d, %d", value1, value2, value3)
print_wave(str)
2、操作方法:
(1)目标板程序
比如下面一个基于我们F429板子的工程代码,程序里面定义了一个周期性更新的两个变量
float g_usWaveSquare = 0.0;
uint16_t g_usWaveSine = 0;
V6-TOOL的HSS模式测试用例子.7z (3.06 MB)
(2)H7-TOOL读取变量的更新
通过MDK工程的map文件,可以方便的了解这两个变量的地址:
TOOL读取这两个地址的数据比较简单:
temp = pg_read32(0x20000000) -- 读取4个字节数据
value1 = pg_read16(0x20000004) -- 读取16bit整数
(3)完整实现代码
[Lua] 纯文本查看 复制代码 -- 整数转浮点数
function float_i2f(bits)
local sign
local exponent
local mantissa
local f
if((bits & 0x80000000) == 0) then
sign = 1
else
sign = -1
end
exponent = (bits & 0x7f800000)/(2^23)
mantissa = bits & 0x007fffff
mantissa = mantissa |0x00800000
f = sign * mantissa * 2^(exponent-150)
return f
end
local value1, value2, temp
local str
beep() -- 蜂鸣器
pg_init(0) -- 初始化
for i=0, 5000, 1 do
temp = pg_read32(0x20000000) -- 读取4个字节数据
value1 = float_i2f(temp) -- 转换整数位浮点数
value2 = pg_read16(0x20000004) -- 读取16bit整数
--波形打印格式,逗号分割,支持6路波形打印
str = string.format("%5.1f, %d", value1, value2)
--打印读取的数值
print(str)
--打印波形
print_wave(str)
--每10ms读取打印一次
delayms(10)
end
效果展示:
复制代码到LUA小程序运行位置。
动态效果:

|