编写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);
编写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"
]
}
修改模块编译构建文件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",
]
}
然后编译文件并烧录,
烧录的还是Hi3861_wifiiot_app_allinone.bin
文件。
烧录完成后就可以在mobaxterm中看到Hello World
点亮led灯
步骤和上面差不多,所以简写
- 在
sample
目录下创建my_leb
文件夹 - 创建
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);
- 在
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"
]
}
- 修改修改模块编译构建文件BUILD.gn
在features最后一行添加
"my_leb:myleb"
注意前面加个逗号,和上一行分开。
- 烤录到开发板
成功时,led灯会持续闪烁 - 修改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);
- 烧录代码
成功后led灯缓慢闪烁10次
openharmony编译构建介绍
ninja是一个比Makefile效率更高的编译构建工具。Google开发。
当我们在命令行运行python build.py BearPi-HM_Nano
命令时,ninja就被启动了
这个BearPi-HM_Nano
其实来自项目更目录下list/product/
文件夹下的BearPi-HM_Nano.json