[文章]鸿蒙系统开发之实现LED灯闪烁

阅读量0
0
3
`
修改源码
目录结构
先在./applications/sample/wifi-iot/app路径下新建一个目录(或一套目录结构),用于存放业务源码文件。
本例程:在app下新增业务led,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:
.
└── applications
    └── sample
        └── wifi-iot
            └── app
                │── led
                │  │── led.c
                │  └── BUILD.gn
                └── BUILD.gn
业务代码。
新建./applications/sample/wifi-iot/app/led下的led.c文件,在led.c中新建业务入口函数led,并实现业务逻辑。并在代码最下方,使用HarmonyOS启动恢复模块接口SYS_RUN()启动业务。(SYS_RUN定义在ohos_init.h文件中)
1.   BUILD.gn为编译脚本
2.   led.c为业务逻辑代码所在文件
led.c
#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#define LED_ON_TIME_US 2000000
#define LED_OFF_TIME_US 1000000
static void Led(void)
{
    //GPIO引脚初始化
    GpioInit();
    //设置管脚功能为GPIO
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9,WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
    //设置GPIO引脚方向为输出
    GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
    while (1) {
        //设置GPIO09输出为低电平
        GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
        //打印输出日志
        printf("[DEMO] LED on.
");
        //延时一定时间,即亮灯的持续时间
        usleep(LED_ON_TIME_US);
        //设置GPIO09输出为高电平
        GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
        //打印输出日志
        printf("[DEMO] LED off.
");
        //延时一定时间,即灭灯的持续时间
        usleep(LED_OFF_TIME_US);
    }
}
SYS_RUN(Led);
BUILD.gn(app/BUILD.gn)
static_library("bahuyang") {
    sources = [
        "led.c"
    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/components/cmsis/2.0",
        "//base/iot_hardware/interfaces/kits/wifiiot_lite",
}                                                                  
1.   “bahuyang”:是生成静态库名称,可随意更改
2.   “led.c”:代码文件
BUILD.gn()
11.png
1.   将"startup"注释,运行我们自己的文件
2.   “led”:工程目录
3.   bahuyang:静态库文件
编译烧录
编译
4.png

利用HiBurn工具进行烧录,我在以前的文章里,详细讲过。
5.png

选定文件后,点击connect,按下开发板复位按钮,进行烧录。
烧录完成后,再次按下复位按键。
观察现象

选择波特率115200,连接相应串口,观看串口调试助手的结果。


6.png
LED灯实现闪烁了。
13.png

`
12.png

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友