Pegasus开发环境

news2024/12/31 6:43:51

文章目录

    • Pegasus开发环境
      • 开发环境部署
        • 步骤1 安装 vs code
        • 步骤2 DecEco Device Tool 下载安装
        • 步骤3 下载Hi3861 Openharmony SDK
        • 步骤4 下载开发者工具
        • 步骤5 工程管理配置
          • 1. 打开DevEco Device Tool 主页 导入工程
          • 2. 选择Hi3861 Openharmony SDK目录
          • 3. 芯片选型
          • 4. 进行后续代码开发、编译、烧录
        • 步骤6 编译、烧录
          • 1. 配置开发工具路径
          • 2. 编译
          • 3. 烧录
      • 测试程序-led闪烁
        • 1. 创建子模块文件夹
        • 2. 子模块程序编写
        • 3. 修改工程配置文件
        • 4. 编译、烧录

Pegasus开发环境

HUAWEI DevEco Device Tool

以插件的形式部署在Visual Studio Code上

开发环境部署

步骤1 安装 vs code

Visual Studio Code - Code Editing. Redefined

步骤2 DecEco Device Tool 下载安装

华为集成开发环境IDE DevEco Device Tool下载 | HarmonyOS设备开发

  • 解压后安装

  • 选择安装路径

安装完成后打开vs code可以发现扩展图标

在这里插入图片描述

步骤3 下载Hi3861 Openharmony SDK

https://gitee.com/wgm2022/hi3861_for_AI_topic

步骤4 下载开发者工具

https://hispark.obs.cn-east-3.myhuaweicloud.com/DevTools_Hi3861V100_v1.0.zip

解压后目录
在这里插入图片描述

步骤5 工程管理配置

1. 打开DevEco Device Tool 主页 导入工程

在这里插入图片描述

2. 选择Hi3861 Openharmony SDK目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQbTNLbq-1688213901157)(pic/image-20230701192129230.png)]

3. 芯片选型

SOC栏选择Hi3861, 开发板选择hi3861, 框架栏选择Hb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqe86pqw-1688213901158)(pic/image-20230701192247140.png)]

4. 进行后续代码开发、编译、烧录

Pegasus相关代码路径:

hi3861_for_AI_topic-master\src\vendor\hisilicon\hispark_pegasus\demo\

步骤6 编译、烧录

1. 配置开发工具路径

点击工程配置,配置compiler_bin_path选项为下载好的开发工具目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o82x5LMn-1688213901159)(pic/image-20230701192720063.png)]

2. 编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JfnA7Z08-1688213901159)(pic/image-20230701192744525.png)]

3. 烧录

连接设备后,选择对应的COM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xmqx7sEF-1688213901160)(pic/image-20230701195957028.png)]

烧录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBpVR67G-1688213901160)(pic/image-20230701192831327.png)]

测试程序-led闪烁

1. 创建子模块文件夹

在hi3861_for_AI_topic-master\src\applications\sample\wifi-iot\app目录下创建led_demo文件夹

2. 子模块程序编写

