基于F28335的Simulink代码生成系列文章目录
基于F28335的Simulink代码生成(一)——搞懂模型的运行逻辑
基于F28335的Simulink代码生成(二)——EPWM模块同步设置问题
基于F28335的Simulink代码生成(三)——EQEP模块获取光电编码器的速度与角度信息
基于F28335的Simulink代码生成(四)——如何链接可以访问底层文件的外部源文件和头文件
基于F28335的Simulink代码生成(五)——DMA的使用
基于F28335的Simulink代码生成(六)——如何修改变量的存储类型
基于F28335的Simulink代码生成(七)——成果展示
前言
我写下这段代码的时候真是爽极了哈哈哈
终于找到将外部的C文件链接到底层文件的办法了,我这个C文件有点不同,它内部是需要访问底层文件的。所以该C文件需要链接工程的底层硬件文件。之前一直想通过S Function Builder的lib来链接,但是存在打不开工程内头文件的问题,指明了文件路径已经存在问题。接下来我提供一种新的方法。
链接外部需要访问底层硬件的C代码
首先需要把C文件和h文件都要放进工程文件中,注意是在生成的工程文件夹外面,如下图所示,FOC_Test_ert_rtw是我最后生成的工程,AD2S1210的C和h文件是我需要加进去的。
具体加的方式如下,打开模型的设置,进入如下设置,分别将文件放入进去。值得注意的是,C文件中除了要#include "AD2S1210.h"还要加入工程的一些头文件,这是与原来的工程是不同的,我这边参考了生成的其他C文件,一共加入了这几个头文件:
#include “c2000BoardSupport.h”
#include “DSP2833x_Device.h”
#include “DSP2833x_Examples.h”
#include “DSP2833x_GlobalPrototypes.h”
#include “AD2S1210.h”
#include “rtwtypes.h”
#include “FOC_Test2.h”
#include “FOC_Test2_private.h”
那么接下来就是对内部函数的调用即可,这里就不多说了。个人认为这时候在S函数里面也可以直接调用了,或者直接#include一下AD2S1210.h就可以了。这部分我就不多说了,试试即可。实在不行,用System out模块也行嘿嘿嘿!