zl程序教程

您现在的位置是:首页 >  其他

当前栏目

HaaS100按键及LED使用介绍

2023-02-26 12:28:02 时间

转自HaaS技术社区

1、简介

HaaS100有2个按键及6个LED,如下图所示:

(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>

HaaS100按键及LED使用介绍

2个按键如上图所示,左边一个为复位键,按下后直接重启单板,软件无法控制。右边一个为功能键,可以通过软件代码自定义相关功能。

6个LED灯如上图所示,其中右1为电源灯,上电后自动亮起,软件无法控制。其余LED1到LED5,可以通过软件代码自定义。

2、按键软件控制方法

2.1、按键驱动接口

按键驱动的代码在platform/board/haas100/drivers/key.c中,接口在platform/board/haas100/drivers/key.h中。目前提供的接口如下:

typedef struct {       uint32_t short_press_max_ms;   // default 2000       uint32_t long_press_min_ms;    // default 5000       void (*short_press_handler)(void);       void (*long_press_handler)(void);   } key_cfg_t;       int key_init(key_cfg_t *cfg);

通过key_init接口,可以设置按键短按及长按的触发时间,同时为短按及长按动作挂接自定义回调函数。

注意:短按时间为最长时间,默认2000ms,即按键时间短于2000ms认为是短按,触发短按回调函数 short_press_handler;

长按时间为最短时间,默认5000ms,即按键时间超过5000ms认为是长按,触发长按回调函数long_press_handler。

2.2、按键功能示例

2.2.1、示例代码

以实现1秒短按打印”key short press!!!”,3秒长按打印”key long press!!!”为例,示例代码如下:

void key_short_pressed() {     printf("key short press!!!n"); }   void key_long_pressed() {     printf("key long press!!!n"); }   void key_test_init() {     key_cfg_t cfg;     cfg.short_press_handler = key_short_pressed;     cfg.long_press_handler  = key_long_pressed;     cfg.long_press_min_ms   = 3000;     cfg.short_press_max_ms  = 1000;     key_init(&cfg); }

2.2.2、验证步骤

1)环境搭建

开发环境的搭建请参考《aos-studio使用说明之搭建开发环境》,其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。

helloworld_demo的代码下载请参考《aos-studio使用说明之创建工程》,

> 选择解决方案: “helloworld简单示例”

> 选择开发板: Haas100 board configure

  • 编译固件可参考《aos-studio使用说明之编译固件》。
  • 烧录固件可参考《aos-studio使用说明之烧录固件》。

2) 添加按键应用代码

将示例代码key_short_pressed、key_long_pressed、key_test_init拷贝到solutions/helloworld_demo/helloworld.c中,然后在application_start中调用key_test_init,并包含头文件”key.h”,完整代码如下:

/*  * Copyright (C) 2015-2020 Alibaba Group Holding Limited  */     #include <stdio.h> #include <stdlib.h> #include <aos/errno.h> #include <aos/kernel.h> #include "aos/init.h" #include "board.h" #include <k_api.h> #include "key.h"   void key_short_pressed() {     printf("key short press!!!n"); }     void key_long_pressed() {     printf("key long press!!!n"); }     void key_test_init() {     key_cfg_t cfg;     cfg.short_press_handler = key_short_pressed;     cfg.long_press_handler  = key_long_pressed;     cfg.long_press_min_ms   = 3000;     cfg.short_press_max_ms  = 1000;     key_init(&cfg); }     int application_start(int argc, char *argv[]) {     printf("key test entry here!rn");       key_test_init();       while(1) {         aos_msleep(1000);     };   }

3)验证

按照前述文档编译并烧录固件到HaaS100板子上。

板子启动后,短按功能键(按住按键时间少于1秒就松开),观察串口,应该打印出 key short press!!!

长按功能键(按住功能键超过3秒再松开),观察串口,应该打印出 key long press!!!

3、LED软件控制方法

3.1、LED驱动接口

LED驱动代码在platform/board/haas100/drivers/led.c中,接口在platform/board/haas100/drivers/led.h中。目前提供的接口如下:

typedef enum {     LED_OFF,     LED_ON } led_e;   void led_switch(int id, led_e onoff);

led_switch接口的第一个参数为LED的id号,第二个参数表示开灯还是关灯。

LED的id编号范围为1到5,编号与灯的对应关系见简介中图示。

3.2、LED功能示例

3.2.1、示例代码

实现5个LED灯循环亮灭功能,示例代码如下:

unsigned int led_id = 1; while(1) {          for(int i = 1; i < 6; i++ ) {         if( i == ((led_id % 5) + 1) ) {             led_switch(i, LED_ON);         } else {              led_switch(i, LED_OFF);         }         aos_msleep(50);     }     led_id ++; }

3.3.2、验证过程

1)环境搭建

参见章节2.2.2 第一步。

2) 添加LED应用代码

在solutions/helloworld_demo/helloworld.c中,包含头文件”led.h”,添加LED示例代码,完整代码如下:

/*  * Copyright (C) 2015-2020 Alibaba Group Holding Limited  */     #include <stdio.h> #include <stdlib.h> #include <aos/errno.h> #include <aos/kernel.h> #include "aos/init.h" #include "board.h" #include <k_api.h> #include "led.h"     int application_start(int argc, char *argv[]) {     unsigned int led_id = 1;         printf("led test demo entry here!rn");         while(1) {           for(int i = 1; i < 6; i++ ) {               if( i == ((led_id % 5) + 1) ) {                   led_switch(i, LED_ON);               } else {                   led_switch(i, LED_OFF);               }               aos_msleep(50);           }           led_id ++;       }   }

2)验证

按照前述文档,编译并烧录固件到HaaS100。

板子启动后,可以观察到板子上LED1到LED5循环亮灭。

开发者支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。

HaaS100按键及LED使用介绍

更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com。

HaaS100按键及LED使用介绍


本站部分内容转载自网络,版权属于原作者所有,如有异议请联系QQ153890879修改或删除,谢谢!
转载请注明原文链接:HaaS100按键及LED使用介绍

你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:

1、点击这里立即申请成为腾讯云VIP客户

2、点击这里立即注册成为天翼云VIP客户

3、点击这里立即申请成为华为云VIP客户

4、点击这里立享阿里云产品终身VIP优惠价

喜欢 (0)
[[email protected]]
分享 (0)