一、环境准备
1、FreeMASTER安装版本
2、Keil5、J-Link安装
二、FreeMASTER项目
1、新建项目,File->New Project
2、配置,Project->Options
配置通信方式,此处是指定“C:\Program Files (x86)\SEGGER\JLink_V634\JLinkARM.dll”,可以根据实际安装路径与版本指定“JLinkARM.dll”文件。
如果按上图的“Test Connection”按钮,出现下图界面,则说明Jlink连接正常。
3、指定keil调试项目编译的axf文件。
4、添加变量,Project->Variables
在上图中点击“Generate“按钮生成变量。
在下图中选择变量,并点击“Creat a single variable“用以选择变量。
添加“sample_AV“数据后如下图效果,此处只尝试对一个二维数组进行读取,故只加了一个变量。
三、EXCEL中的VBA
1、新建EXCEL文件,在EXCEL中加入宏设计, 在进行宏设计时需引用下图所指库文件(FreeMASTER ActiveX Type Library)。
设计结构如下图
为方便使用,在EXCEL中加入了一个“加载窗体“按钮,用来直接打开在VBA中设计的窗体,可以输入数组变量名与长度。下图中变量sample_AV是两维数组,可以输入sample_AV[0]与sample_AV[1]指定数组读取的位置。
模块文件中的代码如下:
Dim pcm As McbPcm
Dim sht
Private Sub UserForm_Activate()
Set pcm = New McbPcm
Set sht = Worksheets("sheet1")
sht.Range("A1").Value = "变量值"
sht.Range("B1").Value = "状态"
End Sub
Sub OnError(err)
If pcm Is Nothing Then
Call UserForm_Activate
End If
sht.Range("B2").Value = "ERROR: " & err
End Sub
Sub ShowStatus(text)
If pcm Is Nothing Then
Call UserForm_Activate
End If
sht.Range("B2").Value = text
End Sub
Sub ReadVar16()
Call ReadVariable("var16", "B1")
End Sub
Sub ReadArr16(tmpVarName, tmpVarLen)
Call ReadArray(tmpVarName, 2, tmpVarLen, "A")
End Sub
Sub ClearArray()
If pcm Is Nothing Then
Call UserForm_Activate
End If
sht.Range("A2:A1024").Value = ""
ShowStatus ("Array was cleared")
End Sub
Sub ReadVariable(name, cell)
Dim bSucc As Boolean
If pcm Is Nothing Then
Call UserForm_Activate
End If
bSucc = pcm.ReadVariable(name, vValue, tValue, bsRetMsg)
If bSucc Then
sht.Range(cell).Value = tValue
ShowStatus ("Readvariable OK")
Else
OnError (bsRetMsg)
End If
End Sub
Sub ReadArray(name, elemSize, length, cell)
Dim bSucc As Boolean
Dim i As Integer
If pcm Is Nothing Then
Call UserForm_Activate
End If
bSucc = pcm.ReadUIntArray(name, length, elemSize, arr, bsRetMsg)
If bSucc Then
'sht.Range(cell).Value = arr
For i = 0 To UBound(arr) - 1
sht.Range(cell & (i + 2)).Value = arr(i)
Next i
ShowStatus ("ReadUIntArray OK")
Else
OnError (bsRetMsg)
End If
End Sub
Sub LoadUserForm()
UserForm1.Show
End Sub
Sub GetVarArr_Click()
ClearArray
End Sub
UserForm1中的代码如下:
Private Sub CommandButton1_Click()
Call ReadArr16(TextBox1.text, Val(TextBox2.text))
End Sub
Private Sub CommandButton2_Click()
End
End Sub
Private Sub CommandButton3_Click()
ClearArray
End Sub
相关资源
FreeMASTER自带示波器功能如图示。
FreeMASTER文档中的例程
应用示例效果图