led_demo文件夹中的文件结构如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eR3lt8II-1688213901161)(pic/image-20230701201058862.png)]

  • app_demo_led_control.c

    #include <stdio.h>
    #include <unistd.h>
    #include "ohos_init.h"
    #include "cmsis_os2.h"
    #include "iot_gpio.h"
    #include "iot_watchdog.h"
    #include "hi_io.h"
    
    
    #define IOT_GPIO_IDX_10 9 // for hispark_pegasus
    
    static void *LedCntrolDemo(const char *arg)
    {
        (void)arg;
        printf("LedTask start\r\n");
        // 配置GPIO引脚号和输出值
        while(1){
            IoTGpioSetOutputVal(IOT_GPIO_IDX_10, IOT_GPIO_VALUE1);
            TaskMsleep(800);
            IoTGpioSetOutputVal(IOT_GPIO_IDX_10, IOT_GPIO_VALUE0);
            TaskMsleep(800);
        }
        return NULL;
    }
    
    static void LedControlTask(void)
    {
        osThreadAttr_t attr;
        // 初始化GPIO
        IoTGpioInit(IOT_GPIO_IDX_10);
        // 设置GPIO为输出方向
        IoTGpioSetDir(IOT_GPIO_IDX_10, IOT_GPIO_DIR_OUT);
    
        attr.name = "LedCntrolDemo";
        attr.attr_bits = 0U;
        attr.cb_mem = NULL;
        attr.cb_size = 0U;
        attr.stack_mem = NULL;
        attr.stack_size = 1024; /* 堆栈大小为1024 */
        attr.priority = osPriorityNormal;
        // 报错
        if (osThreadNew((osThreadFunc_t)LedCntrolDemo, NULL, &attr) == NULL) {
            printf("[LedExample] Failed to create LedTask!\n");
        }
    }
    
    SYS_RUN(LedControlTask);
    
  • hal_iot_gpio_ex.c

    #include "iot_errno.h"
    #include "iot_gpio_ex.h"
    #include "hi_gpio.h"
    #include "hi_io.h"
    #include "hi_task.h"
    #include "hi_types_base.h"
    
    unsigned int IoSetPull(unsigned int id, IotIoPull val)
    {
        if (id >= HI_GPIO_IDX_MAX) {
            return IOT_FAILURE;
        }
        return hi_io_set_pull((hi_io_name)id, (hi_io_pull)val);
    }
    
    unsigned int IoSetFunc(unsigned int id, unsigned char val)
    {
        if (id >= HI_GPIO_IDX_MAX) {
            return IOT_FAILURE;
        }
        return hi_io_set_func((hi_io_name)id, val);
    }
    
    unsigned int TaskMsleep(unsigned int ms)
    {
        if (ms <= 0) {
            return IOT_FAILURE;
        }
        return hi_sleep((hi_u32)ms);
    }
    
  • iot_gpio_ex.h

    #ifndef IOT_GPIO_EX_H
    #define IOT_GPIO_EX_H
    
    /**
     * @file iot_gpio_ex.h
     *
     * @brief Declares the extended GPIO interface functions.
     *
     * These functions are used for settings GPIO pulls and driver strength. \n
     *
     * @since 1.0
     * @version 1.0
     */
    
    /**
     * @brief Enumerates GPIO pull-up or pull-down settings.
     */
    typedef enum {
        /** No pull */
        IOT_IO_PULL_NONE,
        /** Pull-up */
        IOT_IO_PULL_UP,
        /** Pull-down */
        IOT_IO_PULL_DOWN,
        /** Maximum value */
        IOT_IO_PULL_MAX,
    } IotIoPull;
    
    /**
     * @ingroup iot_io
     *
     * GPIO pin ID. CNcomment:IO硬件管脚编号。CNend
     */
    typedef enum {
        IOT_IO_NAME_GPIO_0, /* <GPIO0 */
        IOT_IO_NAME_GPIO_1, /* <GPIO1 */
        IOT_IO_NAME_GPIO_2, /* <GPIO2 */
        IOT_IO_NAME_GPIO_3, /* <GPIO3 */
        IOT_IO_NAME_GPIO_4, /* <GPIO4 */
        IOT_IO_NAME_GPIO_5, /* <GPIO5 */
        IOT_IO_NAME_GPIO_6, /* <GPIO6 */
        IOT_IO_NAME_GPIO_7, /* <GPIO7 */
        IOT_IO_NAME_GPIO_8, /* <GPIO8 */
        IOT_IO_NAME_GPIO_9, /* <GPIO9 */
        IOT_IO_NAME_GPIO_10, /* <GPIO10 */
        IOT_IO_NAME_GPIO_11, /* <GPIO11 */
        IOT_IO_NAME_GPIO_12, /* <GPIO12 */
        IOT_IO_NAME_GPIO_13, /* <GPIO13 */
        IOT_IO_NAME_GPIO_14, /* <GPIO14 */
        IOT_IO_NAME_SFC_CSN, /* <SFC_CSN */
        IOT_IO_NAME_SFC_IO1, /* <SFC_IO1 */
        IOT_IO_NAME_SFC_IO2, /* <SFC_IO2 */
        IOT_IO_NAME_SFC_IO0, /* <SFC_IO0 */
        IOT_IO_NAME_SFC_CLK, /* <SFC_CLK */
        IOT_IO_NAME_SFC_IO3, /* <SFC_IO3 */
        IOT_IO_NAME_MAX,
    } IotIoName;
    
    /**
     * @ingroup iot_io
     *
     * GPIO_0 pin function.CNcomment:GPIO_0管脚功能。CNend
     */
    typedef enum {
        IOT_IO_FUNC_GPIO_0_GPIO,
        IOT_IO_FUNC_GPIO_0_UART1_TXD = 2,
        IOT_IO_FUNC_GPIO_0_SPI1_CK,
        IOT_IO_FUNC_GPIO_0_JTAG_TDO,
        IOT_IO_FUNC_GPIO_0_PWM3_OUT,
        IOT_IO_FUNC_GPIO_0_I2C1_SDA,
    } IotIoFuncGpio0;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_1 pin function.CNcomment:GPIO_1管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_1_GPIO,
        IOT_IO_FUNC_GPIO_1_UART1_RXD = 2,
        IOT_IO_FUNC_GPIO_1_SPI1_RXD,
        IOT_IO_FUNC_GPIO_1_JTAG_TCK,
        IOT_IO_FUNC_GPIO_1_PWM4_OUT,
        IOT_IO_FUNC_GPIO_1_I2C1_SCL,
        IOT_IO_FUNC_GPIO_1_BT_FREQ,
    } IotIoFuncGpio1;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_2 pin function.CNcomment:GPIO_2管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_2_GPIO,
        IOT_IO_FUNC_GPIO_2_UART1_RTS_N = 2,
        IOT_IO_FUNC_GPIO_2_SPI1_TXD,
        IOT_IO_FUNC_GPIO_2_JTAG_TRSTN,
        IOT_IO_FUNC_GPIO_2_PWM2_OUT,
        IOT_IO_FUNC_GPIO_2_SSI_CLK = 7,
    } IotIoFuncGpio2;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_3 pin function.CNcomment:GPIO_3管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_3_GPIO,
        IOT_IO_FUNC_GPIO_3_UART0_TXD,
        IOT_IO_FUNC_GPIO_3_UART1_CTS_N,
        IOT_IO_FUNC_GPIO_3_SPI1_CSN,
        IOT_IO_FUNC_GPIO_3_JTAG_TDI,
        IOT_IO_FUNC_GPIO_3_PWM5_OUT,
        IOT_IO_FUNC_GPIO_3_I2C1_SDA,
        IOT_IO_FUNC_GPIO_3_SSI_DATA,
    } IotIoFuncGpio3;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_4 pin function.CNcomment:GPIO_4管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_4_GPIO,
        IOT_IO_FUNC_GPIO_4_UART0_RXD = 2,
        IOT_IO_FUNC_GPIO_4_JTAG_TMS = 4,
        IOT_IO_FUNC_GPIO_4_PWM1_OUT,
        IOT_IO_FUNC_GPIO_4_I2C1_SCL,
    } IotIoFuncGpio4;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_5 pin function.CNcomment:GPIO_5管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_5_GPIO,
        IOT_IO_FUNC_GPIO_5_UART1_RXD = 2,
        IOT_IO_FUNC_GPIO_5_SPI0_CSN,
        IOT_IO_FUNC_GPIO_5_PWM2_OUT = 5,
        IOT_IO_FUNC_GPIO_5_I2S0_MCLK,
        IOT_IO_FUNC_GPIO_5_BT_STATUS,
    } IotIoFuncGpio5;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_6 pin function.CNcomment:GPIO_6管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_6_GPIO,
        IOT_IO_FUNC_GPIO_6_UART1_TXD = 2,
        IOT_IO_FUNC_GPIO_6_SPI0_CK,
        IOT_IO_FUNC_GPIO_6_PWM3_OUT = 5,
        IOT_IO_FUNC_GPIO_6_I2S0_TX,
        IOT_IO_FUNC_GPIO_6_COEX_SWITCH,
    } IotIoFuncGpio6;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_7 pin function.CNcomment:GPIO_7管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_7_GPIO,
        IOT_IO_FUNC_GPIO_7_UART1_CTS_N = 2,
        IOT_IO_FUNC_GPIO_7_SPI0_RXD,
        IOT_IO_FUNC_GPIO_7_PWM0_OUT = 5,
        IOT_IO_FUNC_GPIO_7_I2S0_BCLK,
        IOT_IO_FUNC_GPIO_7_BT_ACTIVE,
    } IotIoFuncGpio7;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_8 pin function.CNcomment:GPIO_8管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_8_GPIO,
        IOT_IO_FUNC_GPIO_8_UART1_RTS_N = 2,
        IOT_IO_FUNC_GPIO_8_SPI0_TXD,
        IOT_IO_FUNC_GPIO_8_PWM1_OUT = 5,
        IOT_IO_FUNC_GPIO_8_I2S0_WS,
        IOT_IO_FUNC_GPIO_8_WLAN_ACTIVE,
    } IotIoFuncGpio8;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_9 pin function.CNcomment:GPIO_9管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_9_GPIO,
        IOT_IO_FUNC_GPIO_9_I2C0_SCL,
        IOT_IO_FUNC_GPIO_9_UART2_RTS_N,
        IOT_IO_FUNC_GPIO_9_SDIO_D2,
        IOT_IO_FUNC_GPIO_9_SPI0_TXD,
        IOT_IO_FUNC_GPIO_9_PWM0_OUT,
        IOT_IO_FUNC_GPIO_9_I2S0_MCLK = 7,
    } IotIoFuncGpio9;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_10 pin function.CNcomment:GPIO_10管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_10_GPIO,
        IOT_IO_FUNC_GPIO_10_I2C0_SDA,
        IOT_IO_FUNC_GPIO_10_UART2_CTS_N,
        IOT_IO_FUNC_GPIO_10_SDIO_D3,
        IOT_IO_FUNC_GPIO_10_SPI0_CK,
        IOT_IO_FUNC_GPIO_10_PWM1_OUT,
        IOT_IO_FUNC_GPIO_10_I2S0_TX = 7,
    } IotIoFuncGpio10;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_11 pin function.CNcomment:GPIO_11管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_11_GPIO,
        IOT_IO_FUNC_GPIO_11_UART2_TXD = 2,
        IOT_IO_FUNC_GPIO_11_SDIO_CMD,
        IOT_IO_FUNC_GPIO_11_SPI0_RXD,
        IOT_IO_FUNC_GPIO_11_PWM2_OUT,
        IOT_IO_FUNC_GPIO_11_RF_TX_EN_EXT,
        IOT_IO_FUNC_GPIO_11_I2S0_RX,
    } IotIoFuncGpio11;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_12 pin function.CNcomment:GPIO_12管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_12_GPIO,
        IOT_IO_FUNC_GPIO_12_UART2_RXD = 2,
        IOT_IO_FUNC_GPIO_12_SDIO_CLK,
        IOT_IO_FUNC_GPIO_12_SPI0_CSN,
        IOT_IO_FUNC_GPIO_12_PWM3_OUT,
        IOT_IO_FUNC_GPIO_12_RF_RX_EN_EXT,
        IOT_IO_FUNC_GPIO_12_I2S0_BCLK,
    } IotIoFuncGpio12;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_13 pin function.CNcomment:GPIO_13管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_13_SSI_DATA,
        IOT_IO_FUNC_GPIO_13_UART0_TXD,
        IOT_IO_FUNC_GPIO_13_UART2_RTS_N,
        IOT_IO_FUNC_GPIO_13_SDIO_D0,
        IOT_IO_FUNC_GPIO_13_GPIO,
        IOT_IO_FUNC_GPIO_13_PWM4_OUT,
        IOT_IO_FUNC_GPIO_13_I2C0_SDA,
        IOT_IO_FUNC_GPIO_13_I2S0_WS,
    } IotIoFuncGpio13;
    
    /**
    * @ingroup iot_io
    *
    * GPIO_14 pin function.CNcomment:GPIO_14管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_GPIO_14_SSI_CLK,
        IOT_IO_FUNC_GPIO_14_UART0_RXD,
        IOT_IO_FUNC_GPIO_14_UART2_CTS_N,
        IOT_IO_FUNC_GPIO_14_SDIO_D1,
        IOT_IO_FUNC_GPIO_14_GPIO,
        IOT_IO_FUNC_GPIO_14_PWM5_OUT,
        IOT_IO_FUNC_GPIO_14_I2C0_SCL,
    } IotIoFuncGpio14;
    
    /**
    * @ingroup iot_io
    *
    * SFC_CSN pin function.CNcomment:SFC_CSN管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_SFC_CSN_SFC_CSN,
        IOT_IO_FUNC_SFC_CSN_SDIO_D2,
        IOT_IO_FUNC_SFC_CSN_GPIO9,
        IOT_IO_FUNC_SFC_CSN_SPI0_TXD = 4,
    } IotIoFuncSfcCsn;
    
    /**
    * @ingroup iot_io
    *
    * SFC_DO pin function.CNcomment:SFC_DO管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_SFC_IO_1_SFC_DO,
        IOT_IO_FUNC_SFC_IO_1_SDIO_D3,
        IOT_IO_FUNC_SFC_IO_1_GPIO10,
        IOT_IO_FUNC_SFC_IO_1_SPI0_CK = 4,
    } IotIoFuncSfcIo1;
    
    /**
    * @ingroup iot_io
    *
    * SFC_WPN pin function.CNcomment:SFC_WPN管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_SFC_IO_2_SFC_WPN,
        IOT_IO_FUNC_SFC_IO_2_SDIO_CMD,
        IOT_IO_FUNC_SFC_IO_2_GPIO11,
        IOT_IO_FUNC_SFC_IO_2_RF_TX_EN_EXT,
        IOT_IO_FUNC_SFC_IO_2_SPI0_RXD,
    } IotIoFuncSfcIo2;
    
    /**
    * @ingroup iot_io
    *
    * SFC_DI pin function.CNcomment:SFC_DI管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_SFC_IO_0_SFC_DI,
        IOT_IO_FUNC_SFC_IO_0_SDIO_CLK,
        IOT_IO_FUNC_SFC_IO_0_GPIO12,
        IOT_IO_FUNC_SFC_IO_0_RF_RX_EN_EXT,
        IOT_IO_FUNC_SFC_IO_0_SPI0_CSN,
    } IotIoFuncSfcIo0;
    
    /**
    * @ingroup iot_io
    *
    * SFC_CLK pin function.CNcomment:SFC_CLK管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_SFC_CLK_SFC_CLK,
        IOT_IO_FUNC_SFC_CLK_SDIO_D0,
        IOT_IO_FUNC_SFC_CLK_GPIO13,
        IOT_IO_FUNC_SFC_CLK_SSI_DATA = 4,
    } IotIoFuncSfcClk;
    
    /**
    * @ingroup iot_io
    *
    * SFC_HOLDN pin function.CNcomment:SFC_HOLDN管脚功能。CNend
    */
    typedef enum {
        IOT_IO_FUNC_SFC_IO_3_SFC_HOLDN,
        IOT_IO_FUNC_SFC_IO_3_SDIO_D1,
        IOT_IO_FUNC_SFC_IO_3_GPIO14,
        IOT_IO_FUNC_SFC_IO_3_SSI_CLK = 4,
    } IotIoFuncSfcIo3;
    
    /**
    * @ingroup iot_io
    *
    * I/O drive capability.CNcomment:IO驱动能力。CNend
    * Note: The HI_IO_NAME_GPIO_0~HI_IO_NAME_GPIO_11 and HI_IO_NAME_GPIO_13~HI_IO_NAME_GPIO_14 driver capabilities are
    *       optional.The value range is HI_IO_DRIVER_STRENGTH_0~HI_IO_DRIVER_STRENGTH_3, and the other I/O ranges are
    *       HI_IO_DRIVER_STRENGTH_0~HI_IO_DRIVER_STRENGTH_7.CNcomment:注意:HI_IO_NAME_GPIO_0~HI_IO_NAME_GPIO_11、
    *       HI_IO_NAME_GPIO_13~HI_IO_NAME_GPIO_14驱动能力可选范围是HI_IO_DRIVER_STRENGTH_0~HI_IO_DRIVER_STRENGTH_3,
    *       其余IO范围是HI_IO_DRIVER_STRENGTH_0~HI_IO_DRIVER_STRENGTH_7。CNend
    */
    typedef enum {
        IOT_IO_DRIVER_STRENGTH_0 = 0,   /* <Drive strength level 0 (highest).CNcomment:驱动能力0级,驱动能力最高CNend */
        IOT_IO_DRIVER_STRENGTH_1,   /* <Drive strength level 1.CNcomment:驱动能力1级CNend */
        IOT_IO_DRIVER_STRENGTH_2,   /* <Drive strength level 2.CNcomment:驱动能力2级CNend */
        IOT_IO_DRIVER_STRENGTH_3,   /* <Drive strength level 3.CNcomment:驱动能力3级CNend */
        IOT_IO_DRIVER_STRENGTH_4,   /* <Drive strength level 4.CNcomment:驱动能力4级CNend */
        IOT_IO_DRIVER_STRENGTH_5,   /* <Drive strength level 5.CNcomment:驱动能力5级CNend */
        IOT_IO_DRIVER_STRENGTH_6,   /* <Drive strength level 6.CNcomment:驱动能力6级CNend */
        IOT_IO_DRIVER_STRENGTH_7,   /* <Drive strength level 7 (lowest).CNcomment:驱动能力7级,驱动能力最低CNend */
        IOT_IO_DRIVER_STRENGTH_MAX,
    } IotIoDriverStrength;
    
    
    unsigned int IoSetPull(unsigned int id, IotIoPull val);
    
    
    unsigned int IoSetFunc(unsigned int id, unsigned char val);
    
    unsigned int TaskMsleep(unsigned int ms);
    
    #endif
    /** @} */
    
    
  • BUILD.gn

    static_library("ledDemo") {
      sources = [
        "app_demo_led_control.c",
        "hal_iot_gpio_ex.c",
      ]
    
      include_dirs = [
        "./",
        "//commonlibrary/utils_lite/include",
        "//kernel/liteos_m/kal/cmsis",
        "//base/iot_hardware/peripheral/interfaces/kits",
      ]
    }
    

