【开发板试用】3. WiFi IoT智能家居套件 - Helloworld及开发框架

hcl0317
发布于 2020-11-8 14:32
浏览
3收藏

参考官方教程:Hi3861开发板第一个示例程序

1.目录结构规划

在app下新增业务hello_world,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:

.
└── applications
    └── sample
        └── wifi-iot
            └── app
                │── hello_world
                │  │── hello_world.c
                │  └── BUILD.gn
                └── BUILD.gn
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

 

2. hello_world.c 源码

/*
业务代码的架构
1.任务处理函数HelloWorld_Task,实现业务初始化,并在while(1)中实现循环处理的业务
2.任务入口函数HelloWorld_Entry:实现任务的初始化,并注册任务处理函数
3.调用鸿蒙SYS_RUN(HelloWorld_Entry); 实现业务的注册
*/

#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"

/*1. 任务函数:hello_world任务*/
static void* HelloWorld_Task(const char* arg)
{
    (void)arg;
    printf("[HelloWorld] HelloWorld_Task()\n");

    while(1)
    {
        //logic code for task
        usleep(500000);//us延时
    }
 
    return NULL;
}

/*2.任务入口函数:实现任务的初始化*/
static void HelloWorld_Entry(void)
{
    osThreadAttr_t attr = {0};

    printf("[HelloWorld] HelloWorld_Entry()\n");

    attr.name = "HelloWorld_Task";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = 1024;
    attr.priority = osPriorityNormal;

    if (osThreadNew((osThreadFunc_t)HelloWorld_Task, NULL, &attr) == NULL)
    {
        printf("[HelloWorld] Falied to create LedTask!\n");
    }
}

SYS_RUN(HelloWorld_Entry);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.

 

3. 业务代码的编译脚本 BUILD.gn

路径:code\applications\sample\wifi-iot\app\hello_world\BUILD.gn

static_library("hello_world_app") {
    sources = [
        "hello_world.c"
    ]

    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/components/cmsis/2.0",
        "//base/iot_hardware/interfaces/kits/wifiiot_lite",
    ]
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

 

4.模块的编译脚本BUILD.gn

路径:code\applications\sample\wifi-iot\app\BUILD.gn

import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
        "startup",
        "hello_world:hello_world_app",
    ]
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

 

5.执行结果:

【开发板试用】3. WiFi IoT智能家居套件 - Helloworld及开发框架-鸿蒙开发者社区

6.总结

注意业务代码的项目路径,一定是在code\applications\sample\wifi-iot\app\目录下,按照业务进行新建文件夹

一个业务,可以理解为一个任务或者一个线程,比如OLED液晶显示可以单独做为一个业务,流水灯可以单独作为一个业务。

后续代码,简单的功能会继续在hello_world业务上进行添加,比如LED流水灯、按键中断灯,复杂的功能(比如WIFI,OLED显示)会重新起一个新的业务。

 

 

 

hello_world.zip 1.45K 66次下载
已于2020-11-30 15:19:40修改
4
收藏 3
回复
举报
4
4
3
4条回复
按时间正序
/
按时间倒序
鲜橙加冰
鲜橙加冰

继续加油……………………………………

回复
2020-11-9 14:33:07
jojo
jojo

每天逛社区都能有新收获(๑•̀ㅂ•́)و✧

回复
2020-11-9 14:35:56
SummerRic
SummerRic

很不错的贴啊,学习起来~

回复
2020-11-9 14:37:04
啧啧啧GKD
啧啧啧GKD

避了个坑  谢了

回复
2020-11-9 14:39:36


回复
    相关推荐