[文章]

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连连载】+ 5、点亮三色灯板

2020-10-29 10:48:39  630 HarmonyOS HiSpark Wi-Fi IoT 开发板
分享
0
    学习GPIO例程,驱动 HiSpark_WiFi_IoT_SSL_VER.A 板上的红、黄、绿色LED灯。
    一、硬件电路

    1.1、HiSpark_WiFi_IoT_SSL板对应的LED引脚图
    01.png
    02.png

    1.2、扩展板对应的IO口
    03.png

     二、程序

     2.1、创建文件
     在applications/sample/wifi-iot/app/下面创建测试用的文件
      04.png

    2.2、源文件
    2.2.1、ledgpio.c
  1. #include <stdio.h>

  2. #include <unistd.h>

  3. #include "ohos_init.h"
  4. #include "cmsis_os2.h"
  5. #include "wifiiot_gpio.h"
  6. #include "wifiiot_gpio_ex.h"

  7. #define  LED_RED    WIFI_IOT_IO_NAME_GPIO_10
  8. #define  LED_YELL   WIFI_IOT_IO_NAME_GPIO_12
  9. #define  LED_GREEN  WIFI_IOT_IO_NAME_GPIO_11


  10. static void *LedTask(const char *arg)
  11. {
  12.     (void)arg;
  13.     while (1)
  14.     {
  15.         GpioSetOutputVal(LED_RED, 1);
  16.         GpioSetOutputVal(LED_YELL, 1);
  17.         GpioSetOutputVal(LED_GREEN, 1);
  18.         usleep(200000);

  19.         GpioSetOutputVal(LED_RED, 0);
  20.         GpioSetOutputVal(LED_YELL, 1);
  21.         GpioSetOutputVal(LED_GREEN, 1);
  22.         usleep(200000);
  23.         GpioSetOutputVal(LED_RED, 1);
  24.         GpioSetOutputVal(LED_YELL, 0);
  25.         GpioSetOutputVal(LED_GREEN, 1);
  26.         usleep(200000);
  27.         GpioSetOutputVal(LED_RED, 1);
  28.         GpioSetOutputVal(LED_YELL, 1);
  29.         GpioSetOutputVal(LED_GREEN, 0);
  30.         usleep(200000);
  31.     }

  32.     return NULL;
  33. }


  34. static void ledgpio(void)
  35. {
  36.     osThreadAttr_t attr;

  37.     GpioInit();
  38.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
  39.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);

  40.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);    //LED_RED
  41.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);

  42.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);    //LED_YELL
  43.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);

  44.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);    //LED_GREEN
  45.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_OUT);

  46.     attr.name = "LedgpioTask";
  47.     attr.attr_bits = 0U;
  48.     attr.cb_mem = NULL;
  49.     attr.cb_size = 0U;
  50.     attr.stack_mem = NULL;
  51.     attr.stack_size = 512;
  52.     attr.priority = 27;

  53.     if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
  54.         printf("[Ledgpio] Falied to create LedTask!\n");
  55.     }
  56. }

  57. SYS_RUN(ledgpio);
复制代码


    2.2.2、BUID.gn


  1. static_library("ledgpio") {
  2.     sources = [
  3.         "ledgpio.c"
  4.     ]

  5.     include_dirs = [
  6.         "//utils/native/lite/include",
  7.         "//kernel/liteos_m/components/cmsis/2.0",
  8.         "//base/iot_hardware/inteRFaces/kits/wifiiot_lite",
  9.     ]
  10. }
复制代码

    2.3、编译程序

    05.png

    2.4、下载程序

    06.png

   三、程序执行


    三色LED灯顺序点亮
    100.gif


评论

您需要登录后才可以回帖 登录 | 注册

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