7.9.1.1.GEL 函数定义

GEL 函数的定义方式与 C 语言类似:

funcName( Parameters1, Parameters2 ...Parameters6 ) { statements }
  • funcName:GEL 函数的名称
  • Parameters:有效的 GEL 参数
  • statements:有效的 GEL 语句

GEL 函数在 GEL 文件(扩展名为 .GEL)内定义。一个 GEL 文件可以包含许多 GEL 函数定义。

与 C 语言不同,GEL 函数不需要在源文件顶部或任何头文件中定义其原型(返回类型、参数)。所有函数都是全局函数,数据类型自动从传递的值中获取。

GEL 函数定义不能嵌入到另一个 GEL 函数定义中。

___

示例:

一个简单的函数:

在下面的示例中,将对 GEL 参数 a 进行平方运算:

square(a) { return a*a; }

此函数可由其他 GEL 函数使用,也可直接从表达式视图中调用:

../_images/gel_function_expressions.png

由于 a 是一个 GEL 参数,因此无需在函数或目标代码中定义。

使用目标变量:

GEL 函数还可以修改目标上的数据。在下面的示例中,符号 limitCountcurrentIterationnextIteration 必须存在于加载到目标器件的代码中。

函数作为 GEL 文件的一部分加载后,可以使用指定的参数从任何其他位置(表达式视图、其他 GEL 函数)执行。像 MyFunc(100, 0)MyFunc(200) 这样的调用都是有效的。

MyFunc(maxValue, currentValue) { if (maxValue == currentValue) limitCount = maxValue; else { currentIteration = currentValue; nextIteration--; } }

使用对话框和说明:

每个参数后面都可以有一个描述其用法的可选字符串。此说明用于使用 dialog 函数时创建的对话框中。

在下面的示例中,对话框 GEL 函数 Init 有三个参数,每个参数都有其自己的描述:

dialog Init(filename "File to be Loaded", cpuName "CPU Name", initValue "Initialization Value") { GEL_Load(filename, cpuName); a = initValue; }

在上面的 Init 函数中,变量 a 不是在函数参数中定义的。因此,必须在加载到目标器件的代码上定义它。否则,将产生错误。

此对话框会将 Init 添加到 Scripts 菜单栏。

点击函数 Init,将显示以下对话框:

../_images/gel_function_dialog.png

上述 Init 函数将调用内置函数GEL_Load。此函数需要以下参数:

  • 一个标识第一个参数的文件名的字符串
  • 一个带有 CPU 名称的可选参数。此参数在设置多个内核或处理器时非常有用。
  • 一个初始化值

也可以从 GEL 文件内部调用 dialog 函数。对该函数的有效调用示例如下:

Init("c:\\workspace\\myProject\\Debug\\myProject.out", "C28xx_CPU1", 0);

___

另请参阅:

GEL 函数:按字母顺序排列的列表