色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】基于鴻蒙操作系統(tǒng)的單個按鍵長按、短按的實現(xiàn)

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-04 16:33 ? 次閱讀
本文來源電子發(fā)燒友社區(qū),作者:juby, 帖子地址:https://bbs.elecfans.com/jishu_2010914_1_1.html


長按、短按的應(yīng)用
我們之前在下面網(wǎng)文中介紹過了ESP8266模塊的配網(wǎng):
Windows下AliOS Things環(huán)境搭建及ESP8266 固件下載
固件使用AliOS Things固件的ESP8266模塊進行配網(wǎng)的時候,文中是這么操作的:
使用一個跳線,先把D5(GPIO14)接GND,再接3.3V,出現(xiàn)如下Log即進入配網(wǎng)模式:
這個過程其實就是模擬了一個按鍵長按過程。
長按、短按的原理
我們學習嵌入式要學習其原理,原理學會了,其他平臺下相同功能的實現(xiàn)也就會了。
通過閱讀AliOS Things 3.0的源碼,其中按鍵狀態(tài)判斷的過程如下:
源文件: platform/mcu/esp8266/bsp/key.c

上述過程簡單描述過程如下:
  • 按鍵對應(yīng)的GPIO中斷函數(shù)中,開啟定時器
  • 定時器響應(yīng)函數(shù)中,循環(huán)判斷此GPIO的狀態(tài)。當按鍵仍為按下狀態(tài)時,定時計數(shù)+1;如果按鍵變?yōu)榱酸尫艩顟B(tài),則停止定時器,計算按鍵被按下狀態(tài)總的持續(xù)時間;
  • 根據(jù)時間長短進而判斷出此次按鍵為長按還是短按,進而可以實現(xiàn)一個按鍵對應(yīng)多個不同功能。
這種驅(qū)動方式跟下面按鍵驅(qū)動方式有明顯的優(yōu)勢:
基于鴻蒙OS的按鍵驅(qū)動
此方法優(yōu)點:天然去抖動,不用延時等待按鍵狀態(tài)改變,程序運行效率大大提高。
鴻蒙系統(tǒng)實現(xiàn)單個按鍵的長按和短按
參考上面原理,我們實現(xiàn)一個鴻蒙系統(tǒng)下的按鍵長按和短按判斷。
初始化GPIO中斷
在入口函數(shù)SYS_RUN(KeyExampleEntry);中,將GPIO_5設(shè)置為下降沿觸發(fā)中斷:
hi_u32 ret = 0;
GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
GpioSetDir(WIFI_IOT_GPIO_IDX_5, WIFI_IOT_GPIO_DIR_IN);
//IoSetPull(WIFI_IOT_IO_NAME_GPIO_5,WIFI_IOT_IO_PULL_UP);

if (ret != WIFI_IOT_SUCCESS) {
printf("===== ERROR ======gpio -> GpioSetDir ret:%drn", ret);
return;
}

ret = GpioRegisterIsrFunc(WIFI_IOT_GPIO_IDX_5,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, gpio5_isr_func, NULL);

if (ret != WIFI_IOT_SUCCESS) {
printf("===== ERROR ======gpio -> hi_gpio_register_isr_function ret:%drn", ret);
}
初始化定時器
在入口函數(shù)SYS_RUN(KeyExampleEntry);中創(chuàng)建定時器:
ret = hi_timer_create(&g_timer_handle);
if (ret != HI_ERR_SUCCESS)
{
printf("timer create failrn");
}

