主要内容

编写硬件特定的 C/C++ 代码

在大多数情况下,要将设备驱动代码集成到 Simulink® 模块中,您需要围绕硬件供应商提供的 API 编写包装函数。

所有 ARM® Cortex®-A 处理器派生的支持包都使用一组通用的 C/C++ 文件进行其 GPIO 读取和写入操作。

按照以下步骤访问实现数字读取和写入功能所需的 C/C++ 代码:

  1. 打开用于 ARM Cortex-A 处理器的 C 头文件 MW_gpio.h

    edit(fullfile(codertarget.arm_cortex_a.internal.getSpPkgRootDir,'include','MW_gpio.h'))
  2. 该头文件提供在 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
    
  3. 将文件 MW_gpio.h 的副本保存到设备驱动工程文件夹的包含文件夹 include 中,请参阅创建工程文件夹

  4. 打开用于 ARM Cortex-A 处理器的 C 源文件 MW_gpio.c

    edit(fullfile(codertarget.arm_cortex_a.internal.getSpPkgRootDir,'src','MW_gpio.c'))
  5. 将文件 MW_gpio.c 的副本保存到设备驱动工程文件夹的源文件夹 src 中,请参阅创建工程文件夹

警告

不要修改 ARM Cortex-A 目录中的 MW_gpio.hMW_gpio.c 文件。

许多硬件设备不支持或不推荐使用 C++ 编译器。为了使用 C 编译器编译和链接 C++ 函数,您需要在每个函数声明中添加 extern "C" 标识符,以指示编译器不要修饰函数名称,以便它们可以与 C 链接器结合使用。

MW_gpio.c 函数包含 MW_gpio.h 文件,该文件定义 GPIO 引脚的初始化、读取、写入和终止函数。请注意,Simulink 数据类型用于 gpiodirection 变量。因此,rtwtypes.h 文件包含在 MW_gpio.h 中。每当您引用 Simulink 数据类型时,必须包含此文件。由于 gpio 是介于 0 和 53 之间的数字,因此使用 uint8_T 数据类型来表示此变量。变量 in 是要写入数字输出引脚的值,由 boolean_T 数据类型表示。

在下一节中,您将为 System object 选择 System object 模板

另请参阅

| |