3. 修改工程配置文件

修改hi3861_for_AI_topic-master\src\applications\sample\wifi-iot\app目录下的BUILD.gn文件

import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
        "led_demo:ledDemo",
    ]
}

4. 编译、烧录

烧录、重启后即可看到板载led灯闪烁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring ServiceLocatorFactoryBean 小结

前言 偶然看到一篇微信公众号文章的分享 https://mp.weixin.qq.com/s/11VKseROGVcJHPCJ8xQ3XA&#xff0c;感觉挺有意思&#xff0c;在这里记录下。 为什么感觉有意思呢&#xff1f;是因为它通过spring 提供的ServiceLocatorFactoryBean 来实现服务定位模式&#xff0c;将服务…

linux-2.6.22.6内核i2c驱动框架源码分析

i2c是常见的通信协议&#xff0c;协议比较简单&#xff0c;只有数据和时钟两条线&#xff08;SDA和SCL&#xff09;&#xff0c;i2c的通信分为主机和从机&#xff0c;主机一般占主导地位&#xff0c;从机可以有多个。 i2c通信的数据格式为(SDA上的数据)&#xff1a;开始的7位里…

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

机器学习实战8-基于XGBoost和LSTM的台风强度预测模型训练与应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战8-基于XGBoost和LSTM的台风强度预测模型训练与应用&#xff0c;今年夏天已经来了&#xff0c;南方的夏天经常会有台风登陆&#xff0c;给人们生活带来巨大的影响&#xff0c;本文主要基于XGBoost模型和…

