梅科尔工作室-看鸿蒙设备开发实战14天笔记(五)-驱动子系统开发
###本文章仅整理视频笔记及对一些地方的解释,如果想看详细内容,请在鸿蒙开发者学堂搜索鸿蒙设备开发###
###本文章图片来自视频后PDF文档,本文侧重实例讲解###
1.GPIO
1.1.GPIO API接口介绍
1.2.LED对应GPIO引脚
1.3.实例代码
1.4.代码讲解
打开实例文件,之后实例样例都在这个文件夹
引入库
最后两行引入的库与GPIO操作有关
定义操作LED灯的任务,初始栈大小为512,但是打印提示语需要缓存空间,因此设置成了2048
操作灯的代码,内部函数大多可以通过VS的代码搜索搜索到
初始化GPIO,没有参数
设置复用功能
第一个参数是功能id,通过搜索第一个参数可知,接口有0-14
搜索返回的枚举个可知,GPIO2复用功能有如下几种
我们用的是第一种,普通接口,下面的功能通过看GPIO_2后面的可知,如PWM2
之后的函数也可以通过搜索,搜索到定义信息,从而选择参数如何写,之后的查找就省略了
设置GPIO2为输出,定义一个变量val用来存放,GPIO2的方向(0为输入,1为输出,这些都可以通过搜索查到),获取GPIO2的方向值,第二个参数定义的数据类型是WifiIotGpioDir,因此在上面定义了val,之后打印出val值。
定义输出变量,可以记录输出是高电平还是低电平,数据类型可以通过搜索函数查看参数前面的英文得知。
LED灯1s亮,1s灭,并将输出的值打印出来。
2.GPIO中断
2.1.GPIO 中断API介绍
2.2.按键对应GPIO引脚
2.3.实例代码
2.4.代码讲解
库不变,打开button实例
初始化GPIO并初始化LED灯
初始化按钮1,设置普通复用功能,设置为输入端,设置上拉(按钮不按时是高电平,按下为低电平)设置GPIO中断,第一个为引脚,第二个参数设置边缘触发(上升沿0-1,下降沿1-0)也可以电平触发(高电平或低电平),第三个参数设置下降沿/低电平触发,第四个参数中断函数,第五个参数为NULL。
按钮2同理
两个中断函数,第一个中断函数打印完后改为上升沿触发(由于采用上拉初始为1,按下按钮瞬间变为0,触发下降沿,按着不动打印一次,之后由于代码修改为上升沿触发,松手时触发上升沿再次打印),第二个中断函数打印完后屏蔽中断(再按不起作用了)。
3.PWM
3.1.PWM API 接口介绍
3.2.LED对应引脚
3.3.实例代码
3.4.代码讲解
打开pwm_led实例代码,库多#include "wifiiot_pwm.h"
创建一个PWM控制灯亮度的任务
任务代码,定义一个循环变量i,控制PWM占空比
初始化GPIO设置复用功能为PWM,并设置输出,初始化PWM端口,j用来记录呼吸灯闪烁次数,通过搜索可知,PWM端口可以是0-5
通过改变i控制PWM波占空比,i/40000为亮度百分比,每闪烁一次j加一,当j等于5时,取消初始化PWM端口,LED为最大亮度1。
4.ADC
4.1.ADC 相关接口
4.2.查看ADC对应引脚
4.3.实例代码
4.4.代码讲解
打开ADC文件,多了的库文件是
#include "wifiiot_adc.h"
创建测电压任务
定义一个浮点型变量记录电压值,执行计算电压的函数
定义两个变量ret,data一个记录读取是否成功,一个读取电压值
读取电压函数第一个参数为通道,这个通道可以查看芯片手册得知,GPIO11对应5通道,通道有0-7,可以通过搜索得知。芯片手册路径在下图,第二个参数为存储电压值的变量的地址,第三个参数是多少个数据求平均值,有1,2,4,8四种选项,第四个参数电压模式默认,其他模式也可以通过搜索得出。最后一个0xff。
计算函数返回的是计算电压的公式,之后保留3为小数输出
5.I2C
5.1.I2C接口介绍
5.2.NFC对应GPIO引脚
5.3.代码实例
5.4.代码讲解
打开相应实例代码文件,引入相关库,并定义写入的文章和网址
定义一个I2C实例任务
I2C相关代码
初始化GPIO,将两个接口GPIO0和1分别复用为SDA(数据线)SCL(时钟线),并且初始化I2C(第一个参数除了1还有0)设置频率400k或100k,这个频率中途可以改,就是倒数第二行代码,最后打印测试成功。
执行写的操作,第一个用来写文本,第二个用来写URI,第一个参数是地址,第二个参数是内容,地址用三个First,Middle,Last。
如果你想触碰打开网址,需要将写入网址的代码设为First,NFC是以页读取的,一般都不会超过3页。uri类型默认是
其他类型如下
你可以通过修改uri类型来修改写入的uri前缀。
6.UART
6.1.UART相关API介绍
6.2.UART1对应的GPIO引脚
6.3.实例代码
6.4.代码讲解
打开相关文件,引入库文件,并设置要写入的文本数据
定义一个UART读写任务
UART读写任务函数代码
定义了一个结构体内部为UART初始化相关值,为UART初始化第二个参数,第一个参数为UART端口号(有0,1,2),1对应GPIO5和6。第三个为属性参数可以通过搜索函数定义了解相关参数。下面第一个图是第三个参数可以选的项。
写与读的函数第一个都是UART端口号,第二个是写数据/读数据的数据文本的地址,第三个是长度。由于这个实验,GPIO5和6通过线连在一起实现读写都为同一内容的操作,最后输出的值就是当初写入的值。