Harmony OS 设备开发学习记录(三)--查询GPIO状态控制LED

Harmony OS 设备开发学习记录(三)–查询GPIO状态控制LED

基于hispark wifi套件采用harmony os 2.0全量代码

注:由于核心板板载的按键和led我尝试了很多次也不行,只能后面更熟悉这块板以后再说了,目前先采用wifi套件扩展板,当然外接外设也行。

一、看原理图确定硬件电路

原理图
这里的按键用的核心板上的GPIO8
led灯就用个黄色吧,对应核心板上的GPIO12

二、在源码中建立demo文件

目录结构
注:这里为了省事直接采用上次建好的文件夹

三、编写代码

在gpiodemo/gpio_input_get.c中写入

#include <stdio.h>

#include <unistd.h>

#include "ohos_init.h"
#include "cmsis_os2.h"
#include "iot_gpio.h"
#include "hi_io.h" // 这个文件比较特殊,是比较原始的io头文件,没有封装过


static void *GPIOTask(const char *arg){
    (void)arg;
    IotGpioValue value = IOT_GPIO_VALUE1;
    while (1)
    {
        IoTGpioGetInputVal(8, &value);
        printf("IotGpioValue:%d\n", value);
        IoTGpioSetOutputVal(12, value);
    }
    
}


static void GPIOEntry(void){
    printf("Led Test!\n");
    osThreadAttr_t attr;

    IoTGpioInit(12);
    IoTGpioSetDir(12, IOT_GPIO_DIR_OUT);
    IoTGpioInit(8);
    IoTGpioSetDir(8, IOT_GPIO_DIR_IN);
    // 我迟早自己把这个函数封装到iot_gpio.h里
    hi_io_set_pull(HI_IO_NAME_GPIO_8, HI_IO_PULL_UP);
    

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

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

SYS_RUN(GPIOEntry);

在gpiodemo/BUILD.gn中写入

static_library("gpiodemo") {
    sources = [
        "gpio_input_get.c"
    ]

    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/components/cmsis/2.0",
        "//base/iot_hardware/peripheral/interfaces/kits",
    ]
}

在上级目录的app/BUILD.gn中写入

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

lite_component("app") {
    features = [
        "gpiodemo",
    ]
}

四、在Linux下使用hb工具进行编译

root@DESKTOP-QAO2AOK:~/harmonyos/code-2.0-canary# hb set
[OHOS INFO] Input code path: .
OHOS Which product do you need?  wifiiot_hispark_pegasus
root@DESKTOP-QAO2AOK:~/harmonyos/code-2.0-canary# hb build

如果曾经设置过hb set就不需要再设置了,直接这样就可以了

root@DESKTOP-QAO2AOK:~/harmonyos/code-2.0-canary# hb build

看到success字样即为编译成功

五、将编译好的固件烧录到开发板

将linux中的源码文件夹中的out拷贝到Windows下替换原有out文件夹就可以了,但是要先删除原有out文件夹
打开vscode使用DevEco Device Tool打开源码文件夹
选择对应的开发板型号
这里选择的是hi3861
然后在项目设置中按照实际端口情况进行如下设置
烧录配置
保存项目并打开
在这里插入图片描述
点击upload进行烧录,烧录时需要根据提示按下开发板的rst键,稍等片刻,看到success代表烧录成功。
在这里插入图片描述
此时可以看到红绿灯扩展板上的黄色灯已经亮起,按下扩展板上的按键黄灯灭,松开时黄灯亮,即代表代码正常运行。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EMb-Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值