Python3 错误和异常 | 菜鸟教程(十五)

目录 一、简述 二、语法错误 三、异常 四、异常处理 &#xff08;一&#xff09;try/except 1、异常捕捉可以使用 try/except 语句。 2、以下例子中&#xff0c;让用户输入一个合法的整数&#xff0c;但是允许用户中断这个程序&#xff08;使用 Control-C 或者操作系统提供…

ChatGPT从入门到精通学习路线

课程名称适应人群 ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视 点击上述名称&#xff0c;学习完整视频 全面AI时代就在转角&#xff0c;道路已经铺好了“局外人”or“先行者”就在此刻等你决定 1、对ChatGPT感兴趣并希望有人手把手教学的新手 …

apex/amp 安装问题解决

如何安装&#xff1a; 首先 pip uninstall apex卸载、apex文件夹也删除&#xff0c; 重新安装&#xff0c;具体安装步骤如下&#xff1a; git clone https://www.github.com/nvidia/apex cd apex python setup.py install --cuda_ext --cpp_ext 只要出现了下面的语句就是完成…

人工智能数学基础2:利用SciPy中的数值积分常用函数求定积分

利用SciPy中的数值积分常用函数求定积分 21/82.625 方法一&#xff1a;在 SciPy 库中&#xff0c;可以使用 quad 函数来进行数值积分。具体实现代码如下&#xff1a; from scipy.integrate import quaddef integrand(x):return x**2 1/x**4 # 定义被积函数result, error q…

