LV01-01-AliOSThings-10-HAL层点灯-02-HAL层GPIO使用方法

本文主要是HAL层点灯——HAL层GPIO使用方法的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows版本 windows11
Ubuntu版本 Ubuntu22.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
点击查看本文参考资料
分类 网址 说明
官方网站 阿里云 阿里云官网主页
阿里生活物联平台 生活物联网平台(飞燕平台)主页
AliGenie 天猫精灵开放平台AliGenie主页
阿里物联网平台 阿里物联网平台主页
Bluetooth 技术网站 蓝牙协议规范什么的可以来这里找
Telink Telink | Chips for a Smarter IoT (telink-semi.com)
Telink中文官网
开发手册 AliOS Things开发指南 AliOS Things开发指南,这里是最新版本,可以直接从官网找到
AliOS Things开发指南 AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档
AliOS Things开发指南(3.0) AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档
生活物联网平台开发文档 生活物联网平台(飞燕平台)开发文档
《设备端开发指南》
Wi-Fi IoT品类定义与功能开发 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发
硬件平台 mk3080 WiFi开发板 WiFi开发板使用指南-阿里云开发者社区
esp8266开发板 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com)
TLSR8258 Datasheet Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258
参考资料 AliOS Things 3.0 应用开发指南 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考
IP知识百科 - 华为 (huawei.com) IP的一些相关知识点
点击查看相关文件下载
分类 网址 说明
蓝牙规范相关文档 Core Specification 5.2 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。
《Core_v5.2.pdf》
Mesh Model(v1.1) 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。
本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。
《MshMDL_v1.1.pdf》
Mesh Profile(v1.0.1) 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。
《MshPRFv1.0.1.pdf》
Mesh Device Properties 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。
但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》
GATT Specification Supplement GATT Specification Supplement | Bluetooth® Technology Website。
好像可以在线看:《GATT Specification Supplement》
Assigned Numbers GATT的一些类型定义可以在这里找。
AliOS Things alios-things/AliOS-Things Gitee上的AliOSThings SDK源码仓库
alibaba/AliOS-Things GitHub上的AliOSThings SDK源码仓库
天猫精灵蓝牙Mesh协议栈 alibaba-archive/genie-bt-mesh-stack GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。
之前是在alibaba/genie-bt-mesh-stack这个仓库。
写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a
蓝牙Mesh设备开发指南 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容

由于mk3080没有原理图,所以这里主要分析esp8266,然后再来说mk3080。

一、硬件原理图分析

1. esp8266 原理图

1.1 有哪些gpio?

image-20200726121012825

1.2 板载设计可以做实验的gpio?

image-20200726121252046

2. mk3080 原理图

目前mk3080这个开发板没有原理图,在没有原理图的情况下该怎么编程?其实开发板的丝印会给我们一些提示的。接下来就来看一看吧。

2.1 有哪些gpio?

image-20200726121555640

2.2 控制输出实现可用的gpio

需要注意的是,这里丝印表示,我们使用LED的话,要将对应的引脚用跳线帽短接。

2.3 输入捕获实现可用的gpio

image-20200726122115819

二、官方demo学习

厂家出一个东西,那一定是会有demo的,市面上没有的资料,厂家会提供,不然怎么开发对吧。所以我们最有效的学习方法就是看厂家给的demo。

1. demo在哪?

首先,gpio的demo在哪?我们打开SDK源码,

1
2
3
4
5
6
# demo源文件
AliOS-Things-SDK/application/example/hal_demo/halapp_gpio.c
# GPIO接口头文件
AliOS-Things-SDK/include/aos/hal/gpio.h

# GPIO接口源文件,不同的硬件实现实现有所不同,后面再说

2.  halapp_gpio.c

2.1 GPIO初始化

image-20200726122734891

2.2 GPIO 输出控制

image-20200726122836363

2.3 GPIO 输入捕获

image-20200726122937031

2.4 GPIO 中断模式

2.4.1 使能中断

image-20200726123057367

2.4.2 中断回调函数

image-20200726123155933

3. 分析GPIO API

3.1 通用gpio.h

3.1.1 gpio_dev_t 结构体

image-20200726123543671

3.1.2 gpio_config_t 枚举

image-20200726123904361

3.1.3 hal_gpio_input_get()

image-20200726124112597

3.1.4 中断相关

使能中断

image-20200726124254392

中断触发模式

image-20200726124403527

中断回调函数

image-20200726124513104

3.2 esp8266 gpio.c

接下来我们来分析esp8266开发板对应的gpio.c,主要是来分析gpio_dev_t .port 参数该怎么赋值,我们打开这个文件:

1
AliOS-Things-SDK/platform/mcu/esp8266/hal/gpio.c

esp8266 port赋值代码如下:

image-20200726124932201 image-20200726125111841 image-20200726125203521

3.3 mk3080 gpio.c

我们再来看一下mk3080的,我们找到这个文件打开:

1
AliOS-Things-SDK/platform/mcu/rtl8710bn/hal/gpio.c
image-20200726125313708 image-20200726125414605

可以看到,mk3080与esp8266不同,这里是一个数组,,数组标号对应GPIO,但是并不是按顺序对应的。