【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】GPIO操作之LED灯闪烁

描述

本文来源电子发烧友社区,作者:陈阿跃, 帖子地址:https://bbs.elecfans.com/jishu_2029523_1_1.html


Hi3861开发板上的LED翻转


hi3861开发板上有自带一个LED灯,这一次来简单操作hi3861开发板的GPIO口,从而控制LED灯闪烁。
从开发板原理图可知,LED灯连接的是GPIO_9,所以只需要操作GPIO_9的电平高低就可以操作LED灯的亮灭状态。
明确整个过程需要做什么了,那么就开始新建项目。
首先在app目录下新建led文件夹,然后在led文件夹下新建BUILD.gn文件,内容如下
static_library("led") {
sources = [ "led.c" ]
include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal",
"//base/iot_hardware/inteRFaces/kits/wifiiot_lite",
 
}
然后再新建led.c文件,添加以下代码:
#include
#include
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
// LED灯任务处理,在此函数内循环点亮和熄灭LED灯
static void *LedTask(const char *arg)
{
(void)arg;
while (1) {
   GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0); // LED_ON
   usleep(300*1000);
   GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1); // LED_OFF
   usleep(300*1000);
}
return NULL;
}
static void Demo_Led(void)
{
osThreadAttr_t attr;
// 初始化LED,连接的是GPIO9
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);
attr.name = "LedTask";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = 512U;
attr.priority = osPriorityNormal; // 任务优先级为常规级别
// 新建LED任务
if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
   printf("[Demo Led] create LedTask Failed!rn");
}
}
SYS_RUN(Demo_Led);`
最后一步是修改app目录下的BUILD.gn文件,让它默认执行led项目(文件夹)下的内容。
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
   "led:led",
 
}
修改完代码后,就输入python3 build.py wifiiot开始编译,然后通过HiBurn软件烧录到Hi3861开发板上。
实验现象:Hi3861开发板上自带的LED灯每300毫秒闪烁一次。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分