vue+leaflet笔记之地图卷帘

vueleaflet笔记之地图卷帘 本文介绍了Web端使用Leaflet开发库实现地图卷帘效果的方法 (底图来源:中科星图)&#xff0c;结合leaflet-side-by-side插件可以快速简单地实现地图分屏对比效果 &#xff0c;示例效果如下图所示。 开发环境 Vue开发库&#xff1a;3.2.37 & Leaf…

FPGA-DFPGL22学习5-VERILOG

系列文章之 上章 FPGA-DFPGL22学习4-仿真平台学习 文章目录 系列文章之 上章前言一、Verilog 简介二、Verilog基础1.逻辑值2.进制3.标识符4.数据类型寄存器类型线网类型参数类型 5.运算符 三、Verilog 程序框架1.注释2.关键字3.程序框架 四、Verilog 程序语句1.结构语句2.赋值…

微信小程序+SpringBoot接入后台服务,接口数据来自后端

前言 前两天开发了一个微信小程序项目&#xff0c;只不过接口数据是自己设置的假数据。然后我就想将这些假数据替换掉。这些数据来自接口&#xff0c;之前做过前后端分离的项目&#xff0c;我就想能不能直接调用那些后端数据接口。结果是可以的。以下是自己编写的部分方法 步骤…

卷积神经网络--猫狗系列之下载、导入数据集

