目录

GPIO

GPIO API介绍

wifiiot_gpio.h接口

wifiiot_gpio_ex.h接口

查看LED对应的GPIO引脚

操作GPIO点亮LED

编写业务代码

编译

烧录

读取GPIO引脚方向、输出电平值

编写业务代码

编译

烧录

ADC

ADC API介绍

查看ADC对应的GPIO引脚

ADC读取GPIO的电压值

编写业务代码

编译

烧录


GPIO

GPIO API介绍

wifiiot_gpio.h接口

其作用是用于初始化GPIO。

1.GpioInit 初始化GPIO

2.GpioDeinit 取消初始化GPIO

3.GpioSetDir 设置GPIO引脚方向

4.GpioGetDir 获取GPIO引脚方向

5.GpioSetOutputVal 设置GPIO引脚输出电平值

6.GpioGetOutputVal 获取GPIO引脚输出电平值

wifiiot_gpio_ex.h接口

其作用是用于设置GPIO拉力和驱动器强度。

1.IoSetPull 设置GPIO引脚上拉

2.IoGetPull 获取GPIO引脚上拉

3.IoSetFunc 设置GPIO引脚功能

4.IoGetFunc 获取GPIO引脚功能

5.IOSetDriverStrength 设置GPIO驱动能力

6.IOGetDriverStrength 获取GPIO驱动能力

查看LED对应的GPIO引脚

LED对应的GPIO引脚是GPIO2通过 控制GPIO2输出的的电平信号来实 现LED灯的闪烁。

操作GPIO点亮LED

编写业务代码

led_exmaple.c文件:

#include <stdio.h>
#include <unistd.h>#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"static void LedTask(void)
{//初始化GPIOGpioInit();//设置GPIO_2的复用功能为普通GPIOIoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);//设置GPIO_2为输出模式GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);while (1){//设置GPIO_2输出高电平点亮LED灯GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 1);//延时1susleep(1000000);//设置GPIO_2输出低电平熄灭LED灯GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 0);//延时1susleep(1000000);}
}static void LedExampleEntry(void)
{osThreadAttr_t attr;attr.name = "LedTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 512;attr.priority = 25;if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL){printf("Falied to create LedTask!\n");}
}APP_FEATURE_INIT(LedExampleEntry);

BUILD.gn文件:

static_library("led_example") {sources = ["led_example.c"]include_dirs = ["//utils/native/lite/include","//kernel/liteos_m/components/cmsis/2.0","//base/iot_hardware/interfaces/kits/wifiiot_lite",]
}

编译

烧录

读取GPIO引脚方向、输出电平值

编写业务代码

led_exmaple.c文件:

#include <stdio.h>
#include <unistd.h>#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"static void LedTask(void)
{//初始化GPIOGpioInit();//设置GPIO_2的复用功能为普通GPIOIoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);//设置GPIO_2为输出模式GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);WifiIotGpioDir val = {0};GpioGetDir(WIFI_IOT_GPIO_IDX_2,&val);printf("GPIO_2 Dir is %d\r\n",val);WifiIotGpioValue OutputVal = {0};while (1){//设置GPIO_2输出高电平点亮LED灯GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 1);GpioGetOutputVal(WIFI_IOT_GPIO_IDX_2,&OutputVal);printf("GPIO_2 OutputVal is %d\r\n",OutputVal);//延时1susleep(1000000);//设置GPIO_2输出低电平熄灭LED灯GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 0);GpioGetOutputVal(WIFI_IOT_GPIO_IDX_2,&OutputVal);printf("GPIO_2 OutputVal is %d\r\n",OutputVal);//延时1susleep(1000000);}
}static void LedExampleEntry(void)
{osThreadAttr_t attr;attr.name = "LedTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 512;attr.priority = 25;if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL){printf("Falied to create LedTask!\n");}
}APP_FEATURE_INIT(LedExampleEntry);

BUILD.gn文件:

