OpenHarmony轻量系统开发【8】其它驱动开发示例

news/2025/3/14 22:52:37/

8.1代码示例

OpenHarmony代码中,Hi3861提供了绝大部分的驱动示例代码,文件路径:
device\soc\hisilicon\hi3861v100\sdk_liteos\app\demo\src
开发者可以参考,文件如下:

8.2如何使用

(1)创建文件夹

一般情况下,我们自己如果需要使用某个驱动,编写的代码要存放在app目录下,
这里我们以app_demo_pwm.c为例。
我们在app中新建文件夹 demo_pwm,里面存放代码 demo_pwm.c,然后app_demo_pwm.c所有的代码都复制到demo_pwm.c中,整个文件夹如下:

(2)编写入口函数

我们需要为demo_pwm.c编写一个入口函数,通常情况下,是创建一个线程去执行,通用的代码示例如下:

void *PWM_Task(const char *arg)
{arg = arg;while(1){
//调用app_demo_pwmapp_demo_pwm();usleep(10000);}
}void pwm_demo(void)
{osThreadAttr_t attr;attr.name = "PWM_Task";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 2048;attr.priority = 26;if (osThreadNew((osThreadFunc_t)PWM_Task, NULL, &attr) == NULL) {printf("[PWM_Task] Falied to create PWM_Task!\n");}}SYS_RUN(pwm_demo);

(3)头文件

此外我们还得修改头文件,首先我们先删除掉原先的include的头文件,然后添加如下通用头文件:

#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"#include <hi_types_base.h>
#include <hi_early_debug.h>

接着我们可以根据自己使用到的哪个驱动,添加对应的驱动头文件,比如我们用到的是pwm,那么添加的头文件如下:
#include <hi_pwm.h>

(4)头文件路径

此外我们还得修改头文件,这里主要修改 BUILD.gn文件,通常情况下需要增加:

"//device/soc/hisilicon/hi3861v100/hi3861_adapter/hals/communication/wifi_lite/wifiservice",
"//device/soc/hisilicon/hi3861v100/hi3861_adapter/kal",

修改后如下:

(5)修改usr_config.mk文件

此外,如果某个驱动对应的宏我们如果没有打开,那么我们可能还得修改usr_config.mk文件,该文件通常路径为:

device\soc\hisilicon\hi3861v100\sdk_liteos\build\config\usr_config.mk

这里我们用到了PWM,修改前:

修改后:

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.
鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向


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

相关文章

安全中级-初开始

一、网络基础 重要点&#xff1a;TTL值&#xff08;防环&#xff0c;linux64.Windows128 &#xff09;&#xff0c;IP数据包包头格式字节&#xff08;20&#xff09; 标识标志偏移量起到什么作用&#xff08;数据超过1500会分片&#xff09; wireshack抓包会有一个MSS&#x…

项目7-音乐播放器1+BCrypt加密

1.创建项目 1.1 引入依赖 1.2 yml相关配置 application.yml spring:profiles:active: prod mybatis:mapper-locations: classpath:mapper/**Mapper.xmlconfiguration:map-underscore-to-camel-case: true #配置驼峰⾃动转换log-impl: org.apache.ibatis.logging.stdout.StdO…

HTMLCSS(二)---HTML常见标签

2.1标题标签 HTML标题标签用于定义文档中的标题和子标题。HTML提供了六个级别的标题&#xff0c;分别是<h1>到<h6>&#xff0c;其中<h1>表示最高级别的标题&#xff0c;<h6>表示最低级别的标题。这些标签通常用于创建内容结构&#xff0c;帮助搜索引擎…

笔记:定义一个函数,要求从键盘输人两个数,调用该函数得出两个数的最大公约数,并显示在屏幕上。

文章目录 前言一、什么是调用该函数得出两个数的最大公约数&#xff1f;二、编写代码1.代码2.优化代码 总结 前言 题目&#xff1a;定义一个函数&#xff0c;要求从键盘输人两个数&#xff0c;调用该函数得出两个数的最大公约数&#xff0c;并显示在屏幕上。 在数学中&#x…

云计算:OVS 集群 使用VXLAN 流表

目录 一、实验 1.环境 2. OVS 集群 使用VXLAN 流表&#xff08;单租户&#xff09; 3. OVS 集群 使用VXLAN 流表&#xff08;多租户&#xff09; 二、问题 1.如何添加VXLAN接⼝ 2.virsh修改云主机MAC报错 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件IP网卡备…

vue3滚动条重置

由于单页面应用的原理&#xff0c;使用vue搭建的项目在路由切换时并不会刷新整个页面。因此在有滚动条的页面会存在滚动条不能自动重置的问题。在最近的项目中就遇到了这种问题&#xff0c;因此记录一下。 1.切换路由&#xff1a; <el-main> <!--<router-view…

Linux下GPU虚拟化

在新Linux内核中体验GPU虚拟化 从内核4.10&#xff0c; 支持 virtual gpu 的代码开始汇入主线程。这部分代码主要由两部分组成&#xff1a; 首先&#xff0c; mediated 设备框架&#xff08;mdev&#xff09;&#xff0c;基本上&#xff0c;这部分代码使得内核驱动开始用vfio框…

【数据结构】树与二叉树、树与森林部分习题与算法设计例题

目录 【数据结构】树与二叉树部分习题与算法设计例题一、单选题二、算法设计题判断二叉树是否为完全二叉树求二叉树的最小深度 以及 二叉树树高 树与二叉树知识点文章: 【数据结构】树与二叉树&#xff08;递归法先序、中序、后序、层次遍历二叉树、二叉树的建立以及求树高的方…