跳转至

交通信号灯

交通信号灯

接线要求

  • GND连接开发板GND

  • R接开发板GPIO09

  • Y接开发板GPIO10

  • G接开发板GPIO08

项目编写

  1. applications/genkipi/app 下新建 trafic_light 文件夹
  2. trafic_light 下新建 main.c 文件
  3. trafic_light 下新建 BUILD.gn文件

代码部分

main.c 文件内容

//
// Created by wt on 0020.
//
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#include "ohos_init.h"
#include "cmsis_os2.h"

#include "iot_gpio.h"
#include "iot_io.h"
#include "genki_pin.h"

static void led_task(void*arg) {
    //初始化GPIO口
    //9:R 10:Y 8:G
    IoTGpioInit(IOT_IO_NAME_9);
    IoTGpioInit(IOT_IO_NAME_10);
    IoTGpioInit(IOT_IO_NAME_8);

    //设置IO口功能为GPIO
    IoTIoSetFunc(IOT_IO_NAME_9, IOT_IO_FUNC_9_GPIO);
    IoTIoSetFunc(IOT_IO_NAME_10, IOT_IO_FUNC_10_GPIO);
    IoTIoSetFunc(IOT_IO_NAME_8, IOT_IO_FUNC_8_GPIO);

    //设置IO口输出方向:输出
    IoTGpioSetDir(IOT_IO_NAME_9,IOT_GPIO_DIR_OUT);
    IoTGpioSetDir(IOT_IO_NAME_10,IOT_GPIO_DIR_OUT);
    IoTGpioSetDir(IOT_IO_NAME_8,IOT_GPIO_DIR_OUT);

    //不断输出高低电压
    while (1){
        //红灯
        IoTGpioSetOutputVal(IOT_IO_NAME_9,IOT_GPIO_VALUE1);
        IoTGpioSetOutputVal(IOT_IO_NAME_10,IOT_GPIO_VALUE0);
        IoTGpioSetOutputVal(IOT_IO_NAME_8,IOT_GPIO_VALUE0);
        usleep(1000*1000);

        //绿灯
        IoTGpioSetOutputVal(IOT_IO_NAME_9,IOT_GPIO_VALUE0);
        IoTGpioSetOutputVal(IOT_IO_NAME_10,IOT_GPIO_VALUE0);
        IoTGpioSetOutputVal(IOT_IO_NAME_8,IOT_GPIO_VALUE1);
        usleep(1000*1000);

        //黄灯
        IoTGpioSetOutputVal(IOT_IO_NAME_9,IOT_GPIO_VALUE0);
        IoTGpioSetOutputVal(IOT_IO_NAME_10,IOT_GPIO_VALUE1);
        IoTGpioSetOutputVal(IOT_IO_NAME_8,IOT_GPIO_VALUE0);
        usleep(1000*1000);
    }
}


static void start(void) {
    osThreadAttr_t attr;

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

    if (osThreadNew(led_task, NULL, &attr) == NULL) {
        printf("Falied to create led_task!\r\n");
    }

}

APP_FEATURE_INIT(start);

项目Build.gn

trafic_light 目录下 BUILD.gn 内容为

static_library("trafic_light") {
    sources = [
        "main.c"
    ]

    include_dirs = [
        "//utils/native/lite/include",
        "//base/iot_hardware/peripheral/interfaces/kits",
        "//device/itcast/genkipi/interfaces/kits"
    ]
}

外部Build.gn

trafic_light文件夹上一级目录下BUILD.gn内容为

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

lite_component("app") {
    features = [
        "trafic_light"
    ]
}