[文章]

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】开发环境搭建及点灯"helloworld"

2020-11-8 15:06:23  155 套件 试用 开发 环境 鸿蒙系统
分享
本帖最后由 cszzlsw 于 2020-11-8 15:11 编辑

继上一次开箱帖已经快过去两周了,不是楼主懒,实在是时间不足啊,事情太多了.
看看这次咱们发现了些什么新的东西.
1.编译环境搭建
楼主所使用的环境是win10+wsl
win10系统用来下载固件和编辑代码,wsl主要就是用做编译固件
按照官网的文档:https://device.harmonyos.com/cn/ ... ld-0000001054781998
一通安装,具体要安装什么东西官网说的很清楚了,这里就不浪费篇幅了,反正干嘛的先不知道,叫安那就安呗.
前面都挺顺利,到最后下载的时候出问题,有个serialport怎么都安不上,直接折腾掉8小时以上
真是叫人火大,后来实在搞不了了,论坛也找不到答案,微信群里也得不到答案
耐着性子去看官方文档,结果就发现有一个步骤没有做,唉,真想给自己一耳光,具体见下:
链接或贴图暂时没有,又找了一遍,没找到

一通操作之后,就可以编译和下载固件了
2.点灯
眼尖的同学估计已经发现了,官方代码里面已经有点灯程序了.
但是这个点灯程序会有点问题,后面再说
首先还是祭出官方文档吧,官方文档第一篇叫你去联网,自己不走那套路
直接看第二篇:https://device.harmonyos.com/cn/ ... rt-0000001050168544
这个教程很重要,跟你讲怎么将自己的代码编译到最终的工程里去
(心疼我那4个小时的瞎摸索,大家一定要仔细看文档).
看懂了之后就在代码里面动刀子了,还好动的不大

图片

图片

整完毕脚本之后,愉快的编译及下载,
啊哦,怎么是蜂鸣器,不是灯啊
说明io口错了.查看原理图(原理图下载链接:http://www.elecfans.com/soft/49/power/2020/202010221341380.html)
到源码LED_example.c里去.把所有的io_9改成11:
  1. /*
  2. * Copyright (c) 2020 Huawei Device Co., Ltd.
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. *     http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */

  15. #include <stdio.h>

  16. #include <unistd.h>

  17. #include "ohos_init.h"
  18. #include "cmsis_os2.h"
  19. #include "wifiiot_gpio.h"
  20. #include "wifiiot_gpio_ex.h"

  21. #define LED_INTERVAL_TIME_US 300000
  22. #define LED_TASK_STACK_SIZE 512
  23. #define LED_TASK_PRIO 25

  24. enum LedState
  25. {
  26.     LED_ON = 0,
  27.     LED_OFF,
  28.     LED_SPARK,
  29. };

  30. enum LedState g_ledState = LED_SPARK;

  31. static void *LedTask(const char *arg)
  32. {
  33.     (void)arg;
  34.     while (1)
  35.     {
  36.         switch (g_ledState)
  37.         {
  38.         case LED_ON:
  39.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
  40.             usleep(LED_INTERVAL_TIME_US);
  41.             break;
  42.         case LED_OFF:
  43.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
  44.             usleep(LED_INTERVAL_TIME_US);
  45.             break;
  46.         case LED_SPARK:
  47.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
  48.             usleep(LED_INTERVAL_TIME_US);
  49.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
  50.             usleep(LED_INTERVAL_TIME_US);
  51.             break;
  52.         default:
  53.             usleep(LED_INTERVAL_TIME_US);
  54.             break;
  55.         }
  56.     }

  57.     return NULL;
  58. }

  59. static void LedExampleEntry(void)
  60. {
  61.     osThreadAttr_t attr;
  62.     printf("LedExampleEntry\n");
  63.     GpioInit();
  64.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
  65.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);

  66.     attr.name = "LedTask";
  67.     attr.attr_bits = 0U;
  68.     attr.cb_mem = NULL;
  69.     attr.cb_size = 0U;
  70.     attr.stack_mem = NULL;
  71.     attr.stack_size = LED_TASK_STACK_SIZE;
  72.     attr.priority = LED_TASK_PRIO;

  73.     if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL)
  74.     {
  75.         printf("[LedExample] Falied to create LedTask!\n");
  76.     }
  77. }

  78. SYS_RUN(LedExampleEntry);
复制代码


再来
这次对了,一个绿油油的灯闪啊闪,成功,我们的wifiiot板子已经成功跟世界说出了"hello world"

点灯成功

点灯成功

到此,第二篇帖子也水完了,小伙伴们,还犹豫什么,嗨起来.


0
2020-11-8 15:06:23   评论 分享淘帖
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