• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
大家还在搜
  • 实现按键“按下事件”和“释放事件”的通用框架 (作者:唐林)

    在帖子 《鸿蒙开发板外设控制》直播图文版(2020.10.28) 中我们提到过:“开发板上的按键也可以看作一种 GPIO 外设。” 因此,要捕捉按键的状态(按下或释放)必须操作对应的 GPIO 端口,具体步骤如下:确定目标按键对应的 GPIO 引脚(可通过设备文档找到对应关系)重新定义 GPIO 引脚的功能,数据传输方向设置为输入(WIFI_IOT_GPIO_DIR_IN)设置按键事件触发方式(电平触发或边沿触发),并注册回调函数示例代码如下:代码说明:WIFI_IOT_IO_NAME_GPIO_8 端口连接了按键,若需要捕获按键事件需要调用 IoSetFunc() 函数重定义端口功能调用 IoSetPull() 函数将端口初始电平拉高(Pull Up)调用 GpioRegisterIsrFunc() 函数设置按键事件为边沿触发方式,具体为下降沿触发将自定义的 OnButtonPressed() 函数注册为按键回调函数,即:按键被按下时调用此函数综上可知,每个下降沿对应着按键按下,那么上升沿显然对应这按键释放;因此,可设置上升沿触发按键事件,即:按键释放时调用注册的回调函数。代码如下:GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_8,WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_RISE_LEVEL_HIGH,OnButtonReleased, NULL);0K! 接下来我们思考一个问题:如果同时需要捕获按键按下和释放两个事件,如何写代码实现?即:按键按下时 OnButtonPressed() 被调用,按键释放时 OnButtonReleased() 被调用。也许有同学的第一想法会是:注册两次不就完事了吗!!!用代码描述就是:这看起来似乎合情合理,但,这么做是不行滴!!!因为,就目前来说,每个 GPIO 口只能注册一个回调函数;所以,第二次注册的信息将覆盖第一次的注册信息;说得更直白些:这么写,只会在上升沿触发回调 OnButtonReleased() !那么是不是就没法同时捕获按键按下和释放两个事件呢?那到不是,我们可以采用下面的方法实现。对应代码如下:初始回调注册:回调函数中切换注册:看到这里,相信大家已经掌握了同时捕获按下事件和释放事件的方法了。然而,即便如此,当程序中需要使用多个按键时,我们不得不反复的编写几乎一模一样的代码。。。这并不是一件有趣的事,我们的时间应该花在更有创造性的工作上!所以,我把上面的方法封装到两个独立的文件(dt_btn_util.h和dt_btn_util.c)中,方便大家需要时一键调用!示例代码如下:是不是很简单?!一行代码即可同时捕获按下事件和释放事件。示例代码和封装好的文件在附件中开箱即用。PS:dt_btn_util.c 的代码实现中加入了一个小技巧,你能看明白吗?可以评论区回复哦!Enjoy it!

    2020-11-06 11:59

  • 学好EMI的方法分享

    广大工程师们诚邀到资深EMC高级讲师杜兵,希望广大工程师借此契机学习下如何正确打开EMI的设计思路。小编给大家提个醒,此次直播时间为2020年7月29日晚上20:00,直播主题为“开关电源系统EMC

    2020-10-22 10:51

  • 开关电源磁元件的EMI分析与设计

    问题。我们有幸邀请到EMC高级讲师杜兵,给广大工程师解开这个的谜团,并定于2020年8月26日晚20:00进行一场“开关电源磁元件的EMI分析与设计”的直播课。广大工程师把握机遇,这样能与大咖近距离赐教

    2020-11-02 07:12

  • 利用摄像头读取条形码(已测)

    ` 本帖最后由 ★遥★★ 于 2013-7-13 13:31 编辑 利用电脑自带的摄像头读取条形码`

    2013-07-13 13:28

  • N76E003AT20与STM8S003的对比

    深圳市动能世纪科技有限公司http://www.dnsj88.com/王峰QQ号:2355239043手机:***

    2018-05-02 17:41

  • Labview天下会作品评奖名单!!!

    ),便于我们通知NI公司邮寄奖品,现公布名单:一等奖:小鹰fighting@小鹰fighting sushu @sushu ★遥★★@★遥★★二等奖:yuanchgen @yuanchgen古荖ㄖㄅ誓

    2013-08-22 15:31

  • 嵌入式C语言编译器的相关资料下载

    GCC与gcc:初识编译器:扩展问题:如何理解“多语言混合开发”?参考:  狄泰软件学院唐林视频教程转载于:https://www.cnblogs....

    2021-12-15 06:32

  • LabVIEW模拟电梯控制

    ` 本帖最后由 ★遥★★ 于 2013-4-18 23:05 编辑 原来有人发帖的其中一个题目,觉得还是比较有意思的。就按照那要求山寨了一个。觉得还是比较有意思的。`

    2013-04-18 22:49

  • 波形图表中横轴设为绝对时间与系统时间同步

    本帖最后由 ★遥★★ 于 2013-4-9 19:37 编辑 这就是简单的属性节点的使用,当时刚接触LabVIEW,也是自己查的。后来觉得不好意思就删了。偶然看到有人问所以就重新发上来了。老手就不用看了,新手可以练练吧

    2012-10-12 09:48

  • 完整 Python 鸿蒙设备开发课件

    林直播资料,需要的小伙伴自行下载哦,内容包括:完 整P y t h o n 框架简介、P Y 4 O H -、R E P L 用法简介、定制库开发示例、L E D 灯控制 示 例、按键编程示例、Q / A

    2021-11-26 18:58