(由于是学习&#xff0c;所以文章会有一些报错及解决办法) 在Kaggle()获取数据集&#xff1a;&#xff08;没有账号先去注册一个账号&#xff0c;在注册时可能会出现的问题见Kaggle注册出现一排“Captcha must be filled out.”&#xff01;&#xff09; https://www.kaggle.…

DOM编程事件与简单编程

文章目录 事件绑定绑定式事件监听方法event 事件对象client、offsetkeyCode 键盘事件事件冒泡阻止浏览器默认行为 DOM编程用户名输入框长度限制鼠标移入移出复选框全选DOM编程实现动态时钟第一种&#xff1a;第二种&#xff1a;第三种&#xff1a; 事件绑定 DOM编程中的事件&a…

excel只显示想要的内容

是 后面的FG等列是不需要的&#xff0c;选择F列&#xff0c;ctrl shift 右箭头 。选中后隐藏。

Ansible创建逻辑卷

Ansible创建逻辑卷&#xff1a; 环境准备&#xff1a; 清单文件&#xff1a; [dev] 192.168.110.129 [prod] 192.168.110.132 [all:vars] ansible_userroot ansible_passwordredhat磁盘准备&#xff1a; 在一台主机上添加一块sata接口的磁盘&#xff0c;一块不添加。 192.…

Linux--获取一长串目录的结构指令:tree

注意&#xff1a;这个tree指令不是Linux自带的&#xff0c;需要下载 yum install -y tree (-y的作用是免确定) 示例&#xff1a;

UE5 读写本地JSON,发送HTTP请求(get)

UE5 读写本地JSON&#xff0c;发送HTTP请求&#xff08;get&#xff09; 没有使用插件&#xff0c;就用UE提供的库开发&#xff08;推荐使用插件VaRest在虚幻商城里有&#xff09; PCHUsage PCHUsageMode.UseExplicitOrSharedPCHs;PublicDependencyModuleNames.AddRange(new …

win10 编译hadoop源码报错

报错信息&#xff1a; 信息: 用提供的模式无法找到文件。 "devenv command was not found. Verify your compiler installation level."解决方案 右键&#xff0c;以管理员身份打开 之后再次执行mvn 命令即可. 也可以再打开的时候先执行一下命令&#xff1a; dev…

数字化是信息化的升级吗?数字化信息化这两者有什么联系和区别?

也可以这样说吧&#xff0c;但总是太抽象&#xff0c;不准确的&#xff0c;两者还是有很大区别的。 首先来看信息化、数字化具体是什么意思 想要明白两者之间的差异&#xff0c;首先要搞清楚他们的出处—— 所谓信息化、数字化还有现在提很多的智能化&#xff0c;其实都是从…

如何免费将springboot+vue项目部署上线(云服务器+宝塔面板)

本文整个流程是在博主完成一次项目上线全过程后复盘的记录&#xff0c;有没有写到的细节不清楚的可以私聊提问&#xff0c;这里选用的是阿里云服务器&#xff0c;阿里云对学生用户可以免费使用一个月服务器&#xff0c;不定期也有活动&#xff0c;我白嫖了7个月服务器&#xff…