1、小熊派Hello Word
1.1添加Hello Word源码文件
(1)、打开 VMware Workstation Pro虚拟机然后通过 RaiDrive将虚拟机的文件映射到Windows上通过VS code 打开Z:\home\bearpi\project\applications目录。注意在进行内存映射之前一定要通过虚拟机打开终端输入ifconfig命令查看虚拟机ip,并将改ip填入RaiDrive中。
(2)、创建一个my_app的文件夹,进入该文件夹在创建一个D1_my_helloword的文件夹,在该问价夹中创建helloword.c文件,现在就可以在C文件中编写应用程序。
#include <stdio.h>
#include "ohos_init.h"
void helloword(void)
{
printf("hello word!\r\n");
}
APP_FEATURE_INIT(helloword);
上面是完整的代码,下面我们来看看为什么要这么做。
①、 stdio.h不用多说是C库中的头文件;
②、ohos_init.h是引用了APP_FEATURE_INIT()这个函数的头文件;
③、APP_FEATURE_INIT()这个函数的参数是传入一个函数的地址,作用是将该函数链接到指定的代码段,具体的代码段我们留到下面。
以上一个简单的程序就写好了,那么我们怎么让它参与编译呢?下面进行讲解。
1.2添加编译构建文件BUILD.gn
BUILD.gn就相当于Makefile,不过它的编译速度要比Makefile快。BUILD.gn文件在C文件同级目录下。
下面是BUILD.gn文件内容:
static_library("helloword"){
sources = [
"./helloword.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
①、static_library()中的参数是编译生成的文件名;
②、sources是C文件路径;
③、include_dirs是C文件用到的头文件的路径,"//utils/native/lite/include"是ohos_init.h头文件的路径;
注意:在BUILD.gn文件中不能用tab进行缩进,只能用空格,不让编译会报错。
1.3编写applications下的BUILD.gn
在features里添加C文件编译好的文件路径:
my_app/D1_my_helloword:helloword
冒号之前是编译好文件的路径,冒号之后是编译好的文件,该文件名一定要与最内层的BUILD.gn编译好的文件名相同。
1.4编译
将路径返回到applications文件夹的上一级路径然后用
hpm dist
命令进行编译。
下载后现象:
2、小熊派点灯
2.1添加LED源码
同样的在my_app新建一个D2_my_led文件夹,在文件夹中添加led.c文件:
LED部分原理图:
代码1:
实现功能是点亮LED
#include <stdio.h>
#include "ohos_init.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
void led(void)
{
GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2,WIFI_IOT_IO_FUNC_GPIO_2_GPIO);//设置为普通GPIO功能
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2,WIFI_IOT_GPIO_DIR_OUT);//设置GPIO的方向:设置为输出模式
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2,1);//设置输出高电平
//GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2,0);//设置输出低电平
}
APP_FEATURE_INIT(led);
①、wifiiot_gpio_ex.h和wifiiot_gpio.h头文件包含GpioInit()、IoSetFunc()、GpioSetDir()、GpioSetOutputVal()函数;
下载后现象:
代码2:
实现功能是让led灯1s间歇闪烁10次
#include <stdio.h>
#include "ohos_init.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#include "unistd.h"
void led(void)
{
GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2,WIFI_IOT_IO_FUNC_GPIO_2_GPIO);//设置为普通GPIO功能
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2,WIFI_IOT_GPIO_DIR_OUT);//设置GPIO的方向:设置为输出模式
for(int i=0;i<10;i++)
{
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2,1);//设置输出高电平
sleep(1);//秒级
//usleep(1000000);//微秒级
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2,0);//设置输出低电平
sleep(1);
//usleep(1000000);//微秒级
}
}
①、unistd.h是sleep()和usleep()()的头文件
下载后现象
小熊派-季 点灯
2.2添加编译构建文件BUILD.gn
BUILD.gn文件在C文件同级目录下。
下面是BUILD.gn文件内容:
static_library("led"){
sources = [
"./led.c"
]
include_dirs = [
"//utils/native/lite/include",
"//base/iot_hardware/interfaces/kits/wifiiot_lite"
]
}
①、static_library()中的参数是编译生成的文件名;
②、sources是C文件路径;
③、include_dirs是C文件用到的头文件的路径,"//utils/native/lite/include"是ohos_init.h头文件的路径,"//base/iot_hardware/interfaces/kits/wifiiot_lite"是wifiiot_gpio.h、wifiiot_gpio_ex.h的路径;
注意:在BUILD.gn文件中不能用tab进行缩进,只能用空格,不让编译会报错。
2.3编写applications下的BUILD.gn
在features里添加C文件编译好的文件路径:
my_app/D2_my_led:led
冒号之前是编译好文件的路径,冒号之后是编译好的文件,该文件名一定要与最内层的BUILD.gn编译好的文件名相同。
2.4编译
将路径返回到applications文件夹的上一级路径然后用
hpm dist
命令进行编译。