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

描述

本文来源电子发烧友社区,作者:cszzlsw, 帖子地址:https://bbs.elecfans.com/jishu_2006333_1_1.html

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

一通操作之后,就可以编译和下载固件了
2.点灯
眼尖的同学估计已经发现了,官方代码里面已经有点灯程序了.
但是这个点灯程序会有点问题,后面再说
首先还是祭出官方文档吧,官方文档第一篇叫你去联网,自己不走那套路
直接看第二篇:https://device.harmonyos.com/cn/ ... rt-0000001050168544
这个教程很重要,跟你讲怎么将自己的代码编译到最终的工程里去
(心疼我那4个小时的瞎摸索,大家一定要仔细看文档).
看懂了之后就在代码里面动刀子了,还好动的不大
HiSpark
整完毕脚本之后,愉快的编译及下载,
啊哦,怎么是蜂鸣器,不是灯啊
说明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.  
  16. #include
  17.  
  18. #include
  19.  
  20. #include "ohos_init.h"
  21. #include "cmsis_os2.h"
  22. #include "wifiiot_gpio.h"
  23. #include "wifiiot_gpio_ex.h"
  24.  
  25. #define LED_INTERVAL_TIME_US 300000
  26. #define LED_TASK_STACK_SIZE 512
  27. #define LED_TASK_PRIO 25
  28.  
  29. enum LedState
  30. {
  31.     LED_ON = 0,
  32.     LED_OFF,
  33.     LED_SPARK,
  34. };
  35.  
  36. enum LedState g_ledState = LED_SPARK;
  37.  
  38. static void *LedTask(const char *arg)
  39. {
  40.     (void)arg;
  41.     while (1)
  42.     {
  43.         switch (g_ledState)
  44.         {
  45.         case LED_ON:
  46.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
  47.             usleep(LED_INTERVAL_TIME_US);
  48.             break;
  49.         case LED_OFF:
  50.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
  51.             usleep(LED_INTERVAL_TIME_US);
  52.             break;
  53.         case LED_SPARK:
  54.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
  55.             usleep(LED_INTERVAL_TIME_US);
  56.             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
  57.             usleep(LED_INTERVAL_TIME_US);
  58.             break;
  59.         default:
  60.             usleep(LED_INTERVAL_TIME_US);
  61.             break;
  62.         }
  63.     }
  64.  
  65.     return NULL;
  66. }
  67.  
  68. static void LedExampleEntry(void)
  69. {
  70.     osThreadAttr_t attr;
  71.     printf("LedExampleEntry
  72. ");
  73.     GpioInit();
  74.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
  75.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);
  76.  
  77.     attr.name = "LedTask";
  78.     attr.attr_bits = 0U;
  79.     attr.cb_mem = NULL;
  80.     attr.cb_size = 0U;
  81.     attr.stack_mem = NULL;
  82.     attr.stack_size = LED_TASK_STACK_SIZE;
  83.     attr.priority = LED_TASK_PRIO;
  84.  
  85.     if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL)
  86.     {
  87.         printf("[LedExample] Falied to create LedTask!
  88. ");
  89.     }
  90. }
  91.  
  92. SYS_RUN(LedExampleEntry);
复制代码


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

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

HiSpark
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分