当前位置:   article > 正文

OpenHarmony快速入门_app_feature_init(hello_world);

app_feature_init(hello_world);

编写Helloworld

创建文件夹

[git clone所在目录]bearpi-hm_nano\applications\BearPi\BearPi-HM_Nano\sample目录下创建my_app文件夹。(记好文件夹的名称一会要用)
在这里插入图片描述

编写HelloWorld

在刚刚创建的my_app文件夹下,编写hello_world.c(记住名字下面要用)文件,可以不用特意创建src文件夹。

#include <stdio.h>
//导入的这个h文件是项目自带的,内部定义了APP_FEATURE_INIT
#include "ohos_init.h"

void HelloWorld(void)
{
  printf("Hello World\r\n");
}

//harmony启动恢复接口
APP_FEATURE_INIT(HelloWorld);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

编写BUILD.gn

这个BUILD.gn文件名必须大写,否则会出错.
这个文件是放在my_app文件夹下

//指定业务模块的编译结果,为静态库文件libmyapp.a,开发者根据实际情况完成填写。
static_library("myapp") {
 sources=[
  #刚刚创建,hello_world.c 注意名称要一直
  "hello_world.c"
 ]
  include_dirs=[
    #刚刚在hello_world.c文件中引入的include文件
    # 符号//表示项目的根路径
    "//utils/native/lite/include"
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

修改模块编译构建文件BUILD.gn

[git clone所在目录]bearpi-hm_nano\applications\BearPi\BearPi-HM_Nano\sample	目录下的BUILD.gn文件
  • 1
import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
		#。。。。。。。。。。省略。。。。。。。。

        #"Zx_Developer:zx_develop_sample"  ##不参与构建,为开发者贡献演示结构,其中Zx为 Z1,Z2...Z100
        #"Z1_hi3861_uart_ylc:uart_hi3861",
        #"Z2_hi3861_flash_ylc:flash_example",
        #在最后添加这一行命令,my_app就是一开始创建的my_app文件,myapp是刚才在BUILD.gn中定义的static_library后的名称。
        "my_app:myapp",
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

然后编译文件并烧录,
烧录的还是Hi3861_wifiiot_app_allinone.bin文件。

烧录完成后就可以在mobaxterm中看到Hello World
在这里插入图片描述

点亮led灯

步骤和上面差不多,所以简写

  1. sample目录下创建my_leb文件夹
  2. 创建leb_example.c文件
#include "ohos_init.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"

void led_example(void)
{
  GpioInit();
  IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
  GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_GPIO_DIR_OUT);

  GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);
}
APP_FEATURE_INIT(led_example);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. my_leb下创建BUILD.gn文件
static_library("myleb") {
 sources=[
  "led_example.c"
 ]
  include_dirs=[
    "//utils/native/lite/include",
    #这里存放wifiiot_gpio.h和wifiiot_gpio_ex.h
    "//base/iot_hardware/interfaces/kits/wifiiot_lite"
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 修改修改模块编译构建文件BUILD.gn
    在features最后一行添加
"my_leb:myleb"
  • 1

注意前面加个逗号,和上一行分开。

  1. 烤录到开发板
    成功时,led灯会持续闪烁
  2. 修改led_example.c添加时led灯闪烁的代码
#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"

void led_example(void)
{
  GpioInit();
  IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
  GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_GPIO_DIR_OUT);

  //控制led灯的闪烁
  for (int i = 0; i < 10; i++)
  {
    //设置WIFI_IOT_IO_NAME_GPIO_2,1表示亮灯
    GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);
    usleep(1000000);
    // 0表示灯灭
    GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 0);
    usleep(1000000);
  }
  GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);
}
APP_FEATURE_INIT(led_example);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  1. 烧录代码
    成功后led灯缓慢闪烁10次

openharmony编译构建介绍

ninja是一个比Makefile效率更高的编译构建工具。Google开发。
当我们在命令行运行python build.py BearPi-HM_Nano命令时,ninja就被启动了
这个BearPi-HM_Nano其实来自项目更目录下list/product/文件夹下的BearPi-HM_Nano.json

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/288667
推荐阅读
相关标签
  

闽ICP备14008679号