成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙Hi3861開發板實現按鍵“按下事件”和“釋放事件”的通用框架

開發
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

[[350165]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

在帖子 《鴻蒙開發板外設控制》直播圖文版(2020.10.28) 中我們提到過:“開發板上的按鍵也可以看作一種 GPIO 外設。” 因此,要捕捉按鍵的狀態(按下或釋放)必須操作對應的 GPIO 端口,具體步驟如下:

  1. 確定目標按鍵對應的 GPIO 引腳(可通過設備文檔找到對應關系)
  2. 重新定義 GPIO 引腳的功能,數據傳輸方向設置為輸入(WIFI_IOT_GPIO_DIR_IN)
  3. 設置按鍵事件觸發方式(電平觸發或邊沿觸發),并注冊回調函數

示例代碼如下:

1t

代碼說明:

  1. WIFI_IOT_IO_NAME_GPIO_8 端口連接了按鍵,若需要捕獲按鍵事件需要調用 IoSetFunc() 函數重定義端口功能
  2. 調用 IoSetPull() 函數將端口初始電平拉高(Pull Up)
  3. 調用 GpioRegisterIsrFunc() 函數設置按鍵事件為邊沿觸發方式,具體為下降沿觸發
  4. 將自定義的 OnButtonPressed() 函數注冊為按鍵回調函數,即:按鍵被按下時調用此函數

2

綜上可知,每個下降沿對應著按鍵按下,那么上升沿顯然對應這按鍵釋放;因此,可設置上升沿觸發按鍵事件,即:按鍵釋放時調用注冊的回調函數。

代碼如下:

GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_8,

                                    WIFI_IOT_INT_TYPE_EDGE, 

                                    WIFI_IOT_GPIO_EDGE_RISE_LEVEL_HIGH,

                                    OnButtonReleased, NULL);

 

0K! 接下來我們思考一個問題:如果同時需要捕獲按鍵按下和釋放兩個事件,如何寫代碼實現?即:按鍵按下時 OnButtonPressed() 被調用,按鍵釋放時 OnButtonReleased() 被調用。

也許有同學的第一想法會是:注冊兩次不就完事了嗎!!!

用代碼描述就是:

3

這看起來似乎合情合理,但,這么做是不行滴!!!因為,就目前來說,每個 GPIO 口只能注冊一個回調函數;所以,第二次注冊的信息將覆蓋第一次的注冊信息;說得更直白些:這么寫,只會在上升沿觸發回調 OnButtonReleased() !

那么是不是就沒法同時捕獲按鍵按下和釋放兩個事件呢?

那到不是,我們可以采用下面的方法實現。

4

對應代碼如下:

 

初始回調注冊:

5

回調函數中切換注冊:

6

看到這里,相信大家已經掌握了同時捕獲按下事件和釋放事件的方法了。然而,即便如此,當程序中需要使用多個按鍵時,我們不得不反復的編寫幾乎一模一樣的代碼。。。這并不是一件有趣的事,我們的時間應該花在更有創造性的工作上!所以,我把上面的方法封裝到兩個獨立的文件(dt_btn_util.hdt_btn_util.c)中,方便大家需要時一鍵調用!

示例代碼如下:

7

是不是很簡單?!一行代碼即可同時捕獲按下事件和釋放事件。

示例代碼和封裝好的文件在附件中開箱即用。

相關代碼附件可以前往原文進行下載:https://harmonyos.51cto.com/posts/1512

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2020-11-09 11:43:51

長按事件

2020-12-08 12:36:41

Hi3861 ADC驅動開發

2020-10-27 10:08:19

Hi3861ADC驅動

2020-11-02 12:07:11

鴻蒙 GPIO

2020-11-18 11:56:06

鴻蒙Hi3861

2020-10-14 09:37:03

HiBurn鴻蒙.bin文件

2020-10-28 10:03:43

Hi3861 GPIO點燈按鍵

2020-10-14 09:41:02

Hi3861GPIO點燈

2020-12-15 11:57:49

Hi3861 HarmonyOS開發板

2021-12-20 21:01:52

鴻蒙HarmonyOS應用

2021-06-25 15:32:13

鴻蒙HarmonyOS應用

2020-11-06 10:15:16

HiBurn

2020-10-30 17:42:36

鴻蒙 OS Hi386

2020-10-29 09:53:06

Hi3861硬件開發板

2022-08-19 10:54:47

操作系統鴻蒙

2020-10-30 09:48:03

Hi3861開發板get請求

2020-12-02 11:55:40

OLED

2021-09-02 15:25:53

鴻蒙HarmonyOS應用

2020-12-09 09:44:29

Hi3861硬件介紹鴻蒙開發板

2022-03-07 15:05:58

HTTPHi3861數據解析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人福利网 | 国产精品我不卡 | 日日夜夜精品视频 | 婷婷激情综合 | 国产精品色| 成人av一区二区三区 | 欧美a在线| 国精品一区二区 | 超碰成人在线观看 | 久久国产一区二区 | 一区二区三区观看视频 | 亚洲a网 | 国产色在线 | 欧美日韩精品一区二区天天拍 | 国产成人一区二区三区精 | 不卡的av电影 | 99国产视频 | 日韩激情视频一区 | 久久在线| 中国大陆高清aⅴ毛片 | 成年男女免费视频网站 | 精品一区二区三 | 日韩av在线中文字幕 | 91精品国产乱码久久久久久久久 | 亚洲精品久久嫩草网站秘色 | 亚洲成人在线免费 | 日韩在线视频一区二区三区 | 亚洲巨乳自拍在线视频 | 青久草视频 | 精品一级 | 国产精品久久免费观看 | 一级a毛片 | 最近中文字幕免费 | 国产精品毛片一区二区在线看 | 国产一区免费视频 | 欧美日韩中文在线观看 | 青青青伊人 | 婷婷二区 | 国产91在线精品 | 日韩一区二区三区四区五区六区 | 黄色一级大片在线免费看产 |