printf("timer create successrn");
在GPIO_5的中斷處理函數(shù)中,使用hi_timer_start()函數(shù)開啟定時器。
/* gpio callback func */
void gpio5_isr_func(char *arg)
{
(void)arg;
//臨時取消GPIO_5的中斷響應(yīng)
GpioUnregisterIsrFunc(WIFI_IOT_GPIO_IDX_5);

printf("----- gpio05 isr success -----rn");

hi_u32 ret = 0;
//啟動定時器
ret = hi_timer_start(g_timer_handle, HI_TIMER_TYPE_PERIOD, 10, app_demo_timer_handle, 0);

if (ret != HI_ERR_SUCCESS)
{
printf("timer start failrn");
}

printf("timer start successrn");
}
定時器開始函數(shù)定義如下:
* timer_handle,定時器句柄。
* type,定時器類型。
* expire,定時器超時時間(單位:ms)。配置為0時,默認為10ms。
* timer_func,定時器回調(diào)函數(shù)。
* data,回調(diào)函數(shù)傳參。
*
* 返回值0,代表操作成功,
* 其他代表失敗, 具體定義詳見: hi_errno.h。
*
* 依賴:hi_timer.h:文件用于描述定時器相關(guān)接口
* 定時器停止使用 hi_timer_stop() 函數(shù)。
*/
hi_u32 hi_timer_start(hi_u32 timer_handle, hi_timer_type type, hi_u32 expire,
hi_timer_callback_f timer_func, hi_u32 data);
定時器回調(diào)函數(shù)
在定時器回調(diào)函數(shù)中,循環(huán)判斷GPIO_5的狀態(tài),只要按鍵沒有釋放,就講計數(shù)器自加,每增加1,代表10ms,當按鍵釋放之后,停止計時,最終根據(jù)定時器長度來判斷此次按鍵的長短。
static hi_void app_demo_timer_handle(hi_u32 data)
{
hi_unref_param(data);

hi_u32 ret = 0;
//定時器計數(shù)+1
nCurrentTimerCount++;
//每一秒打印一次日志,方便調(diào)試
if((nCurrentTimerCount % 100) == 0)
printf("count = %d rn",nCurrentTimerCount);

WifiIotGpioValue wigv;

//獲取GPIO_5的狀態(tài)
GpioGetInputVal(WIFI_IOT_IO_NAME_GPIO_5,&wigv);

if (wigv == WIFI_IOT_GPIO_VALUE0)
{
//按鍵尚未釋放
}
else
{
//停止定時器
ret = hi_timer_stop(g_timer_handle);

if (ret != HI_ERR_SUCCESS)
{
printf("timer stop failrn");
}
else
{
printf("app demo timer stop , count = %d rn",nCurrentTimerCount);
//根據(jù)按鍵持續(xù)時間判斷此次按鍵操作為長按還是短按
if (nCurrentTimerCount > 600)
{
nCurrentTimerCount = 0;
printf("long long press key rn");
}
else if (nCurrentTimerCount > 200)
{
nCurrentTimerCount = 0;
printf("long press key rn");
}
else if (nCurrentTimerCount > 4)
{
nCurrentTimerCount = 0;
printf("short press key rn");
}
}
//恢復(fù)GPIO_5的中斷響應(yīng)
ret = GpioRegisterIsrFunc(WIFI_IOT_GPIO_IDX_5,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, gpio5_isr_func, NULL);
}
}
結(jié)果展示



資料獲取
公眾號留言區(qū)置頂留言獲取本文對應(yīng)示例源碼。
ps: 文章首發(fā)于電子發(fā)燒友。
歡迎關(guān)注
程序員小哈帶你玩轉(zhuǎn)嵌入式,微信搜索:嵌入式從0到1,更多干貨等著你。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • wi-fi
    +關(guān)注

    關(guān)注

    14

    文章

    2169

    瀏覽量

    124826
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1982

    瀏覽量

    30414
  • HiSpark
    +關(guān)注

    關(guān)注

    1

    文章

    156

    瀏覽量

    6945
