梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发

星如雪_梭如月
发布于 2022-7-21 16:53
浏览
0收藏

###本文章仅整理视频笔记及对一些地方的解释,如果想看详细内容,请在鸿蒙开发者学堂搜索鸿蒙设备开发###

###本文章图片来自视频后PDF文档,本文侧重实例讲解###

1.GPIO

1.1.GPIO API接口介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

1.2.LED对应GPIO引脚

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

1.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

1.4.代码讲解

打开实例文件,之后实例样例都在这个文件夹

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

引入库

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

最后两行引入的库与GPIO操作有关

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

定义操作LED灯的任务,初始栈大小为512,但是打印提示语需要缓存空间,因此设置成了2048

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

操作灯的代码,内部函数大多可以通过VS的代码搜索搜索到

初始化GPIO,没有参数

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

设置复用功能

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

第一个参数是功能id,通过搜索第一个参数可知,接口有0-14

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

搜索返回的枚举个可知,GPIO2复用功能有如下几种

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

我们用的是第一种,普通接口,下面的功能通过看GPIO_2后面的可知,如PWM2

之后的函数也可以通过搜索,搜索到定义信息,从而选择参数如何写,之后的查找就省略了

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

设置GPIO2为输出,定义一个变量val用来存放,GPIO2的方向(0为输入,1为输出,这些都可以通过搜索查到),获取GPIO2的方向值,第二个参数定义的数据类型是WifiIotGpioDir,因此在上面定义了val,之后打印出val值。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

定义输出变量,可以记录输出是高电平还是低电平,数据类型可以通过搜索函数查看参数前面的英文得知。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

LED灯1s亮,1s灭,并将输出的值打印出来。

2.GPIO中断

2.1.GPIO 中断API介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

2.2.按键对应GPIO引脚

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

2.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

2.4.代码讲解

库不变,打开button实例

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

初始化GPIO并初始化LED灯

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

初始化按钮1,设置普通复用功能,设置为输入端,设置上拉(按钮不按时是高电平,按下为低电平)设置GPIO中断,第一个为引脚,第二个参数设置边缘触发(上升沿0-1,下降沿1-0)也可以电平触发(高电平或低电平),第三个参数设置下降沿/低电平触发,第四个参数中断函数,第五个参数为NULL。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

按钮2同理

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

两个中断函数,第一个中断函数打印完后改为上升沿触发(由于采用上拉初始为1,按下按钮瞬间变为0,触发下降沿,按着不动打印一次,之后由于代码修改为上升沿触发,松手时触发上升沿再次打印),第二个中断函数打印完后屏蔽中断(再按不起作用了)。

3.PWM

3.1.PWM API 接口介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

3.2.LED对应引脚

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

3.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

3.4.代码讲解

打开pwm_led实例代码,库多#include "wifiiot_pwm.h"
梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

创建一个PWM控制灯亮度的任务

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

任务代码,定义一个循环变量i,控制PWM占空比

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

初始化GPIO设置复用功能为PWM,并设置输出,初始化PWM端口,j用来记录呼吸灯闪烁次数,通过搜索可知,PWM端口可以是0-5

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

通过改变i控制PWM波占空比,i/40000为亮度百分比,每闪烁一次j加一,当j等于5时,取消初始化PWM端口,LED为最大亮度1。

4.ADC

4.1.ADC 相关接口

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

4.2.查看ADC对应引脚

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

4.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

4.4.代码讲解

打开ADC文件,多了的库文件是

#include "wifiiot_adc.h"

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

创建测电压任务

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

定义一个浮点型变量记录电压值,执行计算电压的函数

定义两个变量ret,data一个记录读取是否成功,一个读取电压值

读取电压函数第一个参数为通道,这个通道可以查看芯片手册得知,GPIO11对应5通道,通道有0-7,可以通过搜索得知。芯片手册路径在下图,第二个参数为存储电压值的变量的地址,第三个参数是多少个数据求平均值,有1,2,4,8四种选项,第四个参数电压模式默认,其他模式也可以通过搜索得出。最后一个0xff。

计算函数返回的是计算电压的公式,之后保留3为小数输出

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

5.I2C

5.1.I2C接口介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

5.2.NFC对应GPIO引脚

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

5.3.代码实例

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

5.4.代码讲解

打开相应实例代码文件,引入相关库,并定义写入的文章和网址

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

定义一个I2C实例任务

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

I2C相关代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

初始化GPIO,将两个接口GPIO0和1分别复用为SDA(数据线)SCL(时钟线),并且初始化I2C(第一个参数除了1还有0)设置频率400k或100k,这个频率中途可以改,就是倒数第二行代码,最后打印测试成功。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

执行写的操作,第一个用来写文本,第二个用来写URI,第一个参数是地址,第二个参数是内容,地址用三个First,Middle,Last。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

如果你想触碰打开网址,需要将写入网址的代码设为First,NFC是以页读取的,一般都不会超过3页。uri类型默认是

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

其他类型如下

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

你可以通过修改uri类型来修改写入的uri前缀。

6.UART

6.1.UART相关API介绍

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

6.2.UART1对应的GPIO引脚

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

6.3.实例代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

6.4.代码讲解

打开相关文件,引入库文件,并设置要写入的文本数据

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

定义一个UART读写任务

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

UART读写任务函数代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

定义了一个结构体内部为UART初始化相关值,为UART初始化第二个参数,第一个参数为UART端口号(有0,1,2),1对应GPIO5和6。第三个为属性参数可以通过搜索函数定义了解相关参数。下面第一个图是第三个参数可以选的项。

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发-鸿蒙开发者社区

 

写与读的函数第一个都是UART端口号,第二个是写数据/读数据的数据文本的地址,第三个是长度。由于这个实验,GPIO5和6通过线连在一起实现读写都为同一内容的操作,最后输出的值就是当初写入的值。

 

分类
已于2022-7-21 16:53:12修改
收藏
回复
举报
回复
    相关推荐