说明
通过编程,控制下图中红框处 红、绿、黄 LED灯的开启和关闭
电路图
- GPIO_10 连接红色LED,输出高电平点亮红色LED灯
- GPIO_11 连接绿色LED,输出高电平点亮绿色LED灯
- GPIO_12 连接黄色LED,输出高电平点亮黄色LED灯
实现
步骤
- 初始化GPIO设备
- 设置管脚 WIFI_IOT_IO_NAME_GPIO_10、WIFI_IOT_IO_NAME_GPIO_11、WIFI_IOT_IO_NAME_GPIO_12 功能为IO
- 设置引脚 WIFI_IOT_IO_NAME_GPIO_10、WIFI_IOT_IO_NAME_GPIO_11、WIFI_IOT_IO_NAME_GPIO_12 方向为输出
- 循环点亮绿、黄、红LED灯
- 注册模块到应用子系统
代码
创建文件:
\\applications\sample\wifi-iot\app\code_v2.0\std_04\traffic_light_demo.c
代码:
#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
// 初始化操作
void init(void)
{
GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_OUT);
}
static void StartTrafficLightTask(void)
{
init();
// 循环点亮绿、黄、红LED灯
while (1)
{
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_VALUE1);
usleep(3000 * 1000);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_VALUE0);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_VALUE1);
usleep(1000 * 1000);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_VALUE0);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_VALUE1);
usleep(3000 * 1000);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_VALUE0);
}
}
APP_FEATURE_INIT(StartTrafficLightTask);
代码说明
- GpioInit():初始化GPIO设备,详见链接
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO):设置GPIO引脚功能,详见链接
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT):设置 GPIO 引脚的方向,详见链接
- WIFI_IOT_GPIO_DIR_OUT:输出模式,详见链接
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_VALUE0):设置GPIO引脚输出电平值,详见链接
usleep(1000 * 1000):详见链接
APP_FEATURE_INIT(StartTrafficLightTask):详见链接
编辑BUILD.gn文件
编辑1
在代码同级目录创建下面文件:
BUILD.gn
内容:
# static_library中指定业务模块的编译结果.为静态库文件libmyapp.a,开发者根据实际情况完成填写。
#sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。
#include_dirs中指定source所需要依赖的.h文件路径。
static_library("traffic_demo") {
sources = [
"traffic_light_demo.c"
]
include_dirs = [
"//utils/native/lite/include",
"//base/iot_hardware/interfaces/kits/wifiiot_lite",
"//kernel/liteos_m/components/cmsis/2.0",
]
}
编辑2
编辑下面文件:
\\applications\sample\wifi-iot\app\BUILD.gn
内容:
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"code_v2.0/std_03:hello_demo",
]
}
编译代码
详见链接:
https://www.malaoshi.top/show_1GW1wTyUOMPk.html


