迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写应用APP

news/2025/2/7 14:37:50/

在应用代码中我们实现如下功能:
当应用程序启动后会获取命令行参数。如果命令行没有参数,LED 灯将循环闪烁;如果命令行带有参数,则根据传输的参数控制 LED 灯的开启或关闭。通过 HdfIoServiceBind 绑定 LED灯的 HDF 服务,获取 HDF 空间缓存区,并向该缓冲区写入控制数据。然后,通过 LED_WRITE 命令将数据发送到 HDF 驱动,从而控制 LED 灯的亮灭。在程序结束时,会回收 HDF 空间缓冲区和 HDF 服务。
接下来编写应用测试文件 led_test.c,完整代码如下所示。
 


接下来编写应用 APP 的 GN 文件 BUILD.gn,代码内容如下所示:
 


上面的代码用于构建一个“led_test”的可执行文件的构建脚本,它使用了 GN(Generate Ninja)构建系统,这是一种元构建系统,用于生成 Ninja 构建文件。
 1-2 行定义了两个变量 HDF_FRAMEWORKS 和 HDF_ADAPTER,它们分别指向 HDF(HardwareDriver Foundation,硬件驱动框架)核心框架和适配器的路径。这些路径是相对于项目根目录的。
 4-5 行 使用 import 语句导入两个 GNI(GN Include)文件。GNI 文件是 GN 构建系统用来包含变量定义、函数和模板的文件。这里导入的文件可能包含了一些预定义的变量、函数或构建规则,用于支持构建过程。//build/ohos.gni 可能包含了 OpenHarmony 特有的构建配置,而$HDF_ADAPTER/uhdf2/uhdf.gni 可能包含了与 uHDF(Unified Hardware Driver Framework,统一硬件驱动框架)相关的配置。
 7 行 打印一条消息到控制台,表明正在编译 led_test 示例。
 9-40 行 定义一个名为 led_test 的 ohos_executable 目标,这是一个构建规则,用于生成一
个可执行文件。下面是该目标的具体配置:
sources:指定源文件列表,这里只有一个文件 led_test.c。
include_dirs:指定头文件搜索路径列表。这些路径用于在编译时查找包含的文件(#include指令引用的文件)。这些路径包括了 HDF 框架、适配器的多个子目录,以及一些第三方库和内部工具库的头文件路径。
external_deps:指定外部依赖项列表。这些依赖项是在构建过程中需要链接的库。这里列出了几个库,如 c_utils:utils、hdf_core:libhdf_platform 等,这些库提供了构建 led_test 所需的功能。
cflags:指定传递给 C 编译器的标志列表。这里包括了一些常见的编译选项,如-Wall(打开所有警告)、-Wextra(打开额外警告)、-Werror(将所有警告视为错误)、以及两个用于关闭特定警告的选项。
part_name:指定构建产物所属的部件名称,这里是 demos。
install_enable:设置为 true,表示构建产物应该被安装。这可能意味着在构建成功后,led_test可执行文件会被复制到某个特定的目录,以便于执行或分发。
 


http://www.ppmy.cn/news/1570085.html

相关文章

python 从知网的期刊导航页面抓取与农业科技相关的数据

要从知网的期刊导航页面抓取与农业科技相关的数据,并提取《土壤学报》2016年06期的结果,可以使用requests库来获取网页内容,BeautifulSoup库来解析HTML。由于知网页面结构可能会发生变化,在实际使用中,需要根据页面结构…

5 计算机网络

5 计算机网络 5.1 OSI/RM七层模型 5.2 TCP/IP协议簇 5.2.1:常见协议基础 一、 TCP是可靠的,效率低的; 1.HTTP协议端口默认80,HTTPSSL之后成为HTTPS协议默认端口443。 2.对于0~1023一般是默认的公共端口不需要注册,1024以后的则需…

简单React项目从0到1

文章目录 项目搭建基于CRA创建项目调整项目目录结构 使用scss预处理器组件库antd使用配置基础路由配置别名路径路径编译配置VsCode提示配置 基本结构搭建表单校验实现获取登录表单数据封装request工具模块使用Redux管理token安装Redux相关工具包配置Redux 实现登录逻辑token持久…

Github 2025-02-04 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2025-02-04统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10TypeScript项目1Python中的算法实现集合 创建周期:2831 天开发语言:Python协议类型:MIT LicenseStar数量:178357 个Fork数量:…

如何在 Kivy 中从按钮更新选项卡内容

在 Kivy 中,您可以通过使用 TabbedPanel 和 Button 控件实现从按钮更新选项卡内容的功能。TabbedPanel 是一个允许在不同标签之间切换的控件,而按钮则可以用来触发更新内容的操作。 以下是一个简单的示例,展示了如何在 Kivy 中创建一个带有按…

【React】表单校验:从基础到集成库

React表单验证是开发中非常常见的需求,良好的表单验证可以提高用户体验并减少错误输入。以下是React表单验证的最佳实践,分为三个层次:基础实现、自定义封装和使用集成库。 一、基础表单验证 1. 受控组件 React 表单验证的基础是使用受控组件,通过状态 (state) 来管理表单…

ffmpeg合成视频

记录下ffmpeg如何安装配置,以及如何合成视频。 一、安装ffmpeg 1、下载ffmpeg安装包 打开 Dpwnload FFmpeg 官网,选择安装包Windows builds from gyan.dev 2、下滑找到release bulids部分,选择ffmpeg-7.0.2-essentials_build.zip 3、下载完…

自定义数据集 使用scikit-learn中svm的包实现svm分类

代码: import numpy as np # 导入用于数值计算的库 import matplotlib.pyplot as plt # 导入用于绘图的库# class1_points 和 class2_points 分别定义了两个类别的数据点,二维坐标 class1_points np.array([[1.9, 1.2],[1.5, 2.1],[1.9, 0.5],[1.5, …