为Arduino库创建Simulink块,如liquidcrystal

时间:2012-10-01 02:42:01

标签: c matlab arduino simulink

我想使用Simulink为Arduino Uno硬件创建程序。但我想使用现有的库,如liquidcrystal,来处理LCD显示的输出。如何创建包含liquidcrystal类文件的s函数?

我认为s-function是要走的路,因为现有的Simulink Arduino库块实际上是被屏蔽的s函数。我正在使用Simulink学生版,所以我认为我不能从模型中编译C代码并将其合并到Arduino IDE中的项目中。

1 个答案:

答案 0 :(得分:1)

我会把我的评论变成答案......:)

好的,要从Simulink创建程序,您需要安装代码生成工具。 ver会告诉您是否有Simulink Coder和嵌入式编码器。如果你使用的是旧版本的MATLAB,那么它就叫做Real-time Workshop。如果没有其中任何一个,你就不会生成任何代码。

所以假设你可以代码生成:

可以使用S函数:http://www.mathworks.co.uk/help/simulink/s-function-basics.html

...虽然有各种工具可以帮助创建S函数。

简而言之,过程是:

  • 获取sfunc_basic.c(或其类似的)S-function C文件模板的副本并相应地填充。这无论如何都是微不足道的,它可能需要很长时间才能进行编译(见下文),并且在模型中实例化时不会导致MATLAB崩溃。
  • 使用mex命令编译(请参阅文档)。
  • 在模型中使用块。创建一个非常简单的测试工具模型。使用创建工作解决方案所需的最小模型块。
  • 创建一个TLC文件,该文件将定义如何在模型C程序中的编译和运行时使用块数据。在这里,你将打电话给liquidcrystal图书馆。
  • 代码生成/修复错误,使用TLC和/或S函数/修复生成的代码/重复错误,直到完成:)

所有这些步骤都可以进行大量扩展。这个过程有点像第一次,但你会学到很多关于S函数,model.RTW文件,TLC以及上面所有的调试。

哦,是的,调试S功能可以是一个球。准备使用像visual studio这样的东西“附加”到matlab进程来调试它。