鸿蒙硬件HI3861点灯
鸿蒙其他教程请看https://blog.csdn.net/qq_33259323/category_10520249.html
创建文件
BUILD.gn
static_library("mmled") {
sources = [
"mmled.c"
]
include_dirs = [
"//domains/iot/link/ledlib",
"//base/iot_hardware/interfaces/kits/wifiiot_lite",
"//kernel/liteos_m/components/cmsis/2.0",
]
}
mmled.c
#include "mmled.h"
#include <stdio.h>
#include <unistd.h>
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#include "cmsis_os2.h"
// LED状态
enum LedState {
LED_ON = 0,
LED_OFF,
LED_SPARK,
};
enum LedState g_ledState = LED_SPARK;
// LED初始化
void Led_Init(void){
GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
}
static void *LedBTask(const char *arg){
(void)arg;
while (1) {
switch (g_ledState) {
case LED_ON:
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
usleep(LED_INTERVAL_TIME_US);
break;
case LED_OFF:
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
usleep(LED_INTERVAL_TIME_US);
break;
case LED_SPARK:
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
usleep(LED_INTERVAL_TIME_US);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
usleep(LED_INTERVAL_TIME_US);
break;
default:
usleep(LED_INTERVAL_TIME_US);
break;
}
}
return NULL;
}
// LED模块初始化线程
void Start_Led_Thread(void){
osThreadAttr_t ledattr;
ledattr.name = "LedTask";
ledattr.attr_bits = 0U;
ledattr.cb_mem = NULL;
ledattr.cb_size = 0U;
ledattr.stack_mem = NULL;
ledattr.stack_size = LED_TASK_STACK_SIZE;
ledattr.priority = LED_TASK_PRIO;
if (osThreadNew((osThreadFunc_t)LedBTask, NULL, &ledattr) == NULL) {
printf("[LedExample] Falied to create LedTask!\n");
}
}
mmled.c
#ifndef MMLED_H
#define MMLED_H
#define LED_INTERVAL_TIME_US 3000000
#define LED_TASK_STACK_SIZE 512
#define LED_TASK_PRIO 25
/**
* LED初始化
*/
void Led_Init(void);
void Start_Led_Thread(void);
//static void *LedBTask(const char *arg);
#endif
这些弄完之后需要修改code-1.0\applications\sample\wifi-iot\app\BUILD.gn把刚才的mmled添加进去进行
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"my_first_app:myapp",
"//domains/iot/link/ledlib:mmled" ## 需要把mmled添加进去
]
}
在\code-1.0\applications\sample\wifi-iot\app\my_first_app\BUILD.gn
static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include",
"//domains/iot/link/ledlib", ## 添加ledlib
]
}
在\code-1.0\applications\sample\wifi-iot\app\my_first_app\hello_world.c
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
#include "mmled.h"
void HelloWorld(void)
{
printf("[DEMO] Hello world.\n");
Led_Init();
Start_Led_Thread();
}
SYS_RUN(HelloWorld);
然后就OK了
如果在过程中遇到什么问题可以来联系我B站