其他分享
首页 > 其他分享> > 小熊派-季

小熊派-季

作者:互联网

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.hwifiiot_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.hsleep()和usleep()()的头文件

下载后现象

<iframe allowfullscreen="true" data-mediaembed="bilibili" id="0qIctA1F-1623811607359" src="https://player.bilibili.com/player.html?aid=631242841"></iframe>

小熊派-季 点灯

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.hwifiiot_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

命令进行编译。

标签:文件,小熊,编译,BUILD,gn,GPIO,include
来源: https://blog.csdn.net/weixin_45435521/article/details/117949451