女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

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

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


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

上述過程簡單描述過程如下:
  • 按鍵對應的GPIO中斷函數中,開啟定時器
  • 定時器響應函數中,循環判斷此GPIO的狀態。當按鍵仍為按下狀態時,定時計數+1;如果按鍵變為了釋放狀態,則停止定時器,計算按鍵被按下狀態總的持續時間;
  • 根據時間長短進而判斷出此次按鍵為長按還是短按,進而可以實現一個按鍵對應多個不同功能。
這種驅動方式跟下面按鍵驅動方式有明顯的優勢:
基于鴻蒙OS的按鍵驅動
此方法優點:天然去抖動,不用延時等待按鍵狀態改變,程序運行效率大大提高。
鴻蒙系統實現單個按鍵的長按和短按
參考上面原理,我們實現一個鴻蒙系統下的按鍵長按和短按判斷。
初始化GPIO中斷
在入口函數SYS_RUN(KeyExampleEntry);中,將GPIO_5設置為下降沿觸發中斷:
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);
}
初始化定時器
在入口函數SYS_RUN(KeyExampleEntry);中創建定時器:
ret = hi_timer_create(&g_timer_handle);
if (ret != HI_ERR_SUCCESS)
{
printf("timer create failrn");
}

printf("timer create successrn");
在GPIO_5的中斷處理函數中,使用hi_timer_start()函數開啟定時器。
/* gpio callback func */
void gpio5_isr_func(char *arg)
{
(void)arg;
//臨時取消GPIO_5的中斷響應
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");
}
定時器開始函數定義如下:
* timer_handle,定時器句柄。
* type,定時器類型。
* expire,定時器超時時間(單位:ms)。配置為0時,默認為10ms。
* timer_func,定時器回調函數。
* data,回調函數傳參。
*
* 返回值0,代表操作成功,
* 其他代表失敗, 具體定義詳見: hi_errno.h。
*
* 依賴:hi_timer.h:文件用于描述定時器相關接口
* 定時器停止使用 hi_timer_stop() 函數。
*/
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);
定時器回調函數
在定時器回調函數中,循環判斷GPIO_5的狀態,只要按鍵沒有釋放,就講計數器自加,每增加1,代表10ms,當按鍵釋放之后,停止計時,最終根據定時器長度來判斷此次按鍵的長短。
static hi_void app_demo_timer_handle(hi_u32 data)
{
hi_unref_param(data);

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

WifiIotGpioValue wigv;

//獲取GPIO_5的狀態
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);
//根據按鍵持續時間判斷此次按鍵操作為長按還是短按
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");
}
}
//恢復GPIO_5的中斷響應
ret = GpioRegisterIsrFunc(WIFI_IOT_GPIO_IDX_5,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, gpio5_isr_func, NULL);
}
}
結果展示



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

    關注

    14

    文章

    2226

    瀏覽量

    126432
  • HarmonyOS
    +關注

    關注

    79

    文章

    2052

    瀏覽量

    32108
  • HiSpark
    +關注

    關注

    1

    文章

    156

    瀏覽量

    7302
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    基于 Wi-Fi 的定位服務

    以下捕獲使用 location_wifi_get 函數請求 Wi-Fi 定位服務。該事件的總功耗為 125.85mC,日志顯示精確度為 30.0m。 Got location: method
    發表于 04-17 15:16

    nRF Cloud Wi-Fi 定位服務

    實現高性能和超低功耗。對于 Wi-Fi 定位請求,nRF Cloud 可借助 Wi-Fi 數據庫計算設備位置,該數據庫包含不同 Wi-Fi 網絡的坐標。然后,設備位置將從 nRF C
    發表于 04-17 15:07

    Wi-Fi 定位服務

    Wi-Fi 網絡數據庫進行比較。 Wi-Fi 定位系統包含以下關鍵組件: 用戶設備中的 Wi-Fi 無線電設備,用于檢測附近的網絡。 將 MAC 地址等
    發表于 04-17 15:01

    推出了期待已久的 nRF7002 低功耗Wi-Fi 6

    系統級芯片(SoC)以及nRF91?系列蜂窩物聯網系統級封裝(SiP)一起使用。nRF7002 還可以與非Nordic主機設備結合使用。 nRF7002是我們獨特的Wi-Fi產品組合中的第一款設備,它將
    發表于 03-26 11:00

    nRF7002是我們獨特的Wi-Fi產品組合中的第一款設備

    ?和nRF53?系列藍牙系統級芯片(SoC)以及nRF91?系列蜂窩物聯網系統級封裝(SiP)一起使用。nRF7002 還可以與非Nordic主機設備結合使用。 nRF7002是我們獨特的Wi-Fi
    發表于 03-10 15:42

    名單公布!【書籍評測活動NO.53】鴻蒙操作系統設計原理與架構

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

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

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

    摩爾斯微電子發布Wi-Fi HaLow評估套件,加速物聯網開發

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

    Wi-Fi 4到Wi-Fi 7:網速飆升40倍的無線革命

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

    Wi-Fi 7與Wi-Fi 6E有什么區別

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

    華為原生鴻蒙操作系統正式發布

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

    華為鴻蒙操作系統,引領行業新篇章

    在昨日舉辦的華為開發者大會論壇上,華為終端BG軟件部總裁龔體發表了引人注目的演講,向全球開發者及業界同仁詳細解讀了華為自主研發的鴻蒙操作系統HarmonyOS)的最新進展與成就。這場演講不僅是對
    的頭像 發表于 06-22 11:35 ?1150次閱讀

    未來的Wi-Fi路由器

    轉載自——鐘林談芯 沒有創新就沒有未來,Wi-Fi路由器也是如此。 進入2024年以后,Wi-Fi路由器市場變得更加艱難,利潤大幅下滑,BOM成本價高于市場價,接不接訂單,都陷入兩難。 國內主芯片
    的頭像 發表于 06-20 15:32 ?682次閱讀

    2024年及以后的Wi-Fi趨勢

    ,現在是一個前所未有的令人興奮的時代,各行各業的企業正在推動數字化轉型,需要在其數字化流程中實現最新的Wi-Fi技術,實現下一代連接。 ? 在新冠疫情及其引發的社會變革之后,數字化轉型的速度加快了。
    的頭像 發表于 06-07 17:32 ?897次閱讀