收藏 人收藏

    評論

    相關(guān)推薦

    Wi-Fi 8要來了!未來Wi-Fi技術(shù)演進方向揭秘

    產(chǎn)品銷售中,雖然Wi-Fi 7產(chǎn)品的銷量份額快速從年初的個位數(shù)百分比增長至14%,但Wi-Fi 6產(chǎn)品的銷量份額依然穩(wěn)定在60%左右。如果從存量設(shè)備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數(shù)。 ? 智能手機等終端設(shè)備已
    的頭像 發(fā)表于 11-24 03:14 ?1935次閱讀
    <b class='flag-5'>Wi-Fi</b> 8要來了!未來<b class='flag-5'>Wi-Fi</b>技術(shù)演進方向揭秘

    名單公布!【書籍評測活動NO.53】鴻蒙操作系統(tǒng)設(shè)計原理與架構(gòu)

    操作系統(tǒng)從2019年8月9日正式發(fā)布,歷時1778天,歷經(jīng)4代,鴻蒙生態(tài)設(shè)備數(shù)量已超過9億,已有254萬HarmonyOS開發(fā)者投入到鴻蒙世界的開發(fā)中來,
    發(fā)表于 12-16 15:10

    華為海思正式進入Wi-Fi FEM賽道?

    大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創(chuàng)立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
    發(fā)表于 12-11 17:42

    摩爾斯微電子發(fā)布Wi-Fi HaLow評估套件,加速物聯(lián)網(wǎng)開發(fā)

    。 MM6108-EKH05評估套件充分發(fā)揮了Wi-Fi HaLow技術(shù)的強大功能,支持從智能家居到工業(yè)自動化的廣泛應(yīng)用。其數(shù)據(jù)傳輸速率高達32.5 Mbps,并能在1 GHz以下頻率范圍內(nèi)進行可編程操作,是物聯(lián)網(wǎng)
    的頭像 發(fā)表于 12-11 13:40 ?344次閱讀

    Wi-Fi 4到Wi-Fi 7:網(wǎng)速飆升40倍的無線革命

    1 Wi-Fi技術(shù)的快速發(fā)展 每一代新的Wi-Fi協(xié)議發(fā)布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網(wǎng)絡(luò)技術(shù)顯著提升,
    的頭像 發(fā)表于 12-09 10:10 ?375次閱讀
    從<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:網(wǎng)速飆升40倍的無線革命

    Wi-Fi 7與Wi-Fi 6E有什么區(qū)別

    也許很多人還在考慮是否要將使用的Wi-Fi設(shè)備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經(jīng)開始“登堂入室”了。Wi-Fi 7是新一代
    的頭像 發(fā)表于 11-07 11:38 ?1079次閱讀

    華為原生鴻蒙操作系統(tǒng)正式發(fā)布

    10月22日晚,華為舉行了一場盛大的發(fā)布會,正式推出了其原生鴻蒙操作系統(tǒng)HarmonyOS NEXT,也被稱為鴻蒙5.0。這一發(fā)布標志著鴻蒙
    的頭像 發(fā)表于 10-23 16:52 ?638次閱讀

    DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊.rar》資料免費下載
    發(fā)表于 05-30 17:53 ?1次下載
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發(fā)<b class='flag-5'>套件</b> Pro數(shù)據(jù)手冊

    DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件數(shù)據(jù)手冊.rar》資料免費下載
    發(fā)表于 05-30 17:13 ?0次下載
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發(fā)<b class='flag-5'>套件</b>數(shù)據(jù)手冊

    Nvidia Jetson Nano + CYW55573/AWXB327MA-PUR M.2無法使用操作系統(tǒng)內(nèi)置的網(wǎng)絡(luò)管理器管理Wi-Fi如何解決?

    %E2%84%A2%20CYW5557.... 我們可以使用命令行指令成功連接互聯(lián)網(wǎng)。 但是,我們無法使用操作系統(tǒng)內(nèi)置的網(wǎng)絡(luò)管理器管理 Wi-Fi。 網(wǎng)絡(luò)管理器中與 Wi-Fi 相關(guān)的選項都是灰色
    發(fā)表于 05-23 06:47

    華為獲得全球首個國際Wi-Fi聯(lián)盟WFA企業(yè)級Wi-Fi 7認證!

    Wi-Fi聯(lián)盟已發(fā)布Wi-Fi 7認證標準,華為是第一批送測廠商,獲得業(yè)界首個企業(yè)級Wi-Fi 7 的Wi-Fi聯(lián)盟官方認證。
    的頭像 發(fā)表于 04-28 10:17 ?791次閱讀
    華為獲得全球首個國際<b class='flag-5'>Wi-Fi</b>聯(lián)盟WFA企業(yè)級<b class='flag-5'>Wi-Fi</b> 7認證!

    驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦

    驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦 MM6108-EKH08開發(fā)套件專為驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例而設(shè)計。該
    的頭像 發(fā)表于 04-11 12:01 ?1819次閱讀
    驗證物聯(lián)網(wǎng)<b class='flag-5'>Wi-Fi</b> HaLow用例的MM6108-EKH08開發(fā)<b class='flag-5'>套件</b>來啦

    Wi-Fi 7與Wi-Fi 6的相關(guān)知識科普

    科普:Wi-Fi 7 vs. Wi-Fi 6,青出于藍
    的頭像 發(fā)表于 03-12 10:59 ?814次閱讀
    <b class='flag-5'>Wi-Fi</b> 7與<b class='flag-5'>Wi-Fi</b> 6的相關(guān)知識科普

    Wi-Fi的誕生與發(fā)展

    短距離無線通信技術(shù)有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術(shù)——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
    的頭像 發(fā)表于 03-07 08:26 ?1371次閱讀
    <b class='flag-5'>Wi-Fi</b>的誕生與發(fā)展

    Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別

    Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別? Wi-Fi是一種無線網(wǎng)絡(luò)技術(shù),可以連接到互聯(lián)網(wǎng)或局域網(wǎng),為用戶提供無線上網(wǎng)的便利。隨著科技的發(fā)展和互聯(lián)網(wǎng)的普及,Wi-Fi也在不斷演進和
    的頭像 發(fā)表于 02-02 15:28 ?1414次閱讀
    主站蜘蛛池模板: 极品少妇高潮啪啪AV无码| 99久久re6热精品首页| 美女张开腿让男生桶动态图| 国产WW久久久久久久久久| 欲乱艳荡少寡妇全文免费| 爽爽影院免费观看| 蜜芽丅v新网站在线观看| 国产午夜精品一区理论片飘花 | 一边亲着一面膜下奶韩剧免费| 欧美日韩国产高清综合二区| 精品蜜臀AV在线天堂| 国产激情精品久久久久久碰| china男士同性视频tv| 中文国产成人精品久久免费| 亚洲国产AV一区二区三区四区| 色-情-伦-理一区二区三区| 女人18毛片| 老阿姨儿子一二三区| 黄A无码片内射无码视频| 国产精选视频在线观看| 国产69精品久久久久乱码韩国| chinesevideoshd性舞| 2020美女视频黄频大全视频| 伊人久久亚洲综合天堂| 亚洲欧美自拍清纯中文字幕| 午夜免费体验30分| 试看2分钟AA片| 色噜噜视频| 日韩1区1区产品乱码芒果榴莲| 欧美人妖12p| 欧美大片免费| 欧美自拍亚洲综合图区| 棉袜足j吐奶视频| 蜜饯1V1高H-| 明星三级电影| 美女快播第一网| 麻豆婷婷狠狠色18禁久久| 久久久久久久久女黄9999| 久草色香蕉视频在线| 久草在线福利资站免费视频| 交video|