小熊派回顾:学习GPIO,学习ADC
目录
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相关推荐
- 小熊派02—使用GPIO使LED闪烁
创建第一个工程 1.打开STM32CubeMX软件,点击File,然后New Project.或者也可以通过万能新建快捷键Ctrl+N. 2.接着输入自己的芯片型号,小熊派是STM32L431RCT6 ...
- 小熊派鸿蒙2.0设备开发
本文主要围绕小熊派开发板展开对鸿蒙系统开发的学习,具体内容可以到Gitee小熊派开源社区进行学习. 目录 1 编译构建介绍 1.1 Ninja编译工具 1.2 模块gn文件 1.3 业务gn文件 1. ...
- 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 目录 作者介绍 目的 用到的 ...
- 小熊派IoT开发板系列教程正式发布——免费学习
小熊派介绍 小熊派IoT开发板一款由南京厚德物联网有限公司联合华为技术有限公司基于STM32L431RCT6设计的高性能物联网开发板.开发板充分考虑物联网感知层设备的多样性,具有强大的可扩展性,用于提 ...
- 小熊派gd32f303学习之旅(4)—使用DMA实现串口打印
小熊派gd32f303学习之旅(4)-使用DMA实现串口打印 一.前言 在上一篇文章(串口打印第一个Hello world程序)我们使用重定义fputc函数的方式实现了串口打印,但是这种方式本质上是在 ...
- 小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序
小熊派gd32f303学习之旅(3)-串口打印第一个Hello world程序 一.硬件连接 通过查看原理图我们可以看到,当[UART通信选择开关]拨向[AT-MCU]时,USB虚拟串口连接到MCU的 ...
- 小熊派gd32f303学习之旅(7)—使用PWM实现LED呼吸灯
小熊派gd32f303学习之旅(7)-使用PWM实现LED呼吸灯 一.前言 通过查看gd32f30x的参考手册,可以知道gd32f303的通用定时器和高级定时器可以硬件生成PWM波,然后我们查看gd3 ...
- STM32 CubeMX学习:7. ADC模数转化
STM32 CubeMX学习:7. ADC模数转化 系列文章目录 前期的准备 点亮 LED 闪烁 LED 定时器闪烁LED PWM控制LED亮度 常见的PWM设备 按键的外部中断 ADC模数转换 串口 ...
- STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示
STM32F407霸天虎HAL库学习笔记--使用ADC采集MQ135的数据并通过OLED显示 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil MQ135.c MQ135.h main函 ...
最新文章
- python使用imbalanced-learn的OneSidedSelection方法进行下采样处理数据不平衡问题
- 2.session与cookie的区别?
- IOS 粒子发射器,雪花落下、创建火焰、河流、蒸汽的动画效果源代码
- 进度管理计划7个过程及相关重点
- 数据库元数据数据字典查询_7_列出给定表的检查约束
- javase(Properties集合及学生对象信息录入文本中案例)
- P2303 [SDOI2012] Longge 的问题
- 股指期货首次和二次开户条件
- 亲测jupyter打不开浏览器
- h264 i p 帧特点
- 招投标系统源码 java招投标系统 招投标系统简介 招投标系统功能设计
- s8 android z,三星Galaxy S8领衔:2017年十佳Android智能手机
- 【Apache Shiro 身份认证绕过漏洞 (CVE-2022-32532)-漏洞复现实战——关注紫灵小姐姐不踩坑】
- devexpress html编辑器,图解DevExpress RichEditControl富文本的使用,附源码及官方API
- GPU Profiling
- 中华英才网简历筛选标准
- 在线聊天室的消息单聊的实现——springboot整合WebSocket(二)
- 生活品质-装修(01)马桶怎么选?
- 重装windows系统
- 关于计算机游戏的摘要,关于计算机教育专业论文