ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小熊派-季

2021-06-16 11:03:46  阅读:254  来源: 互联网

标签:文件 小熊 编译 BUILD gn GPIO include


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有