梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记 原创

wx62f2888df272b
发布于 2022-8-10 00:58
浏览
0收藏

@[toc]

Hello_World

添加 Hello_World 源码文件

  • 打开 vscode 添加源码文件夹 :code1
    • 发现报错
    • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区
    • 解决:打开 RaiDrive 将设置的只读勾去掉
    • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区
  • 在 ./applications/BearPi/BearPi-HM_Nano/sample 路径下新建一个目录(或一套目录结构),用于存放业务源码文件。例如:在 ./applications/BearPi/BearPi-HM_Nano/sample 路径下新建一个 my_app 目录,然后在 my_app 下添加两个文件
    • 在./applications/BearPi/BearPi-HM_Nano/sample/my_app 路径下新建一个 hello_world.c 文件,该文件为业务源码文件
    • BUILD.gn 文件由三部分内容(目标、源文件、头文件路径)构成,在 ./applications/BearPi/BearPi-HM_Nano/sample/my_app 路径下新建 BUILD.gn 文件,该文件为业务源码编译脚本。
    • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区

写 Hello_World 业务代码

  • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区
  • #include <stdio.h> //prinf头文件
    #include "ohos_init.h" //调用APP_FEATURE_INIT(Hello_World)来启动Hello_World命令
    
    void Hello_World(void)
    {
        printf("Hello World!/r/n");
    }
    APP_FEATURE_INIT(Hello_World);
    

编写用于将业务构建成静态库的BUILD.gn文件

  • 在 .applications\BearPi\BearPi-HM_Nano\sample\my_app\BULD.gn 中添加如下代码
    static_library("myapp") {
        sources = [
            "hello_world.c"
        ]
        include_dirs = [
            "//utils/native/liteos/include"
        ]
    }
    
  • static_library中指定业务模块的编译结果,把 “hello_world.c” 文件编译为静态库文件libmyapp.a。
  • sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//“则表示绝对路径(此处为代码根路径),若不包含”//"则表示相对路径。
  • include_dirs中指定source所需要依赖的.h文件路径

编写模块BUILD.gn文件,指定需参与构建的特性模块。

  • 配置./applications/BearPi/BearPi-HM_Nano/sample/BUILD.gn文件,在features字段中增加索引"my_app:myapp",使目标模块参与编译。并屏蔽其他模块。
    • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区
  • 编译
    • 编译成功
      梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区

点亮 LED

编写点亮 LED

  • 添加源码文件
    • 在 ./applications/BearPi/BearPi-HM_Nano/sample 路径下新建一个 my_led 目录,用于存放业务源码文件
    • 在 ./applications/BearPi/BearPi-HM_Nano/sample/my_led 路径下新建一个 led_example.c 文件,该文件为业务源码文件
    • 在 ./applications/BearPi/BearPi-HM_Nano/sample/my_app 路径下新建 BUILD.gn 文件,该文件为业务源码编译脚本
    • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区
  • 编写业务代码
    • #include "ohos_init.h" //调用APP_FEATURE_INIT(Hello_World)来启动Hello_World命令
      #include "wifiiot_gpio.h"
      #include "wifiiot_gpio_ex.h"
      
      void led_example(void)
      // 点亮 led 业务代码
      {
          gpio,GpioInit(); //初始化 gpio,GpioInit 函数
          IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2,WIFI_IOT_IO_FUNC_GPIO_2_GPIO); //设置 gpio 管脚功能:普通 gpio,接在芯片上的管脚号
          GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2,WIFI_IO_GPIO_DIR_OUT); //gpio 模式为输出模式
      
          GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2,1);
      }    
      APP_FEATURE_INIT(led_example);
      
  • 编写编译构建文件BUILD.gn
    • static_library("myled") {
          sources = [
              "led_example.c"
          ]
          include_dirs = [
              "//utils/native/liteos/include",
              "//base/iot_hardware/interfaces/kits/wifiiot_lite" //添加"wifiiot_gpio.h"、"wifiiot_gpio_ex.h"路径
          ]
      }
      
  • 编写模块BUILD.gn文件,指定需参与构建的特性模块
    • 梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区

编译烧录点亮 LED

  • 报错:梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区
  • 解决:多写了一句话,导致代码错误
    • 已解决:梅科尔工作室OpenHarmony设备开发培训笔记-第2章学习笔记-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