鸿蒙3. WiFi IoT智能家居套件 - Helloworld及基本开发框架

开发 架构
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

[[351420]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

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

1.目录结构规划

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

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

2. hello_world.c 源码 

  1. /* 
  2. 业务代码的架构 
  3. 1.任务处理函数HelloWorld_Task,实现业务初始化,并在while(1)中实现循环处理的业务 
  4. 2.任务入口函数HelloWorld_Entry:实现任务的初始化,并注册任务处理函数 
  5. 3.调用鸿蒙SYS_RUN(HelloWorld_Entry); 实现业务的注册 
  6. */ 
  7.  
  8. #include <stdio.h> 
  9. #include <unistd.h> 
  10. #include "ohos_init.h" 
  11. #include "cmsis_os2.h" 
  12.  
  13. /*1. 任务函数:hello_world任务*/ 
  14. static void* HelloWorld_Task(const char* arg) 
  15.     (void)arg; 
  16.     printf("[HelloWorld] HelloWorld_Task()\n"); 
  17.  
  18.     while(1) 
  19.     { 
  20.         //logic code for task 
  21.         usleep(500000);//us延时 
  22.     } 
  23.   
  24.     return NULL
  25.  
  26. /*2.任务入口函数:实现任务的初始化*/ 
  27. static void HelloWorld_Entry(void) 
  28.     osThreadAttr_t attr = {0}; 
  29.  
  30.     printf("[HelloWorld] HelloWorld_Entry()\n"); 
  31.  
  32.     attr.name = "HelloWorld_Task"
  33.     attr.attr_bits = 0U; 
  34.     attr.cb_mem = NULL
  35.     attr.cb_size = 0U; 
  36.     attr.stack_mem = NULL
  37.     attr.stack_size = 1024; 
  38.     attr.priority = osPriorityNormal; 
  39.  
  40.     if (osThreadNew((osThreadFunc_t)HelloWorld_Task, NULL, &attr) == NULL
  41.     { 
  42.         printf("[HelloWorld] Falied to create LedTask!\n"); 
  43.     } 
  44.  
  45. SYS_RUN(HelloWorld_Entry); 

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

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

  1. static_library("hello_world_app") { 
  2.     sources = [ 
  3.         "hello_world.c" 
  4.     ] 
  5.  
  6.     include_dirs = [ 
  7.         "//utils/native/lite/include"
  8.         "//kernel/liteos_m/components/cmsis/2.0"
  9.         "//base/iot_hardware/interfaces/kits/wifiiot_lite"
  10.     ] 

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

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

  1. import("//build/lite/config/component/lite_component.gni"
  2.  
  3. lite_component("app") { 
  4.     features = [ 
  5.         "startup"
  6.         "hello_world:hello_world_app"
  7.     ] 

5.执行结果:

 

6.总结

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

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

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

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-11-13 11:53:52

4.WiFi IoT

2020-12-21 09:57:52

OLED温湿度计hi3861

2020-11-23 13:09:42

HI3861

2020-12-30 11:02:34

鸿蒙HarmonyOS智能家居

2015-08-26 10:14:28

2020-11-04 13:20:14

HiSpark

2020-10-26 10:21:39

Wi-Fi IoT智能家居套件

2021-03-09 09:56:42

物联网安全物联网IOT

2020-12-29 09:59:01

鸿蒙HarmonyOS智能家居

2020-11-24 10:05:54

人工智能

2020-12-09 11:42:18

WiFi IoT鸿蒙开发

2023-07-28 15:32:26

鸿蒙操作系统

2014-07-15 09:50:08

WiFi联网  

2024-01-04 10:20:47

OpenAI人工智能物联网

2019-12-24 19:31:27

智能家居物联网技术

2015-10-15 10:32:48

WiFi物联网智能家居

2023-08-07 15:13:09

设备开发鸿蒙

2020-12-18 11:54:43

物联网安全智能家居IOT

2021-07-15 09:39:06

鸿蒙HarmonyOS应用

2015-09-28 09:37:49

点赞
收藏

51CTO技术栈公众号