static_library("led_example") {sources = ["led_example.c"]include_dirs = ["//utils/native/lite/include","//kernel/liteos_m/components/cmsis/2.0","//base/iot_hardware/interfaces/kits/wifiiot_lite",]
}

编译

烧录

ADC

ADC API介绍

wifiiot_adc.h接口

1.AdcRead 根据输入参数从指定的ADC通道读取一段采样数据

参数说明

1.channel ADC通道

2.data 指示用于存放读取数据的地址的指针

3.equModel 表示平均算法的次数

4.curBais 表示模拟功率控制模式

5.rstCnt 指示从重置到转换开始的时间计数

查看ADC对应的GPIO引脚

将使用板载用户按键F1来模拟GPIO口电压的变化。GPIO_11对应的是ADC Channel 5,所以需要 编写软件去读取ADC Channel 5的电压。

ADC读取GPIO的电压值

编写业务代码

adc.exmaple文件:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <math.h>#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio_ex.h"
#include "wifiiot_errno.h"
#include "wifiiot_adc.h"#define ADC_TASK_STACK_SIZE 1024 * 8
#define ADC_TASK_PRIO 24/***** 获取电压值函数 *****/
static float GetVoltage(void)
{unsigned int ret;unsigned short data;ret = AdcRead(WIFI_IOT_ADC_CHANNEL_5, &data, WIFI_IOT_ADC_EQU_MODEL_8, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0xff);if (ret != WIFI_IOT_SUCCESS){printf("ADC Read Fail\n");}return (float)data * 1.8 * 4 / 4096.0;
}static void ADCTask(void)
{float voltage;//上拉,让按键未按下时GPIO_11保持高电平状态IoSetPull(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_PULL_UP);while (1){printf("=======================================\r\n");printf("***************ADC_example*************\r\n");printf("=======================================\r\n");//获取电压值voltage = GetVoltage();printf("vlt:%.3fV\n", voltage);//延时1susleep(1000000);}
}static void ADCExampleEntry(void)
{osThreadAttr_t attr;attr.name = "ADCTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = ADC_TASK_STACK_SIZE;attr.priority = ADC_TASK_PRIO;if (osThreadNew((osThreadFunc_t)ADCTask, NULL, &attr) == NULL){printf("[ADCExample] Falied to create ADCTask!\n");}
}APP_FEATURE_INIT(ADCExampleEntry);

BUILD.gn文件:

static_library("adc_example") {sources = ["adc_example.c"]include_dirs = ["//utils/native/lite/include","//kernel/liteos_m/components/cmsis/2.0","//base/iot_hardware/interfaces/kits/wifiiot_lite",]
}

编译

烧录

仅为学习笔记,原文请看:

【鸿蒙2.0设备开发教程】小熊派HarmonyOS 鸿蒙·季 开发教程_哔哩哔哩_bilibili

