• 正文
  • 相关推荐
申请入驻 产业图谱

Zigbee:增加按键组件

10/27 08:19
96
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、前言

上篇讲解了如何解决工程报错的问题,本篇会讲解如何增加一个按键。

二、阅读说明

1、芯科芯片开发学习者。

2、zigbee爱好者。

3、使用的芯片为EFR32MG21A020F708IM32

三、正文

1、打开Simplicity Studio 6软件,新增按键组件

如上图所示,找到Driver->Button->Simple Button,然后点击Install进行安装,之后出现如下图所示的弹出。

如上图所示,在弹出的界面中,可以输入你想要命名的名字,之后点击Done就可以了。

2、配置按键的引脚2.1、当按键的组件安装好了之后,会出现如下的界面

图中的btn0,是我的按键的名字,对应这第1小节中instance name,大家可以自行进行命名。带年纪btn0之后,会看有右边有要给Configure的按键,这个按钮就是用来配置这个按键的。

2.2、配置按键的引脚

点击了Configure之后,会看到如上的两项可以进行配置,

2.3、配置SL_SIMPLE_BUTTON_BTN0_MODE

该模式有三种:

第一种是Interrupt模式,采用中断的方式来进行;

第二种是Poll and Debounce,不采用中断的方式,需要自己在主函数里面调用按键处理函数,带消抖;

第三种是Poll,不采用中断的方式,需要自己在主函数里面调用按键处理函数,消抖也需要自己写。在里面我们选择Interrupt模式。

2.4、引脚模式

这个引脚需要根据自己的原理图来进行设置,这里我选择的是PC05,然后给这个引脚重新命名了一个名字为KEY1。

3、 编写按键回调函数

3.1、编写按键回调函数的框架

void sl_button_on_change(const sl_button_t *handle){}

如上图所示,在app.c中编写按键回调函数,用来检测button按键的按下和释放。

3.2、编写按键回调函数的逻辑

void sl_button_on_change(const sl_button_t *handle){  if(handle == &sl_button_btn0)  {    if(sl_button_get_state(handle) == SL_SIMPLE_BUTTON_PRESSED)    {      sl_zigbee_app_debug_println("button is pressed");    }    else {      sl_zigbee_app_debug_println("button is released");    }  }}

如上图所示,编写按键的处理逻辑,当按键按下和释放的时候,打印相关的log出来。

4、程序下载和log打印

4.1、在vscode的侧边栏中打开Simplicity Commander软件

4.2、下载程序

按如上图所示的步骤进行下载程序,注意下载选择.s37的文件该文件位于工程目录下的这个目录,大家自行查找:

Zigbee_Switch_ZR/cmake_gcc/build/base/zigbee_minimal.s37

备注:这个只是应用程序,该代码运行需要先下载该芯片的bootloader代码,关于bootloader代码,下篇文章将进行介绍。

4.3、log打印

点击RTT->Connect之后,这时按按键可以看到如下的log

四、结尾

本篇讲解了如何添加按键,下一篇讲解该芯片的bootloader程序。

相关推荐

专注BLE实战开发,也分享物联网、嵌入式等相关技术

微信公众号