> 文档中心 > OpenHarmony快速入门

OpenHarmony快速入门


编写Helloworld

创建文件夹

[git clone所在目录]bearpi-hm_nano\applications\BearPi\BearPi-HM_Nano\sample目录下创建my_app文件夹。(记好文件夹的名称一会要用)
OpenHarmony快速入门

编写HelloWorld

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

#include //导入的这个h文件是项目自带的,内部定义了APP_FEATURE_INIT#include "ohos_init.h"void HelloWorld(void){  printf("Hello World\r\n");}//harmony启动恢复接口APP_FEATURE_INIT(HelloWorld);

编写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"  ]}

gn文件不能添加注释,这里的注释只是方便解释

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

[git clone所在目录]bearpi-hm_nano\applications\BearPi\BearPi-HM_Nano\sample目录下的BUILD.gn文件
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",    ]}

gn文件不能添加注释,这里的注释只是方便解释
然后编译文件并烧录,
烧录的还是Hi3861_wifiiot_app_allinone.bin文件。

烧录完成后就可以在mobaxterm中看到Hello World
OpenHarmony快速入门

点亮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. 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"  ]}

gn文件不能添加注释,这里的注释只是方便解释
4. 修改修改模块编译构建文件BUILD.gn
在features最后一行添加

"my_leb:myleb"

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

  1. 烤录到开发板
    成功时,led灯会持续闪烁
  2. 修改led_example.c添加时led灯闪烁的代码
#include #include #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. 烧录代码
    成功后led灯缓慢闪烁10次

openharmony编译构建介绍

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

松山湖人才网