编写硬件特定的 C/C++ 代码
在大多数情况下,要将设备驱动代码集成到 Simulink® 模块中,您需要围绕硬件供应商提供的 API 编写包装函数。
所有 ARM® Cortex®-A 处理器派生的支持包都使用一组通用的 C/C++ 文件进行其 GPIO 读取和写入操作。
按照以下步骤访问实现数字读取和写入功能所需的 C/C++ 代码:
打开用于 ARM Cortex-A 处理器的 C 头文件
MW_gpio.h。edit(fullfile(codertarget.arm_cortex_a.internal.getSpPkgRootDir,'include','MW_gpio.h'))
该头文件提供在 System object 中调用的 C 函数原型。
// Copyright 2012-2015 The MathWorks, Inc. #ifndef _MW_GPIO_H_ #define _MW_GPIO_H_ #include "rtwtypes.h" #ifdef __cplusplus extern "C" { #endif // Common definitions #define GPIO_MAX_BUF (128) #define GPIO_DIRECTION_INPUT (1) // MATLAB numbering #define GPIO_DIRECTION_OUTPUT (2) extern void MW_gpioInit(int32_T gpio, boolean_T direction); extern void MW_gpioTerminate(int32_T gpio); extern boolean_T MW_gpioRead(int32_T gpio); extern void MW_gpioWrite(int32_T gpio, boolean_T value); #ifdef __cplusplus } #endif #endif
将文件
MW_gpio.h的副本保存到设备驱动工程文件夹的包含文件夹include中,请参阅创建工程文件夹。打开用于 ARM Cortex-A 处理器的 C 源文件
MW_gpio.c。edit(fullfile(codertarget.arm_cortex_a.internal.getSpPkgRootDir,'src','MW_gpio.c'))
将文件
MW_gpio.c的副本保存到设备驱动工程文件夹的源文件夹src中,请参阅创建工程文件夹。
警告
不要修改 ARM Cortex-A 目录中的 MW_gpio.h 和 MW_gpio.c 文件。
许多硬件设备不支持或不推荐使用 C++ 编译器。为了使用 C 编译器编译和链接 C++ 函数,您需要在每个函数声明中添加 extern "C" 标识符,以指示编译器不要修饰函数名称,以便它们可以与 C 链接器结合使用。
MW_gpio.c 函数包含 MW_gpio.h 文件,该文件定义 GPIO 引脚的初始化、读取、写入和终止函数。请注意,Simulink 数据类型用于 gpio 和 direction 变量。因此,rtwtypes.h 文件包含在 MW_gpio.h 中。每当您引用 Simulink 数据类型时,必须包含此文件。由于 gpio 是介于 0 和 53 之间的数字,因此使用 uint8_T 数据类型来表示此变量。变量 in 是要写入数字输出引脚的值,由 boolean_T 数据类型表示。
在下一节中,您将为 System object 选择 System object 模板。