小熊派回顾:学习GPIO,学习ADC相关推荐

  1. 小熊派02—使用GPIO使LED闪烁

    创建第一个工程 1.打开STM32CubeMX软件,点击File,然后New Project.或者也可以通过万能新建快捷键Ctrl+N. 2.接着输入自己的芯片型号,小熊派是STM32L431RCT6 ...

  2. 小熊派鸿蒙2.0设备开发

    本文主要围绕小熊派开发板展开对鸿蒙系统开发的学习,具体内容可以到Gitee小熊派开源社区进行学习. 目录 1 编译构建介绍 1.1 Ninja编译工具 1.2 模块gn文件 1.3 业务gn文件 1. ...

  3. 2021物联网开发学习——基于小熊派IoT开发板Bear-Pi-IOT、E53_IA1_智慧农业拓展板与小熊派-鸿蒙·季Bear-Pi-HM Nano并接入Hi-Link

    2021物联网开发学习--基于小熊派IoT开发板Bear-Pi-IOT.E53_IA1_智慧农业拓展板与小熊派-鸿蒙·季Bear-Pi-HM Nano并接入Hi-Link 目录 作者介绍 目的 用到的 ...

  4. 小熊派IoT开发板系列教程正式发布——免费学习

    小熊派介绍 小熊派IoT开发板一款由南京厚德物联网有限公司联合华为技术有限公司基于STM32L431RCT6设计的高性能物联网开发板.开发板充分考虑物联网感知层设备的多样性,具有强大的可扩展性,用于提 ...

  5. 小熊派gd32f303学习之旅(4)—使用DMA实现串口打印

    小熊派gd32f303学习之旅(4)-使用DMA实现串口打印 一.前言 在上一篇文章(串口打印第一个Hello world程序)我们使用重定义fputc函数的方式实现了串口打印,但是这种方式本质上是在 ...

  6. 小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序

    小熊派gd32f303学习之旅(3)-串口打印第一个Hello world程序 一.硬件连接 通过查看原理图我们可以看到,当[UART通信选择开关]拨向[AT-MCU]时,USB虚拟串口连接到MCU的 ...

  7. 小熊派gd32f303学习之旅(7)—使用PWM实现LED呼吸灯

    小熊派gd32f303学习之旅(7)-使用PWM实现LED呼吸灯 一.前言 通过查看gd32f30x的参考手册,可以知道gd32f303的通用定时器和高级定时器可以硬件生成PWM波,然后我们查看gd3 ...

  8. STM32 CubeMX学习:7. ADC模数转化

    STM32 CubeMX学习:7. ADC模数转化 系列文章目录 前期的准备 点亮 LED 闪烁 LED 定时器闪烁LED PWM控制LED亮度 常见的PWM设备 按键的外部中断 ADC模数转换 串口 ...

  9. STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示

    STM32F407霸天虎HAL库学习笔记--使用ADC采集MQ135的数据并通过OLED显示 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil MQ135.c MQ135.h main函 ...

最新文章

  1. python使用imbalanced-learn的OneSidedSelection方法进行下采样处理数据不平衡问题
  2. 2.session与cookie的区别?
  3. IOS 粒子发射器,雪花落下、创建火焰、河流、蒸汽的动画效果源代码
  4. 进度管理计划7个过程及相关重点
  5. 数据库元数据数据字典查询_7_列出给定表的检查约束
  6. javase(Properties集合及学生对象信息录入文本中案例)
  7. P2303 [SDOI2012] Longge 的问题
  8. 股指期货首次和二次开户条件
  9. 亲测jupyter打不开浏览器
  10. h264 i p 帧特点
  11. 招投标系统源码 java招投标系统 招投标系统简介 招投标系统功能设计
  12. s8 android z,三星Galaxy S8领衔:2017年十佳Android智能手机
  13. 【Apache Shiro 身份认证绕过漏洞 (CVE-2022-32532)-漏洞复现实战——关注紫灵小姐姐不踩坑】
  14. devexpress html编辑器,图解DevExpress RichEditControl富文本的使用,附源码及官方API
  15. GPU Profiling
  16. 中华英才网简历筛选标准
  17. 在线聊天室的消息单聊的实现——springboot整合WebSocket(二)
  18. 生活品质-装修(01)马桶怎么选?
  19. 重装windows系统
  20. 关于计算机游戏的摘要,关于计算机教育专业论文

热门文章

  1. html如何设置图片自动居中,css如何使图片居中?
  2. 【MFC】PeekMessage() 与GetMessage() 消息函数
  3. telegrom bot 发送消息
  4. layout inspector 的使用
  5. 通道扣头发丝等复杂图片五步搞定
  6. 利用PyQt打造一款适合自己的图片浏览器
  7. 关于 Amazon Polly 语音合成
  8. crontab的使用方法介绍
  9. HANA_SQL常见错误代码
  10. 来自11区的始祖级手机游戏,《勇者前线》深度评测